expression: improve expression to make test faster (#41426)
ref pingcap/tidb#41377
This commit is contained in:
@ -165,13 +165,11 @@ go_test(
|
||||
"collation_test.go",
|
||||
"column_test.go",
|
||||
"constant_fold_test.go",
|
||||
"constant_propagation_test.go",
|
||||
"constant_test.go",
|
||||
"distsql_builtin_test.go",
|
||||
"evaluator_test.go",
|
||||
"expr_to_pb_test.go",
|
||||
"expression_test.go",
|
||||
"flag_simplify_test.go",
|
||||
"function_traits_test.go",
|
||||
"helper_test.go",
|
||||
"integration_serial_test.go",
|
||||
@ -207,7 +205,6 @@ go_test(
|
||||
"//table",
|
||||
"//tablecodec",
|
||||
"//testkit",
|
||||
"//testkit/testdata",
|
||||
"//testkit/testmain",
|
||||
"//testkit/testsetup",
|
||||
"//testkit/testutil",
|
||||
|
||||
24
expression/casetest/BUILD.bazel
Normal file
24
expression/casetest/BUILD.bazel
Normal file
@ -0,0 +1,24 @@
|
||||
load("@io_bazel_rules_go//go:def.bzl", "go_test")
|
||||
|
||||
go_test(
|
||||
name = "casetest_test",
|
||||
timeout = "short",
|
||||
srcs = [
|
||||
"constant_propagation_test.go",
|
||||
"flag_simplify_test.go",
|
||||
"main_test.go",
|
||||
],
|
||||
data = glob(["testdata/**"]),
|
||||
flaky = True,
|
||||
shard_count = 2,
|
||||
deps = [
|
||||
"//config",
|
||||
"//testkit",
|
||||
"//testkit/testdata",
|
||||
"//testkit/testmain",
|
||||
"//testkit/testsetup",
|
||||
"//util/timeutil",
|
||||
"@com_github_tikv_client_go_v2//tikv",
|
||||
"@org_uber_go_goleak//:goleak",
|
||||
],
|
||||
)
|
||||
@ -12,12 +12,11 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package expression_test
|
||||
package casetest
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/pingcap/tidb/expression"
|
||||
"github.com/pingcap/tidb/testkit"
|
||||
"github.com/pingcap/tidb/testkit/testdata"
|
||||
)
|
||||
@ -38,7 +37,7 @@ func TestOuterJoinPropConst(t *testing.T) {
|
||||
Result []string
|
||||
}
|
||||
|
||||
expressionSuiteData := expression.GetExpressionSuiteData()
|
||||
expressionSuiteData := GetExpressionSuiteData()
|
||||
expressionSuiteData.LoadTestCases(t, &input, &output)
|
||||
for i, tt := range input {
|
||||
testdata.OnRecord(func() {
|
||||
@ -12,12 +12,11 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package expression_test
|
||||
package casetest
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/pingcap/tidb/expression"
|
||||
"github.com/pingcap/tidb/testkit"
|
||||
"github.com/pingcap/tidb/testkit/testdata"
|
||||
)
|
||||
@ -35,7 +34,7 @@ func TestSimplifyExpressionByFlag(t *testing.T) {
|
||||
SQL string
|
||||
Plan []string
|
||||
}
|
||||
flagSimplifyData := expression.GetFlagSimplifyData()
|
||||
flagSimplifyData := GetFlagSimplifyData()
|
||||
flagSimplifyData.LoadTestCases(t, &input, &output)
|
||||
for i, tt := range input {
|
||||
testdata.OnRecord(func() {
|
||||
71
expression/casetest/main_test.go
Normal file
71
expression/casetest/main_test.go
Normal file
@ -0,0 +1,71 @@
|
||||
// Copyright 2023 PingCAP, Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package casetest
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/pingcap/tidb/config"
|
||||
"github.com/pingcap/tidb/testkit/testdata"
|
||||
"github.com/pingcap/tidb/testkit/testmain"
|
||||
"github.com/pingcap/tidb/testkit/testsetup"
|
||||
"github.com/pingcap/tidb/util/timeutil"
|
||||
"github.com/tikv/client-go/v2/tikv"
|
||||
"go.uber.org/goleak"
|
||||
)
|
||||
|
||||
var testDataMap = make(testdata.BookKeeper)
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
testsetup.SetupForCommonTest()
|
||||
testmain.ShortCircuitForBench(m)
|
||||
|
||||
config.UpdateGlobal(func(conf *config.Config) {
|
||||
conf.TiKVClient.AsyncCommit.SafeWindow = 0
|
||||
conf.TiKVClient.AsyncCommit.AllowedClockDrift = 0
|
||||
conf.Experimental.AllowsExpressionIndex = true
|
||||
})
|
||||
tikv.EnableFailpoints()
|
||||
|
||||
// Some test depends on the values of timeutil.SystemLocation()
|
||||
// If we don't SetSystemTZ() here, the value would change unpredictable.
|
||||
// Affected by the order whether a testsuite runs before or after integration test.
|
||||
// Note, SetSystemTZ() is a sync.Once operation.
|
||||
timeutil.SetSystemTZ("system")
|
||||
|
||||
testDataMap.LoadTestSuiteData("testdata", "flag_simplify")
|
||||
testDataMap.LoadTestSuiteData("testdata", "expression_suite")
|
||||
|
||||
opts := []goleak.Option{
|
||||
goleak.IgnoreTopFunction("github.com/golang/glog.(*loggingT).flushDaemon"),
|
||||
goleak.IgnoreTopFunction("github.com/lestrrat-go/httprc.runFetchWorker"),
|
||||
goleak.IgnoreTopFunction("go.etcd.io/etcd/client/pkg/v3/logutil.(*MergeLogger).outputLoop"),
|
||||
goleak.IgnoreTopFunction("go.opencensus.io/stats/view.(*worker).start"),
|
||||
}
|
||||
|
||||
callback := func(i int) int {
|
||||
testDataMap.GenerateOutputIfNeeded()
|
||||
return i
|
||||
}
|
||||
goleak.VerifyTestMain(testmain.WrapTestingM(m, callback), opts...)
|
||||
}
|
||||
|
||||
func GetFlagSimplifyData() testdata.TestData {
|
||||
return testDataMap["flag_simplify"]
|
||||
}
|
||||
|
||||
func GetExpressionSuiteData() testdata.TestData {
|
||||
return testDataMap["expression_suite"]
|
||||
}
|
||||
@ -19,7 +19,6 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/pingcap/tidb/config"
|
||||
"github.com/pingcap/tidb/testkit/testdata"
|
||||
"github.com/pingcap/tidb/testkit/testmain"
|
||||
"github.com/pingcap/tidb/testkit/testsetup"
|
||||
"github.com/pingcap/tidb/util/mock"
|
||||
@ -29,8 +28,6 @@ import (
|
||||
"go.uber.org/goleak"
|
||||
)
|
||||
|
||||
var testDataMap = make(testdata.BookKeeper)
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
testsetup.SetupForCommonTest()
|
||||
testmain.ShortCircuitForBench(m)
|
||||
@ -48,9 +45,6 @@ func TestMain(m *testing.M) {
|
||||
// Note, SetSystemTZ() is a sync.Once operation.
|
||||
timeutil.SetSystemTZ("system")
|
||||
|
||||
testDataMap.LoadTestSuiteData("testdata", "flag_simplify")
|
||||
testDataMap.LoadTestSuiteData("testdata", "expression_suite")
|
||||
|
||||
opts := []goleak.Option{
|
||||
goleak.IgnoreTopFunction("github.com/golang/glog.(*loggingT).flushDaemon"),
|
||||
goleak.IgnoreTopFunction("github.com/lestrrat-go/httprc.runFetchWorker"),
|
||||
@ -58,11 +52,7 @@ func TestMain(m *testing.M) {
|
||||
goleak.IgnoreTopFunction("go.opencensus.io/stats/view.(*worker).start"),
|
||||
}
|
||||
|
||||
callback := func(i int) int {
|
||||
testDataMap.GenerateOutputIfNeeded()
|
||||
return i
|
||||
}
|
||||
goleak.VerifyTestMain(testmain.WrapTestingM(m, callback), opts...)
|
||||
goleak.VerifyTestMain(m, opts...)
|
||||
}
|
||||
|
||||
func createContext(t *testing.T) *mock.Context {
|
||||
@ -74,11 +64,3 @@ func createContext(t *testing.T) *mock.Context {
|
||||
ctx.GetSessionVars().PlanColumnID = 0
|
||||
return ctx
|
||||
}
|
||||
|
||||
func GetFlagSimplifyData() testdata.TestData {
|
||||
return testDataMap["flag_simplify"]
|
||||
}
|
||||
|
||||
func GetExpressionSuiteData() testdata.TestData {
|
||||
return testDataMap["expression_suite"]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user