store/gcworker: migrate test-infra to testify for gc_worker_test.go #27657 (#27743)

This commit is contained in:
Penthaa Patel
2021-09-04 10:00:56 +05:30
committed by GitHub
parent c85b3e2835
commit a11bfef71a
3 changed files with 754 additions and 594 deletions

View File

@ -0,0 +1,40 @@
// Copyright 2021 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 gcworker
import (
"testing"
"time"
"github.com/pingcap/tidb/testkit/testmain"
"github.com/pingcap/tidb/util/testbridge"
"github.com/tikv/client-go/v2/tikv"
"go.uber.org/goleak"
)
func TestMain(m *testing.M) {
testbridge.WorkaroundGoCheckFlags()
tikv.EnableFailpoints()
opts := []goleak.Option{
goleak.IgnoreTopFunction("go.etcd.io/etcd/pkg/logutil.(*MergeLogger).outputLoop"),
goleak.IgnoreTopFunction("go.opencensus.io/stats/view.(*worker).start"),
}
callback := func(i int) int {
// wait for MVCCLevelDB to close, MVCCLevelDB will be closed in one second
time.Sleep(time.Second)
return i
}
goleak.VerifyTestMain(testmain.WrapTestingM(m, callback), opts...)
}

View File

@ -0,0 +1,42 @@
// Copyright 2021 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.
// +build !codes
package testmain
import "go.uber.org/goleak"
type testingM struct {
goleak.TestingM
callback func(int) int
}
func (m *testingM) Run() int {
return m.callback(m.TestingM.Run())
}
// WrapTestingM returns a TestingM wrapped with callback on m.Run returning
func WrapTestingM(m goleak.TestingM, callback func(int) int) *testingM {
if callback == nil {
callback = func(i int) int {
return i
}
}
return &testingM{
TestingM: m,
callback: callback,
}
}