From cd87631231d95562809622718138a9b2329bf3e0 Mon Sep 17 00:00:00 2001 From: Weizhen Wang Date: Wed, 15 Feb 2023 13:44:03 +0800 Subject: [PATCH 1/3] expression: improve expression to make test faster Signed-off-by: Weizhen Wang --- expression/{ => casetest}/constant_propagation_test.go | 0 expression/{ => casetest}/flag_simplify_test.go | 0 expression/{ => casetest}/testdata/expression_suite_in.json | 0 expression/{ => casetest}/testdata/expression_suite_out.json | 0 expression/{ => casetest}/testdata/flag_simplify_in.json | 0 expression/{ => casetest}/testdata/flag_simplify_out.json | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename expression/{ => casetest}/constant_propagation_test.go (100%) rename expression/{ => casetest}/flag_simplify_test.go (100%) rename expression/{ => casetest}/testdata/expression_suite_in.json (100%) rename expression/{ => casetest}/testdata/expression_suite_out.json (100%) rename expression/{ => casetest}/testdata/flag_simplify_in.json (100%) rename expression/{ => casetest}/testdata/flag_simplify_out.json (100%) diff --git a/expression/constant_propagation_test.go b/expression/casetest/constant_propagation_test.go similarity index 100% rename from expression/constant_propagation_test.go rename to expression/casetest/constant_propagation_test.go diff --git a/expression/flag_simplify_test.go b/expression/casetest/flag_simplify_test.go similarity index 100% rename from expression/flag_simplify_test.go rename to expression/casetest/flag_simplify_test.go diff --git a/expression/testdata/expression_suite_in.json b/expression/casetest/testdata/expression_suite_in.json similarity index 100% rename from expression/testdata/expression_suite_in.json rename to expression/casetest/testdata/expression_suite_in.json diff --git a/expression/testdata/expression_suite_out.json b/expression/casetest/testdata/expression_suite_out.json similarity index 100% rename from expression/testdata/expression_suite_out.json rename to expression/casetest/testdata/expression_suite_out.json diff --git a/expression/testdata/flag_simplify_in.json b/expression/casetest/testdata/flag_simplify_in.json similarity index 100% rename from expression/testdata/flag_simplify_in.json rename to expression/casetest/testdata/flag_simplify_in.json diff --git a/expression/testdata/flag_simplify_out.json b/expression/casetest/testdata/flag_simplify_out.json similarity index 100% rename from expression/testdata/flag_simplify_out.json rename to expression/casetest/testdata/flag_simplify_out.json From cfebd74983eb2ac559d79a4f579d53b8078b70a0 Mon Sep 17 00:00:00 2001 From: Weizhen Wang Date: Wed, 15 Feb 2023 13:44:12 +0800 Subject: [PATCH 2/3] expression: improve expression to make test faster Signed-off-by: Weizhen Wang --- expression/BUILD.bazel | 3 - expression/casetest/BUILD.bazel | 24 +++++++ .../casetest/constant_propagation_test.go | 5 +- expression/casetest/flag_simplify_test.go | 5 +- expression/casetest/main_test.go | 71 +++++++++++++++++++ expression/main_test.go | 20 +----- 6 files changed, 100 insertions(+), 28 deletions(-) create mode 100644 expression/casetest/BUILD.bazel create mode 100644 expression/casetest/main_test.go diff --git a/expression/BUILD.bazel b/expression/BUILD.bazel index 4f9b7c38fb70e..99a978820e9f4 100644 --- a/expression/BUILD.bazel +++ b/expression/BUILD.bazel @@ -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", diff --git a/expression/casetest/BUILD.bazel b/expression/casetest/BUILD.bazel new file mode 100644 index 0000000000000..3e6a0098d7d6d --- /dev/null +++ b/expression/casetest/BUILD.bazel @@ -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", + ], +) diff --git a/expression/casetest/constant_propagation_test.go b/expression/casetest/constant_propagation_test.go index d2ebfdef4080d..41b584cd2c3c5 100644 --- a/expression/casetest/constant_propagation_test.go +++ b/expression/casetest/constant_propagation_test.go @@ -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() { diff --git a/expression/casetest/flag_simplify_test.go b/expression/casetest/flag_simplify_test.go index 2de5654585093..13f9048bc4f88 100644 --- a/expression/casetest/flag_simplify_test.go +++ b/expression/casetest/flag_simplify_test.go @@ -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() { diff --git a/expression/casetest/main_test.go b/expression/casetest/main_test.go new file mode 100644 index 0000000000000..7f8eb7344c33b --- /dev/null +++ b/expression/casetest/main_test.go @@ -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"] +} diff --git a/expression/main_test.go b/expression/main_test.go index 1875fcaf9869d..8edbfa924ac6f 100644 --- a/expression/main_test.go +++ b/expression/main_test.go @@ -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"] -} From 0556aba7bc996ee188bd22b06e8dde3c4c4c26cc Mon Sep 17 00:00:00 2001 From: Weizhen Wang Date: Wed, 15 Feb 2023 13:49:41 +0800 Subject: [PATCH 3/3] expression: improve expression to make test faster Signed-off-by: Weizhen Wang --- expression/casetest/BUILD.bazel | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/expression/casetest/BUILD.bazel b/expression/casetest/BUILD.bazel index 3e6a0098d7d6d..e52b9489d1fae 100644 --- a/expression/casetest/BUILD.bazel +++ b/expression/casetest/BUILD.bazel @@ -9,7 +9,7 @@ go_test( "main_test.go", ], data = glob(["testdata/**"]), - flaky = "true", + flaky = True, shard_count = 2, deps = [ "//config",