Skip to content

Commit 7b5d47d

Browse files
authored
fix(tests): validate whether RaftCluster is running in MustPutStore (tikv#9177)
close tikv#9176 Improve robustness of `MustPutStore` by validating `RaftCluster` is running. Signed-off-by: JmPotato <github@ipotato.me>
1 parent fda80eb commit 7b5d47d

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

tests/testutil.go

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ import (
4747
"github.com/tikv/pd/pkg/utils/logutil"
4848
"github.com/tikv/pd/pkg/utils/testutil"
4949
"github.com/tikv/pd/pkg/versioninfo"
50-
"github.com/tikv/pd/server"
50+
"github.com/tikv/pd/server/cluster"
5151
)
5252

5353
var (
@@ -193,28 +193,33 @@ func WaitForPrimaryServing(re *require.Assertions, serverMap map[string]bs.Serve
193193
}
194194

195195
// MustPutStore is used for test purpose.
196-
func MustPutStore(re *require.Assertions, cluster *TestCluster, store *metapb.Store) {
196+
func MustPutStore(re *require.Assertions, tc *TestCluster, store *metapb.Store) {
197197
store.Address = fmt.Sprintf("tikv%d", store.GetId())
198198
if len(store.Version) == 0 {
199199
store.Version = versioninfo.MinSupportedVersion(versioninfo.Version2_0).String()
200200
}
201-
var svr *server.Server
201+
var raftCluster *cluster.RaftCluster
202202
// Make sure the raft cluster is ready, no matter if the leader is changed.
203203
testutil.Eventually(re, func() bool {
204-
leader := cluster.GetLeaderServer()
204+
leader := tc.GetLeaderServer()
205205
if leader == nil {
206206
return false
207207
}
208-
svr = leader.GetServer()
209-
return svr != nil
208+
svr := leader.GetServer()
209+
if svr == nil {
210+
return false
211+
}
212+
raftCluster = svr.GetRaftCluster()
213+
// Wait for the raft cluster on the leader to be bootstrapped.
214+
return raftCluster != nil && raftCluster.IsRunning()
210215
})
211-
re.NoError(svr.GetRaftCluster().PutMetaStore(store))
216+
re.NoError(raftCluster.PutMetaStore(store))
212217
ts := store.GetLastHeartbeat()
213218
if ts == 0 {
214219
ts = time.Now().UnixNano()
215220
}
216221

217-
storeInfo := svr.GetRaftCluster().GetStore(store.GetId())
222+
storeInfo := raftCluster.GetStore(store.GetId())
218223
newStore := storeInfo.Clone(
219224
core.SetStoreStats(&pdpb.StoreStats{
220225
Capacity: uint64(10 * units.GiB),
@@ -223,9 +228,9 @@ func MustPutStore(re *require.Assertions, cluster *TestCluster, store *metapb.St
223228
}),
224229
core.SetLastHeartbeatTS(time.Unix(ts/1e9, ts%1e9)),
225230
)
226-
svr.GetRaftCluster().GetBasicCluster().PutStore(newStore)
227-
if cluster.GetSchedulingPrimaryServer() != nil {
228-
cluster.GetSchedulingPrimaryServer().GetCluster().PutStore(newStore)
231+
raftCluster.GetBasicCluster().PutStore(newStore)
232+
if tc.GetSchedulingPrimaryServer() != nil {
233+
tc.GetSchedulingPrimaryServer().GetCluster().PutStore(newStore)
229234
}
230235
}
231236

0 commit comments

Comments
 (0)