diff --git a/test/e2e/annotations/auth.go b/test/e2e/annotations/auth.go index 5ea9c563f3..01eb7b6389 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 d395cbb8ba..ad1f2a4d8e 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 39812969d7..2833e86940 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 }) }