Skip to content

Commit

Permalink
make TestLeaderPriority stable
Browse files Browse the repository at this point in the history
Signed-off-by: Ryan Leung <[email protected]>
  • Loading branch information
rleungx committed Sep 4, 2024
1 parent 750d475 commit 098c6e5
Showing 1 changed file with 19 additions and 8 deletions.
27 changes: 19 additions & 8 deletions tests/server/member/member_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -161,21 +161,32 @@ func TestLeaderPriority(t *testing.T) {

re.NotEmpty(cluster.WaitLeader())

leader1, err := cluster.GetServer("pd1").GetEtcdLeader()
leader, err := cluster.GetServer("pd1").GetEtcdLeader()
re.NoError(err)
server1 := cluster.GetServer(leader1)
addr := server1.GetConfig().ClientUrls
server := cluster.GetServer(leader)
addr := server.GetConfig().ClientUrls
// PD leader should sync with etcd leader.
testutil.Eventually(re, func() bool {
return cluster.GetLeader() == leader1
leader, err := cluster.GetServer("pd1").GetEtcdLeader()
if err != nil {
return false
}
return cluster.GetLeader() == leader
})
// Bind a lower priority to current leader.
post(t, re, addr+"/pd/api/v1/members/name/"+leader1, `{"leader-priority": -1}`)
// Wait etcd leader change.
leader2 := waitEtcdLeaderChange(re, server1, leader1)
post(t, re, addr+"/pd/api/v1/members/name/"+leader, `{"leader-priority": -1}`)

oldLeader := leader
// PD leader should sync with etcd leader again.
testutil.Eventually(re, func() bool {
return cluster.GetLeader() == leader2
// Wait etcd leader change.
newLeader := waitEtcdLeaderChange(re, server, oldLeader)
if cluster.GetLeader() == newLeader {
return true
}
// prevent the etcd leader from changing again before pd is elected as leader
oldLeader = newLeader
return false
})
}

Expand Down

0 comments on commit 098c6e5

Please sign in to comment.