From 098c6e53ff0e7debfd8b0ccd56c1bc230d1f0dc6 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Tue, 3 Sep 2024 16:09:38 +0800 Subject: [PATCH] make TestLeaderPriority stable Signed-off-by: Ryan Leung --- tests/server/member/member_test.go | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/tests/server/member/member_test.go b/tests/server/member/member_test.go index 6cd9eacddf1..6a1eddb1a71 100644 --- a/tests/server/member/member_test.go +++ b/tests/server/member/member_test.go @@ -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 }) }