From fdeeac360629bb3aa887f0dcec55a40ead6cb28d Mon Sep 17 00:00:00 2001 From: Manuel Alejandro de Brito Fontes Date: Fri, 30 Nov 2018 20:17:18 -0300 Subject: [PATCH] Wait for the right number of endpoints (#3497) --- test/e2e/annotations/auth.go | 2 +- test/e2e/framework/deployment.go | 2 +- test/e2e/framework/k8s.go | 13 +++++++++++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/test/e2e/annotations/auth.go b/test/e2e/annotations/auth.go index 5ea9c563f..01eb7b638 100644 --- a/test/e2e/annotations/auth.go +++ b/test/e2e/annotations/auth.go @@ -268,7 +268,7 @@ var _ = framework.IngressNginxDescribe("Annotations - Auth", func() { var httpbinIP string - err := framework.WaitForEndpoints(f.KubeClientSet, framework.DefaultTimeout, "httpbin", f.IngressController.Namespace) + err := framework.WaitForEndpoints(f.KubeClientSet, framework.DefaultTimeout, "httpbin", f.IngressController.Namespace, 1) Expect(err).NotTo(HaveOccurred()) e, err := f.KubeClientSet.CoreV1().Endpoints(f.IngressController.Namespace).Get("httpbin", metav1.GetOptions{}) diff --git a/test/e2e/framework/deployment.go b/test/e2e/framework/deployment.go index d395cbb8b..ad1f2a4d8 100644 --- a/test/e2e/framework/deployment.go +++ b/test/e2e/framework/deployment.go @@ -123,6 +123,6 @@ func (f *Framework) NewDeployment(name, image string, port int32, replicas int32 s := f.EnsureService(service) Expect(s).NotTo(BeNil(), "expected a service but none returned") - err = WaitForEndpoints(f.KubeClientSet, DefaultTimeout, name, f.IngressController.Namespace) + err = WaitForEndpoints(f.KubeClientSet, DefaultTimeout, name, f.IngressController.Namespace, int(replicas)) Expect(err).NotTo(HaveOccurred(), "failed to wait for endpoints to become ready") } diff --git a/test/e2e/framework/k8s.go b/test/e2e/framework/k8s.go index 39812969d..2833e8694 100644 --- a/test/e2e/framework/k8s.go +++ b/test/e2e/framework/k8s.go @@ -143,7 +143,7 @@ func WaitForPodsReady(kubeClientSet kubernetes.Interface, timeout time.Duration, } // WaitForEndpoints waits for a given amount of time until an endpoint contains. -func WaitForEndpoints(kubeClientSet kubernetes.Interface, timeout time.Duration, name, ns string) error { +func WaitForEndpoints(kubeClientSet kubernetes.Interface, timeout time.Duration, name, ns string, expectedEndpoints int) error { return wait.Poll(2*time.Second, timeout, func() (bool, error) { endpoint, err := kubeClientSet.CoreV1().Endpoints(ns).Get(name, metav1.GetOptions{}) if k8sErrors.IsNotFound(err) { @@ -154,7 +154,16 @@ func WaitForEndpoints(kubeClientSet kubernetes.Interface, timeout time.Duration, return false, err } - return true, nil + r := 0 + for _, es := range endpoint.Subsets { + r += len(es.Addresses) + } + + if r == expectedEndpoints { + return true, nil + } + + return false, nil }) }