// 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 testutil import ( "context" "sync" "sync/atomic" "testing" "github.com/pingcap/tidb/pkg/testkit" "github.com/tikv/client-go/v2/util" "go.uber.org/mock/gomock" ) // TestContext defines shared variables for disttask tests. type TestContext struct { // for basic tests. M sync.Map // for rollback tests. RollbackCnt atomic.Int32 // for plan err handling tests. CallTime int } // InitTestContext inits test context for disttask tests. func InitTestContext(t *testing.T, nodeNum int) (context.Context, *gomock.Controller, *TestContext, *testkit.DistExecutionContext) { ctrl := gomock.NewController(t) defer ctrl.Finish() ctx := context.Background() ctx = util.WithInternalSourceType(ctx, "dispatcher") return ctx, ctrl, &TestContext{}, testkit.NewDistExecutionContext(t, nodeNum) }