From 1f9f8c021f0bded10c6b8ce3e6f2cbc229f7cff5 Mon Sep 17 00:00:00 2001 From: Weizhen Wang Date: Wed, 15 Feb 2023 20:44:02 +0800 Subject: [PATCH] *: improve executor to make test faster (#41442) close pingcap/tidb#41377 --- expression/BUILD.bazel | 1 - .../integration_serial_test/BUILD.bazel | 31 +++++++++++ expression/integration_serial_test/README.md | 3 ++ .../integration_serial_test.go | 2 +- .../integration_serial_test/main_test.go | 53 +++++++++++++++++++ expression/integration_test/README.md | 3 ++ 6 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 expression/integration_serial_test/BUILD.bazel create mode 100644 expression/integration_serial_test/README.md rename expression/{ => integration_serial_test}/integration_serial_test.go (99%) create mode 100644 expression/integration_serial_test/main_test.go create mode 100644 expression/integration_test/README.md diff --git a/expression/BUILD.bazel b/expression/BUILD.bazel index 99a978820e9f4..fcaa063a23c9c 100644 --- a/expression/BUILD.bazel +++ b/expression/BUILD.bazel @@ -172,7 +172,6 @@ go_test( "expression_test.go", "function_traits_test.go", "helper_test.go", - "integration_serial_test.go", "main_test.go", "multi_valued_index_test.go", "scalar_function_test.go", diff --git a/expression/integration_serial_test/BUILD.bazel b/expression/integration_serial_test/BUILD.bazel new file mode 100644 index 0000000000000..7e97813242f9e --- /dev/null +++ b/expression/integration_serial_test/BUILD.bazel @@ -0,0 +1,31 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "integration_serial_test_test", + timeout = "short", + srcs = [ + "integration_serial_test.go", + "main_test.go", + ], + flaky = True, + shard_count = 50, + deps = [ + "//config", + "//parser/mysql", + "//parser/terror", + "//planner/core", + "//session", + "//sessionctx/variable", + "//testkit", + "//testkit/testmain", + "//testkit/testsetup", + "//types", + "//util/timeutil", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//tikv", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/expression/integration_serial_test/README.md b/expression/integration_serial_test/README.md new file mode 100644 index 0000000000000..78311d5ff7292 --- /dev/null +++ b/expression/integration_serial_test/README.md @@ -0,0 +1,3 @@ +Too many test case in this package. + +Please not add new test cases in this package. diff --git a/expression/integration_serial_test.go b/expression/integration_serial_test/integration_serial_test.go similarity index 99% rename from expression/integration_serial_test.go rename to expression/integration_serial_test/integration_serial_test.go index c50aa687659a9..213d4b466001d 100644 --- a/expression/integration_serial_test.go +++ b/expression/integration_serial_test/integration_serial_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package expression_test +package integration_serial_test import ( "context" diff --git a/expression/integration_serial_test/main_test.go b/expression/integration_serial_test/main_test.go new file mode 100644 index 0000000000000..113869c949c64 --- /dev/null +++ b/expression/integration_serial_test/main_test.go @@ -0,0 +1,53 @@ +// 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 integration_serial_test + +import ( + "testing" + + "github.com/pingcap/tidb/config" + "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" +) + +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") + + 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"), + } + + goleak.VerifyTestMain(m, opts...) +} diff --git a/expression/integration_test/README.md b/expression/integration_test/README.md new file mode 100644 index 0000000000000..78311d5ff7292 --- /dev/null +++ b/expression/integration_test/README.md @@ -0,0 +1,3 @@ +Too many test case in this package. + +Please not add new test cases in this package.