From e7c673086f8436ff5ae8f086f0ea358276ac8728 Mon Sep 17 00:00:00 2001 From: Zihong Zheng Date: Fri, 9 Mar 2018 10:56:46 -0800 Subject: [PATCH] [e2e service] Fix gke failure: move apiserver restart validation logic into util --- test/e2e/framework/util.go | 21 ++++++++++++++------- test/e2e/network/service.go | 8 +------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/test/e2e/framework/util.go b/test/e2e/framework/util.go index 81bb88a11af..60536049d8c 100644 --- a/test/e2e/framework/util.go +++ b/test/e2e/framework/util.go @@ -3916,17 +3916,24 @@ func WaitForKubeletUp(host string) error { return fmt.Errorf("waiting for kubelet timed out") } -func RestartApiserver(c discovery.ServerVersionInterface) error { +func RestartApiserver(cs clientset.Interface) error { // TODO: Make it work for all providers. if !ProviderIs("gce", "gke", "aws") { return fmt.Errorf("unsupported provider: %s", TestContext.Provider) } if ProviderIs("gce", "aws") { - return sshRestartMaster() + initialRestartCount, err := getApiserverRestartCount(cs) + if err != nil { + return fmt.Errorf("failed to get apiserver's restart count: %v", err) + } + if err := sshRestartMaster(); err != nil { + return fmt.Errorf("failed to restart apiserver: %v", err) + } + return waitForApiserverRestarted(cs, initialRestartCount) } // GKE doesn't allow ssh access, so use a same-version master // upgrade to teardown/recreate master. - v, err := c.ServerVersion() + v, err := cs.Discovery().ServerVersion() if err != nil { return err } @@ -3962,10 +3969,10 @@ func WaitForApiserverUp(c clientset.Interface) error { return fmt.Errorf("waiting for apiserver timed out") } -// WaitForApiserverRestarted waits until apiserver's restart count increased. -func WaitForApiserverRestarted(c clientset.Interface, initialRestartCount int32) error { +// waitForApiserverRestarted waits until apiserver's restart count increased. +func waitForApiserverRestarted(c clientset.Interface, initialRestartCount int32) error { for start := time.Now(); time.Since(start) < time.Minute; time.Sleep(5 * time.Second) { - restartCount, err := GetApiserverRestartCount(c) + restartCount, err := getApiserverRestartCount(c) if err != nil { Logf("Failed to get apiserver's restart count: %v", err) continue @@ -3979,7 +3986,7 @@ func WaitForApiserverRestarted(c clientset.Interface, initialRestartCount int32) return fmt.Errorf("timed out waiting for apiserver to be restarted") } -func GetApiserverRestartCount(c clientset.Interface) (int32, error) { +func getApiserverRestartCount(c clientset.Interface) (int32, error) { label := labels.SelectorFromSet(labels.Set(map[string]string{"component": "kube-apiserver"})) listOpts := metav1.ListOptions{LabelSelector: label.String()} pods, err := c.CoreV1().Pods(metav1.NamespaceSystem).List(listOpts) diff --git a/test/e2e/network/service.go b/test/e2e/network/service.go index b0f6264e33a..5a2a1e00f6e 100644 --- a/test/e2e/network/service.go +++ b/test/e2e/network/service.go @@ -427,16 +427,10 @@ var _ = SIGDescribe("Services", func() { framework.ExpectNoError(framework.VerifyServeHostnameServiceUp(cs, ns, host, podNames1, svc1IP, servicePort)) // Restart apiserver - initialRestartCount, err := framework.GetApiserverRestartCount(cs) - Expect(err).NotTo(HaveOccurred(), "failed to get apiserver's restart count") By("Restarting apiserver") - if err := framework.RestartApiserver(cs.Discovery()); err != nil { + if err := framework.RestartApiserver(cs); err != nil { framework.Failf("error restarting apiserver: %v", err) } - By("Waiting for apiserver to be restarted") - if err := framework.WaitForApiserverRestarted(cs, initialRestartCount); err != nil { - framework.Failf("error while waiting for apiserver to be restarted: %v", err) - } By("Waiting for apiserver to come up by polling /healthz") if err := framework.WaitForApiserverUp(cs); err != nil { framework.Failf("error while waiting for apiserver up: %v", err)