This commit is contained in:
File diff suppressed because it is too large
Load Diff
40
store/gcworker/main_test.go
Normal file
40
store/gcworker/main_test.go
Normal 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...)
|
||||
}
|
||||
42
testkit/testmain/testmain.go
Normal file
42
testkit/testmain/testmain.go
Normal 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,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user