浏览代码

e2e: poll '/version' in release upgrade tests

Fix https://github.com/coreos/etcd/issues/7065.
Gyu-Ho Lee 9 年之前
父节点
当前提交
4e1010c1b9
共有 1 个文件被更改,包括 14 次插入0 次删除
  1. 14 0
      e2e/etcd_release_upgrade_test.go

+ 14 - 0
e2e/etcd_release_upgrade_test.go

@@ -49,6 +49,20 @@ func TestReleaseUpgrade(t *testing.T) {
 			t.Fatalf("error closing etcd processes (%v)", errC)
 		}
 	}()
+	// 3.0 boots as 2.3 then negotiates up to 3.0
+	// so there's a window at boot time where it doesn't have V3rpcCapability enabled
+	// poll /version until etcdcluster is >2.3.x before making v3 requests
+	for i := 0; i < 7; i++ {
+		if err = cURLGet(epc, cURLReq{endpoint: "/version", expected: `"etcdcluster":"3.0`}); err != nil {
+			t.Logf("#%d: v3 is not ready yet (%v)", i, err)
+			time.Sleep(time.Second)
+			continue
+		}
+		break
+	}
+	if err != nil {
+		t.Fatalf("cannot pull version (%v)", err)
+	}
 
 	os.Setenv("ETCDCTL_API", "3")
 	defer os.Unsetenv("ETCDCTL_API")