diff --git a/store/gcworker/gc_worker_test.go b/store/gcworker/gc_worker_test.go index 71c1f0ffea3e0..049406363facd 100644 --- a/store/gcworker/gc_worker_test.go +++ b/store/gcworker/gc_worker_test.go @@ -37,8 +37,8 @@ import ( "github.com/pingcap/tidb/domain/infosync" "github.com/pingcap/tidb/kv" "github.com/pingcap/tidb/parser/model" + "github.com/pingcap/tidb/session" "github.com/pingcap/tidb/store/mockstore" - "github.com/pingcap/tidb/testkit" "github.com/stretchr/testify/require" "github.com/tikv/client-go/v2/oracle" "github.com/tikv/client-go/v2/oracle/oracles" @@ -121,7 +121,13 @@ func createGCWorkerSuiteWithStoreType(t *testing.T, storeType mockstore.StoreTyp } s.oracle = &oracles.MockOracle{} - s.store, s.dom, clean = testkit.CreateMockStoreWithOracle(t, s.oracle, opts...) + store, err := mockstore.NewMockStore(opts...) + require.NoError(t, err) + store.GetOracle().Close() + store.(tikv.Storage).SetOracle(s.oracle) + dom, clean := bootstrap(t, store, 0) + s.store, s.dom = store, dom + s.tikvStore = s.store.(tikv.Storage) gcWorker, err := NewGCWorker(s.store, s.pdClient) @@ -1774,3 +1780,19 @@ func TestGCWithPendingTxn(t *testing.T) { err = txn.Commit(ctx) require.NoError(t, err) } + +func bootstrap(t testing.TB, store kv.Storage, lease time.Duration) (*domain.Domain, func()) { + session.SetSchemaLease(lease) + session.DisableStats4Test() + dom, err := session.BootstrapSession(store) + require.NoError(t, err) + + dom.SetStatsUpdating(true) + + clean := func() { + dom.Close() + err := store.Close() + require.NoError(t, err) + } + return dom, clean +} diff --git a/testkit/mockstore.go b/testkit/mockstore.go index 9ab3493c3a70c..98acf94b98c58 100644 --- a/testkit/mockstore.go +++ b/testkit/mockstore.go @@ -17,20 +17,42 @@ package testkit import ( + "flag" "testing" "time" "github.com/pingcap/tidb/domain" "github.com/pingcap/tidb/kv" "github.com/pingcap/tidb/session" + "github.com/pingcap/tidb/store/driver" "github.com/pingcap/tidb/store/mockstore" "github.com/stretchr/testify/require" "github.com/tikv/client-go/v2/oracle" "github.com/tikv/client-go/v2/tikv" ) +// WithTiKV flag is only used for debugging locally with real tikv cluster. +var WithTiKV = flag.String("with-tikv", "", "address of tikv cluster, if set, running test with real tikv cluster") + // CreateMockStore return a new mock kv.Storage. func CreateMockStore(t testing.TB, opts ...mockstore.MockTiKVStoreOption) (store kv.Storage, clean func()) { + if *WithTiKV != "" { + var d driver.TiKVDriver + var err error + store, err = d.Open("tikv://" + *WithTiKV) + require.NoError(t, err) + + var dom *domain.Domain + dom, err = session.BootstrapSession(store) + clean = func() { + dom.Close() + err := store.Close() + require.NoError(t, err) + } + require.NoError(t, err) + return + } + store, _, clean = CreateMockStoreAndDomain(t, opts...) return } diff --git a/tools/check/ut.go b/tools/check/ut.go index 66a4fac7203a8..0fbef958bae4b 100644 --- a/tools/check/ut.go +++ b/tools/check/ut.go @@ -812,9 +812,9 @@ func (n *numa) testCommand(pkg string, fn string) *exec.Cmd { // it takes a longer when race is enabled. so it is set more timeout value. args = append(args, []string{"-test.timeout", "30m"}...) } - // session.test -test.run TestClusteredPrefixColum - args = append(args, "-test.run", fn) + // session.test -test.run TestClusteredPrefixColum + args = append(args, "-test.run", "^"+fn+"$") return exec.Command(exe, args...) }