Skip to content

Commit

Permalink
testkit: add a WithTiKV flag to support run unit test on real TiKV (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
tiancaiamao authored Jun 30, 2022
1 parent 11f39cd commit 6d80d00
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 4 deletions.
26 changes: 24 additions & 2 deletions store/gcworker/gc_worker_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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
}
22 changes: 22 additions & 0 deletions testkit/mockstore.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
4 changes: 2 additions & 2 deletions tools/check/ut.go
Original file line number Diff line number Diff line change
Expand Up @@ -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...)
}

Expand Down

0 comments on commit 6d80d00

Please sign in to comment.