From b2084c057d142a45ed115ce18d2606ad5a51a622 Mon Sep 17 00:00:00 2001 From: Elvin Efendi Date: Fri, 20 Apr 2018 22:32:38 -0400 Subject: [PATCH 1/3] fix flaky dynamic configuration test --- test/e2e/lua/dynamic_configuration.go | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/test/e2e/lua/dynamic_configuration.go b/test/e2e/lua/dynamic_configuration.go index 6c21b2407..5dda549cf 100644 --- a/test/e2e/lua/dynamic_configuration.go +++ b/test/e2e/lua/dynamic_configuration.go @@ -51,8 +51,7 @@ var _ = framework.IngressNginxDescribe("Dynamic Configuration", func() { ing, err := ensureIngress(f, host) Expect(err).NotTo(HaveOccurred()) Expect(ing).NotTo(BeNil()) - - time.Sleep(10 * time.Second) + time.Sleep(5 * time.Second) err = f.WaitForNginxServer(host, func(server string) bool { @@ -88,6 +87,7 @@ var _ = framework.IngressNginxDescribe("Dynamic Configuration", func() { replicas := 2 err := framework.UpdateDeployment(f.KubeClientSet, f.IngressController.Namespace, "http-svc", replicas, nil) Expect(err).NotTo(HaveOccurred()) + time.Sleep(5 * time.Second) log, err := f.NginxLogs() Expect(err).ToNot(HaveOccurred()) @@ -110,15 +110,22 @@ var _ = framework.IngressNginxDescribe("Dynamic Configuration", func() { ingress, err := f.KubeClientSet.ExtensionsV1beta1().Ingresses(f.IngressController.Namespace).Get("foo.com", metav1.GetOptions{}) Expect(err).ToNot(HaveOccurred()) + resp, _, errs := gorequest.New(). + Get(fmt.Sprintf("%s?id=should_handle_annotation_changes", f.IngressController.HTTPURL)). + Set("Host", "foo.com"). + End() + Expect(len(errs)).Should(Equal(0)) + Expect(resp.StatusCode).Should(Equal(http.StatusOK)) + ingress.ObjectMeta.Annotations["nginx.ingress.kubernetes.io/load-balance"] = "round_robin" _, err = f.KubeClientSet.ExtensionsV1beta1().Ingresses(f.IngressController.Namespace).Update(ingress) Expect(err).ToNot(HaveOccurred()) - time.Sleep(5 * time.Second) + log, err := f.NginxLogs() Expect(err).ToNot(HaveOccurred()) Expect(log).ToNot(BeEmpty()) - index := strings.Index(log, fmt.Sprintf("reason: 'UPDATE' Ingress %s/foo.com", f.IngressController.Namespace)) + index := strings.Index(log, "id=should_handle_annotation_changes") restOfLogs := log[index:] By("POSTing new backends to Lua endpoint") @@ -290,8 +297,6 @@ func enableDynamicConfiguration(namespace string, kubeClientSet kubernetes.Inter return err } - time.Sleep(5 * time.Second) - return nil }) } From 84385a01bb72763f1b403b4f906cc0828d6fb33f Mon Sep 17 00:00:00 2001 From: Elvin Efendi Date: Fri, 20 Apr 2018 22:38:25 -0400 Subject: [PATCH 2/3] shave off some more seconds --- test/e2e/lua/dynamic_configuration.go | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/test/e2e/lua/dynamic_configuration.go b/test/e2e/lua/dynamic_configuration.go index 5dda549cf..9aba6e6b9 100644 --- a/test/e2e/lua/dynamic_configuration.go +++ b/test/e2e/lua/dynamic_configuration.go @@ -51,7 +51,6 @@ var _ = framework.IngressNginxDescribe("Dynamic Configuration", func() { ing, err := ensureIngress(f, host) Expect(err).NotTo(HaveOccurred()) Expect(ing).NotTo(BeNil()) - time.Sleep(5 * time.Second) err = f.WaitForNginxServer(host, func(server string) bool { @@ -59,6 +58,9 @@ var _ = framework.IngressNginxDescribe("Dynamic Configuration", func() { }) Expect(err).NotTo(HaveOccurred()) + // give some time for Lua to sync the backend + time.Sleep(2 * time.Second) + resp, _, errs := gorequest.New(). Get(f.IngressController.HTTPURL). Set("Host", host). @@ -160,7 +162,14 @@ var _ = framework.IngressNginxDescribe("Dynamic Configuration", func() { _, err = f.KubeClientSet.ExtensionsV1beta1().Ingresses(f.IngressController.Namespace).Update(ingress) Expect(err).ToNot(HaveOccurred()) - time.Sleep(5 * time.Second) + By("generating the respective ssl listen directive") + err = f.WaitForNginxServer("foo.com", + func(server string) bool { + return strings.Contains(server, "server_name foo.com") && + strings.Contains(server, "listen 443") + }) + Expect(err).ToNot(HaveOccurred()) + log, err := f.NginxLogs() Expect(err).ToNot(HaveOccurred()) Expect(log).ToNot(BeEmpty()) @@ -177,14 +186,6 @@ var _ = framework.IngressNginxDescribe("Dynamic Configuration", func() { return strings.Contains(server, "proxy_pass http://upstream_balancer;") }) Expect(err).NotTo(HaveOccurred()) - - By("generating the respective ssl listen directive") - err = f.WaitForNginxServer("foo.com", - func(server string) bool { - return strings.Contains(server, "server_name foo.com") && - strings.Contains(server, "listen 443") - }) - Expect(err).ToNot(HaveOccurred()) }) Context("when session affinity annotation is present", func() { @@ -200,12 +201,10 @@ var _ = framework.IngressNginxDescribe("Dynamic Configuration", func() { } _, err = f.KubeClientSet.ExtensionsV1beta1().Ingresses(f.IngressController.Namespace).Update(ingress) Expect(err).ToNot(HaveOccurred()) - time.Sleep(5 * time.Second) By("Increasing the number of service replicas") err = framework.UpdateDeployment(f.KubeClientSet, f.IngressController.Namespace, "http-svc", 2, nil) Expect(err).NotTo(HaveOccurred()) - time.Sleep(5 * time.Second) By("Making a first request") From 0837e81c7f0e7c8c6ad2365e7a351df9052d94af Mon Sep 17 00:00:00 2001 From: Elvin Efendi Date: Fri, 20 Apr 2018 23:41:21 -0400 Subject: [PATCH 3/3] cleanup redundant code --- test/e2e/lua/dynamic_configuration.go | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/test/e2e/lua/dynamic_configuration.go b/test/e2e/lua/dynamic_configuration.go index 9aba6e6b9..038365389 100644 --- a/test/e2e/lua/dynamic_configuration.go +++ b/test/e2e/lua/dynamic_configuration.go @@ -29,7 +29,6 @@ import ( appsv1beta1 "k8s.io/api/apps/v1beta1" extensions "k8s.io/api/extensions/v1beta1" - v1beta1 "k8s.io/api/extensions/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/intstr" "k8s.io/client-go/kubernetes" @@ -74,9 +73,6 @@ var _ = framework.IngressNginxDescribe("Dynamic Configuration", func() { Expect(log).To(ContainSubstring("first sync of Nginx configuration")) }) - AfterEach(func() { - }) - Context("when only backends change", func() { It("should handle endpoints only changes", func() { resp, _, errs := gorequest.New(). @@ -146,7 +142,7 @@ var _ = framework.IngressNginxDescribe("Dynamic Configuration", func() { ingress, err := f.KubeClientSet.ExtensionsV1beta1().Ingresses(f.IngressController.Namespace).Get("foo.com", metav1.GetOptions{}) Expect(err).ToNot(HaveOccurred()) - ingress.Spec.TLS = []v1beta1.IngressTLS{ + ingress.Spec.TLS = []extensions.IngressTLS{ { Hosts: []string{"foo.com"}, SecretName: "foo.com", @@ -187,7 +183,6 @@ var _ = framework.IngressNginxDescribe("Dynamic Configuration", func() { }) Expect(err).NotTo(HaveOccurred()) }) - Context("when session affinity annotation is present", func() { It("should use sticky sessions when ingress rules are configured", func() { cookieName := "STICKYSESSION" @@ -256,8 +251,8 @@ var _ = framework.IngressNginxDescribe("Dynamic Configuration", func() { By("Updating affinity annotation and rules on ingress") ingress, err := f.KubeClientSet.ExtensionsV1beta1().Ingresses(f.IngressController.Namespace).Get("foo.com", metav1.GetOptions{}) Expect(err).ToNot(HaveOccurred()) - ingress.Spec = v1beta1.IngressSpec{ - Backend: &v1beta1.IngressBackend{ + ingress.Spec = extensions.IngressSpec{ + Backend: &extensions.IngressBackend{ ServiceName: "http-svc", ServicePort: intstr.FromInt(80), },