From b81cb999fbde453027b99e36ea00cec56cbb4904 Mon Sep 17 00:00:00 2001 From: Gyu-Ho Lee Date: Thu, 23 Mar 2017 16:24:15 -0700 Subject: [PATCH] integration: retry TestNetworkPartition5MembersLeaderInMajority Fix https://github.com/coreos/etcd/issues/7587. Retry for possible leader election in majority. Signed-off-by: Gyu-Ho Lee --- integration/network_partition_test.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/integration/network_partition_test.go b/integration/network_partition_test.go index c4d00642b..21130eb02 100644 --- a/integration/network_partition_test.go +++ b/integration/network_partition_test.go @@ -15,6 +15,7 @@ package integration import ( + "fmt" "testing" "time" @@ -56,6 +57,20 @@ func TestNetworkPartition5MembersLeaderInMinority(t *testing.T) { } func TestNetworkPartition5MembersLeaderInMajority(t *testing.T) { + // retry up to 3 times, in case of leader election on majority partition due to slow hardware + var err error + for i := 0; i < 3; i++ { + if err = testNetworkPartition5MembersLeaderInMajority(t); err == nil { + break + } + t.Logf("[%d] got %v", i, err) + } + if err != nil { + t.Fatalf("failed after 3 tries (%v)", err) + } +} + +func testNetworkPartition5MembersLeaderInMajority(t *testing.T) error { defer testutil.AfterTest(t) clus := NewClusterV3(t, &ClusterConfig{Size: 5}) @@ -83,7 +98,7 @@ func TestNetworkPartition5MembersLeaderInMajority(t *testing.T) { leadIndex2 := clus.waitLeader(t, majorityMembers) leadID, leadID2 := clus.Members[leadIndex].s.ID(), majorityMembers[leadIndex2].s.ID() if leadID != leadID2 { - t.Fatalf("unexpected leader change from %s, got %s", leadID, leadID2) + return fmt.Errorf("unexpected leader change from %s, got %s", leadID, leadID2) } // recover network partition (bi-directional) @@ -91,6 +106,7 @@ func TestNetworkPartition5MembersLeaderInMajority(t *testing.T) { // write to majority first clusterMustProgress(t, append(majorityMembers, minorityMembers...)) + return nil } func TestNetworkPartition4Members(t *testing.T) {