Merge pull request #2395 from ElvinEfendi/fix-flaky-test

Fix flaky test
This commit is contained in:
k8s-ci-robot 2018-04-21 04:19:59 -07:00 committed by GitHub
commit f1be6d0d72
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -29,7 +29,6 @@ import (
appsv1beta1 "k8s.io/api/apps/v1beta1" appsv1beta1 "k8s.io/api/apps/v1beta1"
extensions "k8s.io/api/extensions/v1beta1" extensions "k8s.io/api/extensions/v1beta1"
v1beta1 "k8s.io/api/extensions/v1beta1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes"
@ -52,14 +51,15 @@ var _ = framework.IngressNginxDescribe("Dynamic Configuration", func() {
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
Expect(ing).NotTo(BeNil()) Expect(ing).NotTo(BeNil())
time.Sleep(10 * time.Second)
err = f.WaitForNginxServer(host, err = f.WaitForNginxServer(host,
func(server string) bool { func(server string) bool {
return strings.Contains(server, "proxy_pass http://upstream_balancer;") return strings.Contains(server, "proxy_pass http://upstream_balancer;")
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
// give some time for Lua to sync the backend
time.Sleep(2 * time.Second)
resp, _, errs := gorequest.New(). resp, _, errs := gorequest.New().
Get(f.IngressController.HTTPURL). Get(f.IngressController.HTTPURL).
Set("Host", host). Set("Host", host).
@ -73,9 +73,6 @@ var _ = framework.IngressNginxDescribe("Dynamic Configuration", func() {
Expect(log).To(ContainSubstring("first sync of Nginx configuration")) Expect(log).To(ContainSubstring("first sync of Nginx configuration"))
}) })
AfterEach(func() {
})
Context("when only backends change", func() { Context("when only backends change", func() {
It("should handle endpoints only changes", func() { It("should handle endpoints only changes", func() {
resp, _, errs := gorequest.New(). resp, _, errs := gorequest.New().
@ -88,6 +85,7 @@ var _ = framework.IngressNginxDescribe("Dynamic Configuration", func() {
replicas := 2 replicas := 2
err := framework.UpdateDeployment(f.KubeClientSet, f.IngressController.Namespace, "http-svc", replicas, nil) err := framework.UpdateDeployment(f.KubeClientSet, f.IngressController.Namespace, "http-svc", replicas, nil)
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
time.Sleep(5 * time.Second)
log, err := f.NginxLogs() log, err := f.NginxLogs()
Expect(err).ToNot(HaveOccurred()) Expect(err).ToNot(HaveOccurred())
@ -110,15 +108,22 @@ var _ = framework.IngressNginxDescribe("Dynamic Configuration", func() {
ingress, err := f.KubeClientSet.ExtensionsV1beta1().Ingresses(f.IngressController.Namespace).Get("foo.com", metav1.GetOptions{}) ingress, err := f.KubeClientSet.ExtensionsV1beta1().Ingresses(f.IngressController.Namespace).Get("foo.com", metav1.GetOptions{})
Expect(err).ToNot(HaveOccurred()) 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" ingress.ObjectMeta.Annotations["nginx.ingress.kubernetes.io/load-balance"] = "round_robin"
_, err = f.KubeClientSet.ExtensionsV1beta1().Ingresses(f.IngressController.Namespace).Update(ingress) _, err = f.KubeClientSet.ExtensionsV1beta1().Ingresses(f.IngressController.Namespace).Update(ingress)
Expect(err).ToNot(HaveOccurred()) Expect(err).ToNot(HaveOccurred())
time.Sleep(5 * time.Second) time.Sleep(5 * time.Second)
log, err := f.NginxLogs() log, err := f.NginxLogs()
Expect(err).ToNot(HaveOccurred()) Expect(err).ToNot(HaveOccurred())
Expect(log).ToNot(BeEmpty()) 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:] restOfLogs := log[index:]
By("POSTing new backends to Lua endpoint") By("POSTing new backends to Lua endpoint")
@ -137,7 +142,7 @@ var _ = framework.IngressNginxDescribe("Dynamic Configuration", func() {
ingress, err := f.KubeClientSet.ExtensionsV1beta1().Ingresses(f.IngressController.Namespace).Get("foo.com", metav1.GetOptions{}) ingress, err := f.KubeClientSet.ExtensionsV1beta1().Ingresses(f.IngressController.Namespace).Get("foo.com", metav1.GetOptions{})
Expect(err).ToNot(HaveOccurred()) Expect(err).ToNot(HaveOccurred())
ingress.Spec.TLS = []v1beta1.IngressTLS{ ingress.Spec.TLS = []extensions.IngressTLS{
{ {
Hosts: []string{"foo.com"}, Hosts: []string{"foo.com"},
SecretName: "foo.com", SecretName: "foo.com",
@ -153,7 +158,14 @@ var _ = framework.IngressNginxDescribe("Dynamic Configuration", func() {
_, err = f.KubeClientSet.ExtensionsV1beta1().Ingresses(f.IngressController.Namespace).Update(ingress) _, err = f.KubeClientSet.ExtensionsV1beta1().Ingresses(f.IngressController.Namespace).Update(ingress)
Expect(err).ToNot(HaveOccurred()) 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() log, err := f.NginxLogs()
Expect(err).ToNot(HaveOccurred()) Expect(err).ToNot(HaveOccurred())
Expect(log).ToNot(BeEmpty()) Expect(log).ToNot(BeEmpty())
@ -170,16 +182,7 @@ var _ = framework.IngressNginxDescribe("Dynamic Configuration", func() {
return strings.Contains(server, "proxy_pass http://upstream_balancer;") return strings.Contains(server, "proxy_pass http://upstream_balancer;")
}) })
Expect(err).NotTo(HaveOccurred()) 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() { Context("when session affinity annotation is present", func() {
It("should use sticky sessions when ingress rules are configured", func() { It("should use sticky sessions when ingress rules are configured", func() {
cookieName := "STICKYSESSION" cookieName := "STICKYSESSION"
@ -193,12 +196,10 @@ var _ = framework.IngressNginxDescribe("Dynamic Configuration", func() {
} }
_, err = f.KubeClientSet.ExtensionsV1beta1().Ingresses(f.IngressController.Namespace).Update(ingress) _, err = f.KubeClientSet.ExtensionsV1beta1().Ingresses(f.IngressController.Namespace).Update(ingress)
Expect(err).ToNot(HaveOccurred()) Expect(err).ToNot(HaveOccurred())
time.Sleep(5 * time.Second)
By("Increasing the number of service replicas") By("Increasing the number of service replicas")
err = framework.UpdateDeployment(f.KubeClientSet, f.IngressController.Namespace, "http-svc", 2, nil) err = framework.UpdateDeployment(f.KubeClientSet, f.IngressController.Namespace, "http-svc", 2, nil)
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
time.Sleep(5 * time.Second) time.Sleep(5 * time.Second)
By("Making a first request") By("Making a first request")
@ -250,8 +251,8 @@ var _ = framework.IngressNginxDescribe("Dynamic Configuration", func() {
By("Updating affinity annotation and rules on ingress") By("Updating affinity annotation and rules on ingress")
ingress, err := f.KubeClientSet.ExtensionsV1beta1().Ingresses(f.IngressController.Namespace).Get("foo.com", metav1.GetOptions{}) ingress, err := f.KubeClientSet.ExtensionsV1beta1().Ingresses(f.IngressController.Namespace).Get("foo.com", metav1.GetOptions{})
Expect(err).ToNot(HaveOccurred()) Expect(err).ToNot(HaveOccurred())
ingress.Spec = v1beta1.IngressSpec{ ingress.Spec = extensions.IngressSpec{
Backend: &v1beta1.IngressBackend{ Backend: &extensions.IngressBackend{
ServiceName: "http-svc", ServiceName: "http-svc",
ServicePort: intstr.FromInt(80), ServicePort: intstr.FromInt(80),
}, },
@ -290,8 +291,6 @@ func enableDynamicConfiguration(namespace string, kubeClientSet kubernetes.Inter
return err return err
} }
time.Sleep(5 * time.Second)
return nil return nil
}) })
} }