Browse Source

clientv3/integration: add timeout case.

caoming 6 years ago
parent
commit
94b782e7c9
1 changed files with 14 additions and 5 deletions
  1. 14 5
      clientv3/integration/network_partition_test.go

+ 14 - 5
clientv3/integration/network_partition_test.go

@@ -310,10 +310,19 @@ func TestDropReadUnderNetworkPartition(t *testing.T) {
 		t.Fatalf("expected %v, got %v", rpctypes.ErrLeaderChanged, err)
 	}
 
-	ctx, cancel = context.WithTimeout(context.TODO(), 10*time.Second)
-	_, err = kvc.Get(ctx, "a")
-	cancel()
-	if err != nil {
-		t.Fatalf("expected nil, got %v", err)
+	for i := 0; i < 5; i++ {
+		ctx, cancel = context.WithTimeout(context.TODO(), 10*time.Second)
+		_, err = kvc.Get(ctx, "a")
+		cancel()
+		if err != nil {
+			if err == rpctypes.ErrTimeout {
+				<-time.After(time.Second)
+				i++
+				continue
+			}
+			t.Fatalf("expected nil or timeout, got %v", err)
+		}
+		// No error returned and no retry required
+		break
 	}
 }