From 4e1010c1b99ee31e171ba0d4c7e77b47fd3d08c7 Mon Sep 17 00:00:00 2001 From: Gyu-Ho Lee Date: Thu, 29 Dec 2016 10:52:40 -0800 Subject: [PATCH] e2e: poll '/version' in release upgrade tests Fix https://github.com/coreos/etcd/issues/7065. --- e2e/etcd_release_upgrade_test.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/e2e/etcd_release_upgrade_test.go b/e2e/etcd_release_upgrade_test.go index d4eb8e693..92b4cb12f 100644 --- a/e2e/etcd_release_upgrade_test.go +++ b/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")