use framework.ExpectNoError() for e2e/network/ingress.go service.go
This commit is contained in:
		| @@ -94,7 +94,7 @@ var _ = SIGDescribe("Loadbalancing: L7", func() { | |||||||
| 				Cloud:  framework.TestContext.CloudConfig, | 				Cloud:  framework.TestContext.CloudConfig, | ||||||
| 			} | 			} | ||||||
| 			err := gceController.Init() | 			err := gceController.Init() | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 			framework.ExpectNoError(err) | ||||||
| 		}) | 		}) | ||||||
|  |  | ||||||
| 		// Platform specific cleanup | 		// Platform specific cleanup | ||||||
| @@ -110,7 +110,8 @@ var _ = SIGDescribe("Loadbalancing: L7", func() { | |||||||
| 			jig.TryDeleteIngress() | 			jig.TryDeleteIngress() | ||||||
|  |  | ||||||
| 			ginkgo.By("Cleaning up cloud resources") | 			ginkgo.By("Cleaning up cloud resources") | ||||||
| 			gomega.Expect(gceController.CleanupIngressController()).NotTo(gomega.HaveOccurred()) | 			err := gceController.CleanupIngressController() | ||||||
|  | 			framework.ExpectNoError(err) | ||||||
| 		}) | 		}) | ||||||
|  |  | ||||||
| 		ginkgo.It("should conform to Ingress spec", func() { | 		ginkgo.It("should conform to Ingress spec", func() { | ||||||
| @@ -143,7 +144,7 @@ var _ = SIGDescribe("Loadbalancing: L7", func() { | |||||||
| 			} | 			} | ||||||
| 			for i, host := range hosts { | 			for i, host := range hosts { | ||||||
| 				err := jig.WaitForIngressWithCert(true, []string{host}, certs[i]) | 				err := jig.WaitForIngressWithCert(true, []string{host}, certs[i]) | ||||||
| 				gomega.Expect(err).NotTo(gomega.HaveOccurred(), fmt.Sprintf("Unexpected error while waiting for ingress: %v", err)) | 				framework.ExpectNoError(err, fmt.Sprintf("Unexpected error while waiting for ingress: %v", err)) | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			ginkgo.By("Remove all but one of the certs on the ingress.") | 			ginkgo.By("Remove all but one of the certs on the ingress.") | ||||||
| @@ -153,13 +154,13 @@ var _ = SIGDescribe("Loadbalancing: L7", func() { | |||||||
|  |  | ||||||
| 			ginkgo.By("Test that the remaining cert is properly served.") | 			ginkgo.By("Test that the remaining cert is properly served.") | ||||||
| 			err := jig.WaitForIngressWithCert(true, []string{hosts[0]}, certs[0]) | 			err := jig.WaitForIngressWithCert(true, []string{hosts[0]}, certs[0]) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred(), fmt.Sprintf("Unexpected error while waiting for ingress: %v", err)) | 			framework.ExpectNoError(err, fmt.Sprintf("Unexpected error while waiting for ingress: %v", err)) | ||||||
|  |  | ||||||
| 			ginkgo.By("Add back one of the certs that was removed and check that all certs are served.") | 			ginkgo.By("Add back one of the certs that was removed and check that all certs are served.") | ||||||
| 			jig.AddHTTPS(secrets[1], hosts[1]) | 			jig.AddHTTPS(secrets[1], hosts[1]) | ||||||
| 			for i, host := range hosts[:2] { | 			for i, host := range hosts[:2] { | ||||||
| 				err := jig.WaitForIngressWithCert(true, []string{host}, certs[i]) | 				err := jig.WaitForIngressWithCert(true, []string{host}, certs[i]) | ||||||
| 				gomega.Expect(err).NotTo(gomega.HaveOccurred(), fmt.Sprintf("Unexpected error while waiting for ingress: %v", err)) | 				framework.ExpectNoError(err, fmt.Sprintf("Unexpected error while waiting for ingress: %v", err)) | ||||||
| 			} | 			} | ||||||
| 		}) | 		}) | ||||||
|  |  | ||||||
| @@ -250,7 +251,7 @@ var _ = SIGDescribe("Loadbalancing: L7", func() { | |||||||
| 				Cloud:  framework.TestContext.CloudConfig, | 				Cloud:  framework.TestContext.CloudConfig, | ||||||
| 			} | 			} | ||||||
| 			err := gceController.Init() | 			err := gceController.Init() | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 			framework.ExpectNoError(err) | ||||||
| 		}) | 		}) | ||||||
|  |  | ||||||
| 		// Platform specific cleanup | 		// Platform specific cleanup | ||||||
| @@ -266,7 +267,8 @@ var _ = SIGDescribe("Loadbalancing: L7", func() { | |||||||
| 			jig.TryDeleteIngress() | 			jig.TryDeleteIngress() | ||||||
|  |  | ||||||
| 			ginkgo.By("Cleaning up cloud resources") | 			ginkgo.By("Cleaning up cloud resources") | ||||||
| 			gomega.Expect(gceController.CleanupIngressController()).NotTo(gomega.HaveOccurred()) | 			err := gceController.CleanupIngressController() | ||||||
|  | 			framework.ExpectNoError(err) | ||||||
| 		}) | 		}) | ||||||
|  |  | ||||||
| 		ginkgo.It("should conform to Ingress spec", func() { | 		ginkgo.It("should conform to Ingress spec", func() { | ||||||
| @@ -279,7 +281,8 @@ var _ = SIGDescribe("Loadbalancing: L7", func() { | |||||||
| 				t.Execute() | 				t.Execute() | ||||||
| 				ginkgo.By(t.ExitLog) | 				ginkgo.By(t.ExitLog) | ||||||
| 				jig.WaitForIngress(true) | 				jig.WaitForIngress(true) | ||||||
| 				gomega.Expect(gceController.WaitForNegBackendService(jig.GetServicePorts(false))).NotTo(gomega.HaveOccurred()) | 				err := gceController.WaitForNegBackendService(jig.GetServicePorts(false)) | ||||||
|  | 				framework.ExpectNoError(err) | ||||||
| 			} | 			} | ||||||
| 		}) | 		}) | ||||||
|  |  | ||||||
| @@ -288,15 +291,16 @@ var _ = SIGDescribe("Loadbalancing: L7", func() { | |||||||
| 			ginkgo.By("Create a basic HTTP ingress using NEG") | 			ginkgo.By("Create a basic HTTP ingress using NEG") | ||||||
| 			jig.CreateIngress(filepath.Join(ingress.IngressManifestPath, "neg"), ns, map[string]string{}, map[string]string{}) | 			jig.CreateIngress(filepath.Join(ingress.IngressManifestPath, "neg"), ns, map[string]string{}, map[string]string{}) | ||||||
| 			jig.WaitForIngress(true) | 			jig.WaitForIngress(true) | ||||||
| 			gomega.Expect(gceController.WaitForNegBackendService(jig.GetServicePorts(false))).NotTo(gomega.HaveOccurred()) | 			err = gceController.WaitForNegBackendService(jig.GetServicePorts(false)) | ||||||
|  | 			framework.ExpectNoError(err) | ||||||
|  |  | ||||||
| 			ginkgo.By("Switch backend service to use IG") | 			ginkgo.By("Switch backend service to use IG") | ||||||
| 			svcList, err := f.ClientSet.CoreV1().Services(ns).List(metav1.ListOptions{}) | 			svcList, err := f.ClientSet.CoreV1().Services(ns).List(metav1.ListOptions{}) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 			framework.ExpectNoError(err) | ||||||
| 			for _, svc := range svcList.Items { | 			for _, svc := range svcList.Items { | ||||||
| 				svc.Annotations[ingress.NEGAnnotation] = `{"ingress": false}` | 				svc.Annotations[ingress.NEGAnnotation] = `{"ingress": false}` | ||||||
| 				_, err = f.ClientSet.CoreV1().Services(ns).Update(&svc) | 				_, err = f.ClientSet.CoreV1().Services(ns).Update(&svc) | ||||||
| 				gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 				framework.ExpectNoError(err) | ||||||
| 			} | 			} | ||||||
| 			err = wait.Poll(5*time.Second, framework.LoadBalancerPollTimeout, func() (bool, error) { | 			err = wait.Poll(5*time.Second, framework.LoadBalancerPollTimeout, func() (bool, error) { | ||||||
| 				if err := gceController.BackendServiceUsingIG(jig.GetServicePorts(false)); err != nil { | 				if err := gceController.BackendServiceUsingIG(jig.GetServicePorts(false)); err != nil { | ||||||
| @@ -305,16 +309,16 @@ var _ = SIGDescribe("Loadbalancing: L7", func() { | |||||||
| 				} | 				} | ||||||
| 				return true, nil | 				return true, nil | ||||||
| 			}) | 			}) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred(), "Expect backend service to target IG, but failed to observe") | 			framework.ExpectNoError(err, "Expect backend service to target IG, but failed to observe") | ||||||
| 			jig.WaitForIngress(true) | 			jig.WaitForIngress(true) | ||||||
|  |  | ||||||
| 			ginkgo.By("Switch backend service to use NEG") | 			ginkgo.By("Switch backend service to use NEG") | ||||||
| 			svcList, err = f.ClientSet.CoreV1().Services(ns).List(metav1.ListOptions{}) | 			svcList, err = f.ClientSet.CoreV1().Services(ns).List(metav1.ListOptions{}) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 			framework.ExpectNoError(err) | ||||||
| 			for _, svc := range svcList.Items { | 			for _, svc := range svcList.Items { | ||||||
| 				svc.Annotations[ingress.NEGAnnotation] = `{"ingress": true}` | 				svc.Annotations[ingress.NEGAnnotation] = `{"ingress": true}` | ||||||
| 				_, err = f.ClientSet.CoreV1().Services(ns).Update(&svc) | 				_, err = f.ClientSet.CoreV1().Services(ns).Update(&svc) | ||||||
| 				gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 				framework.ExpectNoError(err) | ||||||
| 			} | 			} | ||||||
| 			err = wait.Poll(5*time.Second, framework.LoadBalancerPollTimeout, func() (bool, error) { | 			err = wait.Poll(5*time.Second, framework.LoadBalancerPollTimeout, func() (bool, error) { | ||||||
| 				if err := gceController.BackendServiceUsingNEG(jig.GetServicePorts(false)); err != nil { | 				if err := gceController.BackendServiceUsingNEG(jig.GetServicePorts(false)); err != nil { | ||||||
| @@ -323,7 +327,7 @@ var _ = SIGDescribe("Loadbalancing: L7", func() { | |||||||
| 				} | 				} | ||||||
| 				return true, nil | 				return true, nil | ||||||
| 			}) | 			}) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred(), "Expect backend service to target NEG, but failed to observe") | 			framework.ExpectNoError(err, "Expect backend service to target NEG, but failed to observe") | ||||||
| 			jig.WaitForIngress(true) | 			jig.WaitForIngress(true) | ||||||
| 		}) | 		}) | ||||||
|  |  | ||||||
| @@ -332,7 +336,8 @@ var _ = SIGDescribe("Loadbalancing: L7", func() { | |||||||
| 			jig.CreateIngress(filepath.Join(ingress.IngressManifestPath, "neg-clusterip"), ns, map[string]string{}, map[string]string{}) | 			jig.CreateIngress(filepath.Join(ingress.IngressManifestPath, "neg-clusterip"), ns, map[string]string{}, map[string]string{}) | ||||||
| 			jig.WaitForIngress(true) | 			jig.WaitForIngress(true) | ||||||
| 			svcPorts := jig.GetServicePorts(false) | 			svcPorts := jig.GetServicePorts(false) | ||||||
| 			gomega.Expect(gceController.WaitForNegBackendService(svcPorts)).NotTo(gomega.HaveOccurred()) | 			err := gceController.WaitForNegBackendService(svcPorts) | ||||||
|  | 			framework.ExpectNoError(err) | ||||||
|  |  | ||||||
| 			// ClusterIP ServicePorts have no NodePort | 			// ClusterIP ServicePorts have no NodePort | ||||||
| 			for _, sp := range svcPorts { | 			for _, sp := range svcPorts { | ||||||
| @@ -344,11 +349,11 @@ var _ = SIGDescribe("Loadbalancing: L7", func() { | |||||||
| 			name := "hostname" | 			name := "hostname" | ||||||
| 			scaleAndValidateNEG := func(num int) { | 			scaleAndValidateNEG := func(num int) { | ||||||
| 				scale, err := f.ClientSet.AppsV1().Deployments(ns).GetScale(name, metav1.GetOptions{}) | 				scale, err := f.ClientSet.AppsV1().Deployments(ns).GetScale(name, metav1.GetOptions{}) | ||||||
| 				gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 				framework.ExpectNoError(err) | ||||||
| 				if scale.Spec.Replicas != int32(num) { | 				if scale.Spec.Replicas != int32(num) { | ||||||
| 					scale.Spec.Replicas = int32(num) | 					scale.Spec.Replicas = int32(num) | ||||||
| 					_, err = f.ClientSet.AppsV1().Deployments(ns).UpdateScale(name, scale) | 					_, err = f.ClientSet.AppsV1().Deployments(ns).UpdateScale(name, scale) | ||||||
| 					gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 					framework.ExpectNoError(err) | ||||||
| 				} | 				} | ||||||
| 				err = wait.Poll(10*time.Second, negUpdateTimeout, func() (bool, error) { | 				err = wait.Poll(10*time.Second, negUpdateTimeout, func() (bool, error) { | ||||||
| 					res, err := jig.GetDistinctResponseFromIngress() | 					res, err := jig.GetDistinctResponseFromIngress() | ||||||
| @@ -358,14 +363,15 @@ var _ = SIGDescribe("Loadbalancing: L7", func() { | |||||||
| 					e2elog.Logf("Expecting %d backends, got %d", num, res.Len()) | 					e2elog.Logf("Expecting %d backends, got %d", num, res.Len()) | ||||||
| 					return res.Len() == num, nil | 					return res.Len() == num, nil | ||||||
| 				}) | 				}) | ||||||
| 				gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 				framework.ExpectNoError(err) | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			ginkgo.By("Create a basic HTTP ingress using NEG") | 			ginkgo.By("Create a basic HTTP ingress using NEG") | ||||||
| 			jig.CreateIngress(filepath.Join(ingress.IngressManifestPath, "neg"), ns, map[string]string{}, map[string]string{}) | 			jig.CreateIngress(filepath.Join(ingress.IngressManifestPath, "neg"), ns, map[string]string{}, map[string]string{}) | ||||||
| 			jig.WaitForIngress(true) | 			jig.WaitForIngress(true) | ||||||
| 			jig.WaitForIngressToStable() | 			jig.WaitForIngressToStable() | ||||||
| 			gomega.Expect(gceController.WaitForNegBackendService(jig.GetServicePorts(false))).NotTo(gomega.HaveOccurred()) | 			err := gceController.WaitForNegBackendService(jig.GetServicePorts(false)) | ||||||
|  | 			framework.ExpectNoError(err) | ||||||
| 			// initial replicas number is 1 | 			// initial replicas number is 1 | ||||||
| 			scaleAndValidateNEG(1) | 			scaleAndValidateNEG(1) | ||||||
|  |  | ||||||
| @@ -389,14 +395,15 @@ var _ = SIGDescribe("Loadbalancing: L7", func() { | |||||||
| 			jig.CreateIngress(filepath.Join(ingress.IngressManifestPath, "neg"), ns, map[string]string{}, map[string]string{}) | 			jig.CreateIngress(filepath.Join(ingress.IngressManifestPath, "neg"), ns, map[string]string{}, map[string]string{}) | ||||||
| 			jig.WaitForIngress(true) | 			jig.WaitForIngress(true) | ||||||
| 			jig.WaitForIngressToStable() | 			jig.WaitForIngressToStable() | ||||||
| 			gomega.Expect(gceController.WaitForNegBackendService(jig.GetServicePorts(false))).NotTo(gomega.HaveOccurred()) | 			err := gceController.WaitForNegBackendService(jig.GetServicePorts(false)) | ||||||
|  | 			framework.ExpectNoError(err) | ||||||
|  |  | ||||||
| 			ginkgo.By(fmt.Sprintf("Scale backend replicas to %d", replicas)) | 			ginkgo.By(fmt.Sprintf("Scale backend replicas to %d", replicas)) | ||||||
| 			scale, err := f.ClientSet.AppsV1().Deployments(ns).GetScale(name, metav1.GetOptions{}) | 			scale, err := f.ClientSet.AppsV1().Deployments(ns).GetScale(name, metav1.GetOptions{}) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 			framework.ExpectNoError(err) | ||||||
| 			scale.Spec.Replicas = int32(replicas) | 			scale.Spec.Replicas = int32(replicas) | ||||||
| 			_, err = f.ClientSet.AppsV1().Deployments(ns).UpdateScale(name, scale) | 			_, err = f.ClientSet.AppsV1().Deployments(ns).UpdateScale(name, scale) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 			framework.ExpectNoError(err) | ||||||
|  |  | ||||||
| 			err = wait.Poll(10*time.Second, framework.LoadBalancerPollTimeout, func() (bool, error) { | 			err = wait.Poll(10*time.Second, framework.LoadBalancerPollTimeout, func() (bool, error) { | ||||||
| 				res, err := jig.GetDistinctResponseFromIngress() | 				res, err := jig.GetDistinctResponseFromIngress() | ||||||
| @@ -405,21 +412,21 @@ var _ = SIGDescribe("Loadbalancing: L7", func() { | |||||||
| 				} | 				} | ||||||
| 				return res.Len() == replicas, nil | 				return res.Len() == replicas, nil | ||||||
| 			}) | 			}) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 			framework.ExpectNoError(err) | ||||||
|  |  | ||||||
| 			ginkgo.By("Trigger rolling update and observe service disruption") | 			ginkgo.By("Trigger rolling update and observe service disruption") | ||||||
| 			deploy, err := f.ClientSet.AppsV1().Deployments(ns).Get(name, metav1.GetOptions{}) | 			deploy, err := f.ClientSet.AppsV1().Deployments(ns).Get(name, metav1.GetOptions{}) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 			framework.ExpectNoError(err) | ||||||
| 			// trigger by changing graceful termination period to 60 seconds | 			// trigger by changing graceful termination period to 60 seconds | ||||||
| 			gracePeriod := int64(60) | 			gracePeriod := int64(60) | ||||||
| 			deploy.Spec.Template.Spec.TerminationGracePeriodSeconds = &gracePeriod | 			deploy.Spec.Template.Spec.TerminationGracePeriodSeconds = &gracePeriod | ||||||
| 			_, err = f.ClientSet.AppsV1().Deployments(ns).Update(deploy) | 			_, err = f.ClientSet.AppsV1().Deployments(ns).Update(deploy) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 			framework.ExpectNoError(err) | ||||||
| 			err = wait.Poll(10*time.Second, framework.LoadBalancerPollTimeout, func() (bool, error) { | 			err = wait.Poll(10*time.Second, framework.LoadBalancerPollTimeout, func() (bool, error) { | ||||||
| 				res, err := jig.GetDistinctResponseFromIngress() | 				res, err := jig.GetDistinctResponseFromIngress() | ||||||
| 				gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 				framework.ExpectNoError(err) | ||||||
| 				deploy, err := f.ClientSet.AppsV1().Deployments(ns).Get(name, metav1.GetOptions{}) | 				deploy, err := f.ClientSet.AppsV1().Deployments(ns).Get(name, metav1.GetOptions{}) | ||||||
| 				gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 				framework.ExpectNoError(err) | ||||||
| 				if int(deploy.Status.UpdatedReplicas) == replicas { | 				if int(deploy.Status.UpdatedReplicas) == replicas { | ||||||
| 					if res.Len() == replicas { | 					if res.Len() == replicas { | ||||||
| 						return true, nil | 						return true, nil | ||||||
| @@ -431,7 +438,7 @@ var _ = SIGDescribe("Loadbalancing: L7", func() { | |||||||
| 				e2elog.Logf("Waiting for rolling update to finished. Keep sending traffic.") | 				e2elog.Logf("Waiting for rolling update to finished. Keep sending traffic.") | ||||||
| 				return false, nil | 				return false, nil | ||||||
| 			}) | 			}) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 			framework.ExpectNoError(err) | ||||||
| 		}) | 		}) | ||||||
|  |  | ||||||
| 		ginkgo.It("should sync endpoints for both Ingress-referenced NEG and standalone NEG", func() { | 		ginkgo.It("should sync endpoints for both Ingress-referenced NEG and standalone NEG", func() { | ||||||
| @@ -440,15 +447,15 @@ var _ = SIGDescribe("Loadbalancing: L7", func() { | |||||||
|  |  | ||||||
| 			scaleAndValidateExposedNEG := func(num int) { | 			scaleAndValidateExposedNEG := func(num int) { | ||||||
| 				scale, err := f.ClientSet.AppsV1().Deployments(ns).GetScale(name, metav1.GetOptions{}) | 				scale, err := f.ClientSet.AppsV1().Deployments(ns).GetScale(name, metav1.GetOptions{}) | ||||||
| 				gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 				framework.ExpectNoError(err) | ||||||
| 				if scale.Spec.Replicas != int32(num) { | 				if scale.Spec.Replicas != int32(num) { | ||||||
| 					scale.Spec.Replicas = int32(num) | 					scale.Spec.Replicas = int32(num) | ||||||
| 					_, err = f.ClientSet.AppsV1().Deployments(ns).UpdateScale(name, scale) | 					_, err = f.ClientSet.AppsV1().Deployments(ns).UpdateScale(name, scale) | ||||||
| 					gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 					framework.ExpectNoError(err) | ||||||
| 				} | 				} | ||||||
| 				err = wait.Poll(10*time.Second, negUpdateTimeout, func() (bool, error) { | 				err = wait.Poll(10*time.Second, negUpdateTimeout, func() (bool, error) { | ||||||
| 					svc, err := f.ClientSet.CoreV1().Services(ns).Get(name, metav1.GetOptions{}) | 					svc, err := f.ClientSet.CoreV1().Services(ns).Get(name, metav1.GetOptions{}) | ||||||
| 					gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 					framework.ExpectNoError(err) | ||||||
|  |  | ||||||
| 					var status ingress.NegStatus | 					var status ingress.NegStatus | ||||||
| 					v, ok := svc.Annotations[ingress.NEGStatusAnnotation] | 					v, ok := svc.Annotations[ingress.NEGStatusAnnotation] | ||||||
| @@ -481,10 +488,10 @@ var _ = SIGDescribe("Loadbalancing: L7", func() { | |||||||
| 					} | 					} | ||||||
|  |  | ||||||
| 					gceCloud, err := gce.GetGCECloud() | 					gceCloud, err := gce.GetGCECloud() | ||||||
| 					gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 					framework.ExpectNoError(err) | ||||||
| 					for _, neg := range status.NetworkEndpointGroups { | 					for _, neg := range status.NetworkEndpointGroups { | ||||||
| 						networkEndpoints, err := gceCloud.ListNetworkEndpoints(neg, gceController.Cloud.Zone, false) | 						networkEndpoints, err := gceCloud.ListNetworkEndpoints(neg, gceController.Cloud.Zone, false) | ||||||
| 						gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 						framework.ExpectNoError(err) | ||||||
| 						if len(networkEndpoints) != num { | 						if len(networkEndpoints) != num { | ||||||
| 							e2elog.Logf("Expect number of endpoints to be %d, but got %d", num, len(networkEndpoints)) | 							e2elog.Logf("Expect number of endpoints to be %d, but got %d", num, len(networkEndpoints)) | ||||||
| 							return false, nil | 							return false, nil | ||||||
| @@ -493,13 +500,14 @@ var _ = SIGDescribe("Loadbalancing: L7", func() { | |||||||
|  |  | ||||||
| 					return true, nil | 					return true, nil | ||||||
| 				}) | 				}) | ||||||
| 				gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 				framework.ExpectNoError(err) | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			ginkgo.By("Create a basic HTTP ingress using NEG") | 			ginkgo.By("Create a basic HTTP ingress using NEG") | ||||||
| 			jig.CreateIngress(filepath.Join(ingress.IngressManifestPath, "neg-exposed"), ns, map[string]string{}, map[string]string{}) | 			jig.CreateIngress(filepath.Join(ingress.IngressManifestPath, "neg-exposed"), ns, map[string]string{}, map[string]string{}) | ||||||
| 			jig.WaitForIngress(true) | 			jig.WaitForIngress(true) | ||||||
| 			gomega.Expect(gceController.WaitForNegBackendService(jig.GetServicePorts(false))).NotTo(gomega.HaveOccurred()) | 			err := gceController.WaitForNegBackendService(jig.GetServicePorts(false)) | ||||||
|  | 			framework.ExpectNoError(err) | ||||||
| 			// initial replicas number is 1 | 			// initial replicas number is 1 | ||||||
| 			scaleAndValidateExposedNEG(1) | 			scaleAndValidateExposedNEG(1) | ||||||
|  |  | ||||||
| @@ -527,46 +535,46 @@ var _ = SIGDescribe("Loadbalancing: L7", func() { | |||||||
| 			// Add Ingress annotation - NEGs should stay the same. | 			// Add Ingress annotation - NEGs should stay the same. | ||||||
| 			ginkgo.By("Adding NEG Ingress annotation") | 			ginkgo.By("Adding NEG Ingress annotation") | ||||||
| 			svcList, err := f.ClientSet.CoreV1().Services(ns).List(metav1.ListOptions{}) | 			svcList, err := f.ClientSet.CoreV1().Services(ns).List(metav1.ListOptions{}) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 			framework.ExpectNoError(err) | ||||||
| 			for _, svc := range svcList.Items { | 			for _, svc := range svcList.Items { | ||||||
| 				svc.Annotations[ingress.NEGAnnotation] = `{"ingress":true,"exposed_ports":{"80":{},"443":{}}}` | 				svc.Annotations[ingress.NEGAnnotation] = `{"ingress":true,"exposed_ports":{"80":{},"443":{}}}` | ||||||
| 				_, err = f.ClientSet.CoreV1().Services(ns).Update(&svc) | 				_, err = f.ClientSet.CoreV1().Services(ns).Update(&svc) | ||||||
| 				gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 				framework.ExpectNoError(err) | ||||||
| 			} | 			} | ||||||
| 			detectNegAnnotation(f, jig, gceController, ns, name, 2) | 			detectNegAnnotation(f, jig, gceController, ns, name, 2) | ||||||
|  |  | ||||||
| 			// Modify exposed NEG annotation, but keep ingress annotation | 			// Modify exposed NEG annotation, but keep ingress annotation | ||||||
| 			ginkgo.By("Modifying exposed NEG annotation, but keep Ingress annotation") | 			ginkgo.By("Modifying exposed NEG annotation, but keep Ingress annotation") | ||||||
| 			svcList, err = f.ClientSet.CoreV1().Services(ns).List(metav1.ListOptions{}) | 			svcList, err = f.ClientSet.CoreV1().Services(ns).List(metav1.ListOptions{}) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 			framework.ExpectNoError(err) | ||||||
| 			for _, svc := range svcList.Items { | 			for _, svc := range svcList.Items { | ||||||
| 				svc.Annotations[ingress.NEGAnnotation] = `{"ingress":true,"exposed_ports":{"443":{}}}` | 				svc.Annotations[ingress.NEGAnnotation] = `{"ingress":true,"exposed_ports":{"443":{}}}` | ||||||
| 				_, err = f.ClientSet.CoreV1().Services(ns).Update(&svc) | 				_, err = f.ClientSet.CoreV1().Services(ns).Update(&svc) | ||||||
| 				gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 				framework.ExpectNoError(err) | ||||||
| 			} | 			} | ||||||
| 			detectNegAnnotation(f, jig, gceController, ns, name, 2) | 			detectNegAnnotation(f, jig, gceController, ns, name, 2) | ||||||
|  |  | ||||||
| 			// Remove Ingress annotation. Expect 1 NEG | 			// Remove Ingress annotation. Expect 1 NEG | ||||||
| 			ginkgo.By("Disabling Ingress annotation, but keeping one standalone NEG") | 			ginkgo.By("Disabling Ingress annotation, but keeping one standalone NEG") | ||||||
| 			svcList, err = f.ClientSet.CoreV1().Services(ns).List(metav1.ListOptions{}) | 			svcList, err = f.ClientSet.CoreV1().Services(ns).List(metav1.ListOptions{}) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 			framework.ExpectNoError(err) | ||||||
| 			for _, svc := range svcList.Items { | 			for _, svc := range svcList.Items { | ||||||
| 				svc.Annotations[ingress.NEGAnnotation] = `{"ingress":false,"exposed_ports":{"443":{}}}` | 				svc.Annotations[ingress.NEGAnnotation] = `{"ingress":false,"exposed_ports":{"443":{}}}` | ||||||
| 				_, err = f.ClientSet.CoreV1().Services(ns).Update(&svc) | 				_, err = f.ClientSet.CoreV1().Services(ns).Update(&svc) | ||||||
| 				gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 				framework.ExpectNoError(err) | ||||||
| 			} | 			} | ||||||
| 			detectNegAnnotation(f, jig, gceController, ns, name, 1) | 			detectNegAnnotation(f, jig, gceController, ns, name, 1) | ||||||
|  |  | ||||||
| 			// Remove NEG annotation entirely. Expect 0 NEGs. | 			// Remove NEG annotation entirely. Expect 0 NEGs. | ||||||
| 			ginkgo.By("Removing NEG annotation") | 			ginkgo.By("Removing NEG annotation") | ||||||
| 			svcList, err = f.ClientSet.CoreV1().Services(ns).List(metav1.ListOptions{}) | 			svcList, err = f.ClientSet.CoreV1().Services(ns).List(metav1.ListOptions{}) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 			framework.ExpectNoError(err) | ||||||
| 			for _, svc := range svcList.Items { | 			for _, svc := range svcList.Items { | ||||||
| 				delete(svc.Annotations, ingress.NEGAnnotation) | 				delete(svc.Annotations, ingress.NEGAnnotation) | ||||||
| 				// Service cannot be ClusterIP if it's using Instance Groups. | 				// Service cannot be ClusterIP if it's using Instance Groups. | ||||||
| 				svc.Spec.Type = v1.ServiceTypeNodePort | 				svc.Spec.Type = v1.ServiceTypeNodePort | ||||||
| 				_, err = f.ClientSet.CoreV1().Services(ns).Update(&svc) | 				_, err = f.ClientSet.CoreV1().Services(ns).Update(&svc) | ||||||
| 				gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 				framework.ExpectNoError(err) | ||||||
| 			} | 			} | ||||||
| 			detectNegAnnotation(f, jig, gceController, ns, name, 0) | 			detectNegAnnotation(f, jig, gceController, ns, name, 0) | ||||||
| 		}) | 		}) | ||||||
| @@ -588,7 +596,7 @@ var _ = SIGDescribe("Loadbalancing: L7", func() { | |||||||
| 				Cloud:  framework.TestContext.CloudConfig, | 				Cloud:  framework.TestContext.CloudConfig, | ||||||
| 			} | 			} | ||||||
| 			err := gceController.Init() | 			err := gceController.Init() | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 			framework.ExpectNoError(err) | ||||||
|  |  | ||||||
| 			// TODO(https://github.com/GoogleCloudPlatform/k8s-multicluster-ingress/issues/19): | 			// TODO(https://github.com/GoogleCloudPlatform/k8s-multicluster-ingress/issues/19): | ||||||
| 			// Kubemci should reserve a static ip if user has not specified one. | 			// Kubemci should reserve a static ip if user has not specified one. | ||||||
| @@ -611,7 +619,8 @@ var _ = SIGDescribe("Loadbalancing: L7", func() { | |||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			ginkgo.By("Cleaning up cloud resources") | 			ginkgo.By("Cleaning up cloud resources") | ||||||
| 			gomega.Expect(gceController.CleanupIngressController()).NotTo(gomega.HaveOccurred()) | 			err := gceController.CleanupIngressController() | ||||||
|  | 			framework.ExpectNoError(err) | ||||||
| 		}) | 		}) | ||||||
|  |  | ||||||
| 		ginkgo.It("should conform to Ingress spec", func() { | 		ginkgo.It("should conform to Ingress spec", func() { | ||||||
| @@ -768,9 +777,9 @@ func executePresharedCertTest(f *framework.Framework, jig *ingress.TestJig, stat | |||||||
| 	ginkgo.By(fmt.Sprintf("Creating ssl certificate %q on GCE", preSharedCertName)) | 	ginkgo.By(fmt.Sprintf("Creating ssl certificate %q on GCE", preSharedCertName)) | ||||||
| 	testHostname := "test.ingress.com" | 	testHostname := "test.ingress.com" | ||||||
| 	cert, key, err := ingress.GenerateRSACerts(testHostname, true) | 	cert, key, err := ingress.GenerateRSACerts(testHostname, true) | ||||||
| 	gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 	framework.ExpectNoError(err) | ||||||
| 	gceCloud, err := gce.GetGCECloud() | 	gceCloud, err := gce.GetGCECloud() | ||||||
| 	gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 	framework.ExpectNoError(err) | ||||||
| 	defer func() { | 	defer func() { | ||||||
| 		// We would not be able to delete the cert until ingress controller | 		// We would not be able to delete the cert until ingress controller | ||||||
| 		// cleans up the target proxy that references it. | 		// cleans up the target proxy that references it. | ||||||
| @@ -786,7 +795,7 @@ func executePresharedCertTest(f *framework.Framework, jig *ingress.TestJig, stat | |||||||
| 			} | 			} | ||||||
| 			return true, nil | 			return true, nil | ||||||
| 		}) | 		}) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), fmt.Sprintf("ginkgo.Failed to delete ssl certificate %q: %v", preSharedCertName, err)) | 		framework.ExpectNoError(err, fmt.Sprintf("ginkgo.Failed to delete ssl certificate %q: %v", preSharedCertName, err)) | ||||||
| 	}() | 	}() | ||||||
| 	_, err = gceCloud.CreateSslCertificate(&compute.SslCertificate{ | 	_, err = gceCloud.CreateSslCertificate(&compute.SslCertificate{ | ||||||
| 		Name:        preSharedCertName, | 		Name:        preSharedCertName, | ||||||
| @@ -794,7 +803,7 @@ func executePresharedCertTest(f *framework.Framework, jig *ingress.TestJig, stat | |||||||
| 		PrivateKey:  string(key), | 		PrivateKey:  string(key), | ||||||
| 		Description: "pre-shared cert for ingress testing", | 		Description: "pre-shared cert for ingress testing", | ||||||
| 	}) | 	}) | ||||||
| 	gomega.Expect(err).NotTo(gomega.HaveOccurred(), fmt.Sprintf("ginkgo.Failed to create ssl certificate %q: %v", preSharedCertName, err)) | 	framework.ExpectNoError(err, fmt.Sprintf("ginkgo.Failed to create ssl certificate %q: %v", preSharedCertName, err)) | ||||||
|  |  | ||||||
| 	ginkgo.By("Creating an ingress referencing the pre-shared certificate") | 	ginkgo.By("Creating an ingress referencing the pre-shared certificate") | ||||||
| 	// Create an ingress referencing this cert using pre-shared-cert annotation. | 	// Create an ingress referencing this cert using pre-shared-cert annotation. | ||||||
| @@ -811,7 +820,7 @@ func executePresharedCertTest(f *framework.Framework, jig *ingress.TestJig, stat | |||||||
|  |  | ||||||
| 	ginkgo.By("Test that ingress works with the pre-shared certificate") | 	ginkgo.By("Test that ingress works with the pre-shared certificate") | ||||||
| 	err = jig.WaitForIngressWithCert(true, []string{testHostname}, cert) | 	err = jig.WaitForIngressWithCert(true, []string{testHostname}, cert) | ||||||
| 	gomega.Expect(err).NotTo(gomega.HaveOccurred(), fmt.Sprintf("Unexpected error while waiting for ingress: %v", err)) | 	framework.ExpectNoError(err, fmt.Sprintf("Unexpected error while waiting for ingress: %v", err)) | ||||||
| } | } | ||||||
|  |  | ||||||
| func executeStaticIPHttpsOnlyTest(f *framework.Framework, jig *ingress.TestJig, ipName, ip string) { | func executeStaticIPHttpsOnlyTest(f *framework.Framework, jig *ingress.TestJig, ipName, ip string) { | ||||||
| @@ -837,11 +846,11 @@ func executeBacksideBacksideHTTPSTest(f *framework.Framework, jig *ingress.TestJ | |||||||
| 			framework.Failf("ginkgo.Failed to cleanup re-encryption ingress: %v", errs) | 			framework.Failf("ginkgo.Failed to cleanup re-encryption ingress: %v", errs) | ||||||
| 		} | 		} | ||||||
| 	}() | 	}() | ||||||
| 	gomega.Expect(err).NotTo(gomega.HaveOccurred(), "ginkgo.Failed to create re-encryption ingress") | 	framework.ExpectNoError(err, "ginkgo.Failed to create re-encryption ingress") | ||||||
|  |  | ||||||
| 	ginkgo.By(fmt.Sprintf("Waiting for ingress %s to come up", ingCreated.Name)) | 	ginkgo.By(fmt.Sprintf("Waiting for ingress %s to come up", ingCreated.Name)) | ||||||
| 	ingIP, err := jig.WaitForIngressAddress(f.ClientSet, f.Namespace.Name, ingCreated.Name, framework.LoadBalancerPollTimeout) | 	ingIP, err := jig.WaitForIngressAddress(f.ClientSet, f.Namespace.Name, ingCreated.Name, framework.LoadBalancerPollTimeout) | ||||||
| 	gomega.Expect(err).NotTo(gomega.HaveOccurred(), "ginkgo.Failed to wait for ingress IP") | 	framework.ExpectNoError(err, "ginkgo.Failed to wait for ingress IP") | ||||||
|  |  | ||||||
| 	ginkgo.By(fmt.Sprintf("Polling on address %s and verify the backend is serving HTTPS", ingIP)) | 	ginkgo.By(fmt.Sprintf("Polling on address %s and verify the backend is serving HTTPS", ingIP)) | ||||||
| 	timeoutClient := &http.Client{Timeout: ingress.IngressReqTimeout} | 	timeoutClient := &http.Client{Timeout: ingress.IngressReqTimeout} | ||||||
| @@ -857,7 +866,7 @@ func executeBacksideBacksideHTTPSTest(f *framework.Framework, jig *ingress.TestJ | |||||||
| 		e2elog.Logf("Poll succeeded, request was served by HTTPS") | 		e2elog.Logf("Poll succeeded, request was served by HTTPS") | ||||||
| 		return true, nil | 		return true, nil | ||||||
| 	}) | 	}) | ||||||
| 	gomega.Expect(err).NotTo(gomega.HaveOccurred(), "ginkgo.Failed to verify backside re-encryption ingress") | 	framework.ExpectNoError(err, "ginkgo.Failed to verify backside re-encryption ingress") | ||||||
| } | } | ||||||
|  |  | ||||||
| func detectNegAnnotation(f *framework.Framework, jig *ingress.TestJig, gceController *gce.IngressController, ns, name string, negs int) { | func detectNegAnnotation(f *framework.Framework, jig *ingress.TestJig, gceController *gce.IngressController, ns, name string, negs int) { | ||||||
| @@ -897,10 +906,10 @@ func detectNegAnnotation(f *framework.Framework, jig *ingress.TestJig, gceContro | |||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		gceCloud, err := gce.GetGCECloud() | 		gceCloud, err := gce.GetGCECloud() | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 		framework.ExpectNoError(err) | ||||||
| 		for _, neg := range status.NetworkEndpointGroups { | 		for _, neg := range status.NetworkEndpointGroups { | ||||||
| 			networkEndpoints, err := gceCloud.ListNetworkEndpoints(neg, gceController.Cloud.Zone, false) | 			networkEndpoints, err := gceCloud.ListNetworkEndpoints(neg, gceController.Cloud.Zone, false) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 			framework.ExpectNoError(err) | ||||||
| 			if len(networkEndpoints) != 1 { | 			if len(networkEndpoints) != 1 { | ||||||
| 				e2elog.Logf("Expect NEG %s to exist, but got %d", neg, len(networkEndpoints)) | 				e2elog.Logf("Expect NEG %s to exist, but got %d", neg, len(networkEndpoints)) | ||||||
| 				return false, nil | 				return false, nil | ||||||
| @@ -914,6 +923,6 @@ func detectNegAnnotation(f *framework.Framework, jig *ingress.TestJig, gceContro | |||||||
| 		} | 		} | ||||||
| 		return true, nil | 		return true, nil | ||||||
| 	}); err != nil { | 	}); err != nil { | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred()) | 		framework.ExpectNoError(err) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|   | |||||||
| @@ -108,7 +108,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 	*/ | 	*/ | ||||||
| 	framework.ConformanceIt("should provide secure master service ", func() { | 	framework.ConformanceIt("should provide secure master service ", func() { | ||||||
| 		_, err := cs.CoreV1().Services(metav1.NamespaceDefault).Get("kubernetes", metav1.GetOptions{}) | 		_, err := cs.CoreV1().Services(metav1.NamespaceDefault).Get("kubernetes", metav1.GetOptions{}) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to fetch the service object for the service named kubernetes") | 		framework.ExpectNoError(err, "failed to fetch the service object for the service named kubernetes") | ||||||
| 	}) | 	}) | ||||||
|  |  | ||||||
| 	/* | 	/* | ||||||
| @@ -128,7 +128,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 		ginkgo.By("creating service " + serviceName + " in namespace " + ns) | 		ginkgo.By("creating service " + serviceName + " in namespace " + ns) | ||||||
| 		defer func() { | 		defer func() { | ||||||
| 			err := cs.CoreV1().Services(ns).Delete(serviceName, nil) | 			err := cs.CoreV1().Services(ns).Delete(serviceName, nil) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to delete service: %s in namespace: %s", serviceName, ns) | 			framework.ExpectNoError(err, "failed to delete service: %s in namespace: %s", serviceName, ns) | ||||||
| 		}() | 		}() | ||||||
| 		ports := []v1.ServicePort{{ | 		ports := []v1.ServicePort{{ | ||||||
| 			Port:       80, | 			Port:       80, | ||||||
| @@ -136,7 +136,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 		}} | 		}} | ||||||
| 		_, err := jig.CreateServiceWithServicePort(labels, ns, ports) | 		_, err := jig.CreateServiceWithServicePort(labels, ns, ports) | ||||||
|  |  | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to create service with ServicePorts in namespace: %s", ns) | 		framework.ExpectNoError(err, "failed to create service with ServicePorts in namespace: %s", ns) | ||||||
|  |  | ||||||
| 		framework.ValidateEndpointsOrFail(cs, ns, serviceName, framework.PortsByPodName{}) | 		framework.ValidateEndpointsOrFail(cs, ns, serviceName, framework.PortsByPodName{}) | ||||||
|  |  | ||||||
| @@ -144,7 +144,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 		defer func() { | 		defer func() { | ||||||
| 			for name := range names { | 			for name := range names { | ||||||
| 				err := cs.CoreV1().Pods(ns).Delete(name, nil) | 				err := cs.CoreV1().Pods(ns).Delete(name, nil) | ||||||
| 				gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to delete pod: %s in namespace: %s", name, ns) | 				framework.ExpectNoError(err, "failed to delete pod: %s in namespace: %s", name, ns) | ||||||
| 			} | 			} | ||||||
| 		}() | 		}() | ||||||
|  |  | ||||||
| @@ -181,7 +181,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
|  |  | ||||||
| 		defer func() { | 		defer func() { | ||||||
| 			err := cs.CoreV1().Services(ns).Delete(serviceName, nil) | 			err := cs.CoreV1().Services(ns).Delete(serviceName, nil) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to delete service: %s in namespace: %s", serviceName, ns) | 			framework.ExpectNoError(err, "failed to delete service: %s in namespace: %s", serviceName, ns) | ||||||
| 		}() | 		}() | ||||||
|  |  | ||||||
| 		labels := map[string]string{"foo": "bar"} | 		labels := map[string]string{"foo": "bar"} | ||||||
| @@ -203,7 +203,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 			}, | 			}, | ||||||
| 		} | 		} | ||||||
| 		_, err := jig.CreateServiceWithServicePort(labels, ns, ports) | 		_, err := jig.CreateServiceWithServicePort(labels, ns, ports) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to create service with ServicePorts in namespace: %s", ns) | 		framework.ExpectNoError(err, "failed to create service with ServicePorts in namespace: %s", ns) | ||||||
| 		port1 := 100 | 		port1 := 100 | ||||||
| 		port2 := 101 | 		port2 := 101 | ||||||
| 		framework.ValidateEndpointsOrFail(cs, ns, serviceName, framework.PortsByPodName{}) | 		framework.ValidateEndpointsOrFail(cs, ns, serviceName, framework.PortsByPodName{}) | ||||||
| @@ -212,7 +212,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 		defer func() { | 		defer func() { | ||||||
| 			for name := range names { | 			for name := range names { | ||||||
| 				err := cs.CoreV1().Pods(ns).Delete(name, nil) | 				err := cs.CoreV1().Pods(ns).Delete(name, nil) | ||||||
| 				gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to delete pod: %s in namespace: %s", name, ns) | 				framework.ExpectNoError(err, "failed to delete pod: %s in namespace: %s", name, ns) | ||||||
| 			} | 			} | ||||||
| 		}() | 		}() | ||||||
|  |  | ||||||
| @@ -272,7 +272,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 		defer func() { | 		defer func() { | ||||||
| 			e2elog.Logf("Cleaning up the sourceip test service") | 			e2elog.Logf("Cleaning up the sourceip test service") | ||||||
| 			err := cs.CoreV1().Services(ns).Delete(serviceName, nil) | 			err := cs.CoreV1().Services(ns).Delete(serviceName, nil) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to delete service: %s in namespace: %s", serviceName, ns) | 			framework.ExpectNoError(err, "failed to delete service: %s in namespace: %s", serviceName, ns) | ||||||
| 		}() | 		}() | ||||||
| 		serviceIP := tcpService.Spec.ClusterIP | 		serviceIP := tcpService.Spec.ClusterIP | ||||||
| 		e2elog.Logf("sourceip-test cluster ip: %s", serviceIP) | 		e2elog.Logf("sourceip-test cluster ip: %s", serviceIP) | ||||||
| @@ -293,7 +293,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 		defer func() { | 		defer func() { | ||||||
| 			e2elog.Logf("Cleaning up the echo server pod") | 			e2elog.Logf("Cleaning up the echo server pod") | ||||||
| 			err := cs.CoreV1().Pods(ns).Delete(serverPodName, nil) | 			err := cs.CoreV1().Pods(ns).Delete(serverPodName, nil) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to delete pod: %s on node: %s", serverPodName, node1.Name) | 			framework.ExpectNoError(err, "failed to delete pod: %s on node: %s", serverPodName, node1.Name) | ||||||
| 		}() | 		}() | ||||||
|  |  | ||||||
| 		// Waiting for service to expose endpoint. | 		// Waiting for service to expose endpoint. | ||||||
| @@ -322,13 +322,13 @@ var _ = SIGDescribe("Services", func() { | |||||||
|  |  | ||||||
| 		ginkgo.By("creating service1 in namespace " + ns) | 		ginkgo.By("creating service1 in namespace " + ns) | ||||||
| 		podNames1, svc1IP, err := framework.StartServeHostnameService(cs, getServeHostnameService("service1"), ns, numPods) | 		podNames1, svc1IP, err := framework.StartServeHostnameService(cs, getServeHostnameService("service1"), ns, numPods) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to create replication controller with service: %s in the namespace: %s", svc1IP, ns) | 		framework.ExpectNoError(err, "failed to create replication controller with service: %s in the namespace: %s", svc1IP, ns) | ||||||
| 		ginkgo.By("creating service2 in namespace " + ns) | 		ginkgo.By("creating service2 in namespace " + ns) | ||||||
| 		podNames2, svc2IP, err := framework.StartServeHostnameService(cs, getServeHostnameService("service2"), ns, numPods) | 		podNames2, svc2IP, err := framework.StartServeHostnameService(cs, getServeHostnameService("service2"), ns, numPods) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to create replication controller with service: %s in the namespace: %s", svc2IP, ns) | 		framework.ExpectNoError(err, "failed to create replication controller with service: %s in the namespace: %s", svc2IP, ns) | ||||||
|  |  | ||||||
| 		hosts, err := e2essh.NodeSSHHosts(cs) | 		hosts, err := e2essh.NodeSSHHosts(cs) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to find external/internal IPs for every node") | 		framework.ExpectNoError(err, "failed to find external/internal IPs for every node") | ||||||
| 		if len(hosts) == 0 { | 		if len(hosts) == 0 { | ||||||
| 			framework.Failf("No ssh-able nodes") | 			framework.Failf("No ssh-able nodes") | ||||||
| 		} | 		} | ||||||
| @@ -352,7 +352,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 		// Start another service and verify both are up. | 		// Start another service and verify both are up. | ||||||
| 		ginkgo.By("creating service3 in namespace " + ns) | 		ginkgo.By("creating service3 in namespace " + ns) | ||||||
| 		podNames3, svc3IP, err := framework.StartServeHostnameService(cs, getServeHostnameService("service3"), ns, numPods) | 		podNames3, svc3IP, err := framework.StartServeHostnameService(cs, getServeHostnameService("service3"), ns, numPods) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to create replication controller with service: %s in the namespace: %s", svc3IP, ns) | 		framework.ExpectNoError(err, "failed to create replication controller with service: %s in the namespace: %s", svc3IP, ns) | ||||||
|  |  | ||||||
| 		if svc2IP == svc3IP { | 		if svc2IP == svc3IP { | ||||||
| 			framework.Failf("service IPs conflict: %v", svc2IP) | 			framework.Failf("service IPs conflict: %v", svc2IP) | ||||||
| @@ -379,20 +379,20 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 			framework.ExpectNoError(framework.StopServeHostnameService(f.ClientSet, ns, svc1)) | 			framework.ExpectNoError(framework.StopServeHostnameService(f.ClientSet, ns, svc1)) | ||||||
| 		}() | 		}() | ||||||
| 		podNames1, svc1IP, err := framework.StartServeHostnameService(cs, getServeHostnameService(svc1), ns, numPods) | 		podNames1, svc1IP, err := framework.StartServeHostnameService(cs, getServeHostnameService(svc1), ns, numPods) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to create replication controller with service: %s in the namespace: %s", svc1IP, ns) | 		framework.ExpectNoError(err, "failed to create replication controller with service: %s in the namespace: %s", svc1IP, ns) | ||||||
|  |  | ||||||
| 		defer func() { | 		defer func() { | ||||||
| 			framework.ExpectNoError(framework.StopServeHostnameService(f.ClientSet, ns, svc2)) | 			framework.ExpectNoError(framework.StopServeHostnameService(f.ClientSet, ns, svc2)) | ||||||
| 		}() | 		}() | ||||||
| 		podNames2, svc2IP, err := framework.StartServeHostnameService(cs, getServeHostnameService(svc2), ns, numPods) | 		podNames2, svc2IP, err := framework.StartServeHostnameService(cs, getServeHostnameService(svc2), ns, numPods) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to create replication controller with service: %s in the namespace: %s", svc2IP, ns) | 		framework.ExpectNoError(err, "failed to create replication controller with service: %s in the namespace: %s", svc2IP, ns) | ||||||
|  |  | ||||||
| 		if svc1IP == svc2IP { | 		if svc1IP == svc2IP { | ||||||
| 			framework.Failf("VIPs conflict: %v", svc1IP) | 			framework.Failf("VIPs conflict: %v", svc1IP) | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		hosts, err := e2essh.NodeSSHHosts(cs) | 		hosts, err := e2essh.NodeSSHHosts(cs) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to find external/internal IPs for every node") | 		framework.ExpectNoError(err, "failed to find external/internal IPs for every node") | ||||||
| 		if len(hosts) == 0 { | 		if len(hosts) == 0 { | ||||||
| 			framework.Failf("No ssh-able nodes") | 			framework.Failf("No ssh-able nodes") | ||||||
| 		} | 		} | ||||||
| @@ -432,10 +432,10 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 			framework.ExpectNoError(framework.StopServeHostnameService(f.ClientSet, ns, "service1")) | 			framework.ExpectNoError(framework.StopServeHostnameService(f.ClientSet, ns, "service1")) | ||||||
| 		}() | 		}() | ||||||
| 		podNames1, svc1IP, err := framework.StartServeHostnameService(cs, getServeHostnameService("service1"), ns, numPods) | 		podNames1, svc1IP, err := framework.StartServeHostnameService(cs, getServeHostnameService("service1"), ns, numPods) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to create replication controller with service: %s in the namespace: %s", svc1IP, ns) | 		framework.ExpectNoError(err, "failed to create replication controller with service: %s in the namespace: %s", svc1IP, ns) | ||||||
|  |  | ||||||
| 		hosts, err := e2essh.NodeSSHHosts(cs) | 		hosts, err := e2essh.NodeSSHHosts(cs) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to find external/internal IPs for every node") | 		framework.ExpectNoError(err, "failed to find external/internal IPs for every node") | ||||||
| 		if len(hosts) == 0 { | 		if len(hosts) == 0 { | ||||||
| 			framework.Failf("No ssh-able nodes") | 			framework.Failf("No ssh-able nodes") | ||||||
| 		} | 		} | ||||||
| @@ -459,7 +459,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 			framework.ExpectNoError(framework.StopServeHostnameService(f.ClientSet, ns, "service2")) | 			framework.ExpectNoError(framework.StopServeHostnameService(f.ClientSet, ns, "service2")) | ||||||
| 		}() | 		}() | ||||||
| 		podNames2, svc2IP, err := framework.StartServeHostnameService(cs, getServeHostnameService("service2"), ns, numPods) | 		podNames2, svc2IP, err := framework.StartServeHostnameService(cs, getServeHostnameService("service2"), ns, numPods) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to create replication controller with service: %s in the namespace: %s", svc2IP, ns) | 		framework.ExpectNoError(err, "failed to create replication controller with service: %s in the namespace: %s", svc2IP, ns) | ||||||
|  |  | ||||||
| 		if svc1IP == svc2IP { | 		if svc1IP == svc2IP { | ||||||
| 			framework.Failf("VIPs conflict: %v", svc1IP) | 			framework.Failf("VIPs conflict: %v", svc1IP) | ||||||
| @@ -527,7 +527,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
|  |  | ||||||
| 		ginkgo.By("creating a second namespace") | 		ginkgo.By("creating a second namespace") | ||||||
| 		namespacePtr, err := f.CreateNamespace("services", nil) | 		namespacePtr, err := f.CreateNamespace("services", nil) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to create namespace") | 		framework.ExpectNoError(err, "failed to create namespace") | ||||||
| 		ns2 := namespacePtr.Name // LB2 in ns2 on UDP | 		ns2 := namespacePtr.Name // LB2 in ns2 on UDP | ||||||
| 		e2elog.Logf("namespace for UDP test: %s", ns2) | 		e2elog.Logf("namespace for UDP test: %s", ns2) | ||||||
|  |  | ||||||
| @@ -592,7 +592,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 			ginkgo.By("creating a static load balancer IP") | 			ginkgo.By("creating a static load balancer IP") | ||||||
| 			staticIPName = fmt.Sprintf("e2e-external-lb-test-%s", framework.RunID) | 			staticIPName = fmt.Sprintf("e2e-external-lb-test-%s", framework.RunID) | ||||||
| 			gceCloud, err := gce.GetGCECloud() | 			gceCloud, err := gce.GetGCECloud() | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to get GCE cloud provider") | 			framework.ExpectNoError(err, "failed to get GCE cloud provider") | ||||||
|  |  | ||||||
| 			err = gceCloud.ReserveRegionAddress(&compute.Address{Name: staticIPName}, gceCloud.Region()) | 			err = gceCloud.ReserveRegionAddress(&compute.Address{Name: staticIPName}, gceCloud.Region()) | ||||||
| 			defer func() { | 			defer func() { | ||||||
| @@ -603,9 +603,9 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
| 			}() | 			}() | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to create region address: %s", staticIPName) | 			framework.ExpectNoError(err, "failed to create region address: %s", staticIPName) | ||||||
| 			reservedAddr, err := gceCloud.GetRegionAddress(staticIPName, gceCloud.Region()) | 			reservedAddr, err := gceCloud.GetRegionAddress(staticIPName, gceCloud.Region()) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to get region address: %s", staticIPName) | 			framework.ExpectNoError(err, "failed to get region address: %s", staticIPName) | ||||||
|  |  | ||||||
| 			requestedIP = reservedAddr.Address | 			requestedIP = reservedAddr.Address | ||||||
| 			e2elog.Logf("Allocated static load balancer IP: %s", requestedIP) | 			e2elog.Logf("Allocated static load balancer IP: %s", requestedIP) | ||||||
| @@ -649,7 +649,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 			ginkgo.By("demoting the static IP to ephemeral") | 			ginkgo.By("demoting the static IP to ephemeral") | ||||||
| 			if staticIPName != "" { | 			if staticIPName != "" { | ||||||
| 				gceCloud, err := gce.GetGCECloud() | 				gceCloud, err := gce.GetGCECloud() | ||||||
| 				gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to get GCE cloud provider") | 				framework.ExpectNoError(err, "failed to get GCE cloud provider") | ||||||
| 				// Deleting it after it is attached "demotes" it to an | 				// Deleting it after it is attached "demotes" it to an | ||||||
| 				// ephemeral IP, which can be auto-released. | 				// ephemeral IP, which can be auto-released. | ||||||
| 				if err := gceCloud.DeleteRegionAddress(staticIPName, gceCloud.Region()); err != nil { | 				if err := gceCloud.DeleteRegionAddress(staticIPName, gceCloud.Region()); err != nil { | ||||||
| @@ -880,7 +880,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 		defer func() { | 		defer func() { | ||||||
| 			e2elog.Logf("Cleaning up the updating NodePorts test service") | 			e2elog.Logf("Cleaning up the updating NodePorts test service") | ||||||
| 			err := cs.CoreV1().Services(ns).Delete(serviceName, nil) | 			err := cs.CoreV1().Services(ns).Delete(serviceName, nil) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to delete service: %s in namespace: %s", serviceName, ns) | 			framework.ExpectNoError(err, "failed to delete service: %s in namespace: %s", serviceName, ns) | ||||||
| 		}() | 		}() | ||||||
| 		jig.SanityCheckService(tcpService, v1.ServiceTypeClusterIP) | 		jig.SanityCheckService(tcpService, v1.ServiceTypeClusterIP) | ||||||
| 		svcPort := int(tcpService.Spec.Ports[0].Port) | 		svcPort := int(tcpService.Spec.Ports[0].Port) | ||||||
| @@ -927,7 +927,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 		defer func() { | 		defer func() { | ||||||
| 			e2elog.Logf("Cleaning up the ExternalName to ClusterIP test service") | 			e2elog.Logf("Cleaning up the ExternalName to ClusterIP test service") | ||||||
| 			err := cs.CoreV1().Services(ns).Delete(serviceName, nil) | 			err := cs.CoreV1().Services(ns).Delete(serviceName, nil) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to delete service %s in namespace %s", serviceName, ns) | 			framework.ExpectNoError(err, "failed to delete service %s in namespace %s", serviceName, ns) | ||||||
| 		}() | 		}() | ||||||
| 		jig.SanityCheckService(externalNameService, v1.ServiceTypeExternalName) | 		jig.SanityCheckService(externalNameService, v1.ServiceTypeExternalName) | ||||||
| 		ginkgo.By("changing the ExternalName service to type=ClusterIP") | 		ginkgo.By("changing the ExternalName service to type=ClusterIP") | ||||||
| @@ -951,7 +951,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 		defer func() { | 		defer func() { | ||||||
| 			e2elog.Logf("Cleaning up the ExternalName to NodePort test service") | 			e2elog.Logf("Cleaning up the ExternalName to NodePort test service") | ||||||
| 			err := cs.CoreV1().Services(ns).Delete(serviceName, nil) | 			err := cs.CoreV1().Services(ns).Delete(serviceName, nil) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to delete service %s in namespace %s", serviceName, ns) | 			framework.ExpectNoError(err, "failed to delete service %s in namespace %s", serviceName, ns) | ||||||
| 		}() | 		}() | ||||||
| 		jig.SanityCheckService(externalNameService, v1.ServiceTypeExternalName) | 		jig.SanityCheckService(externalNameService, v1.ServiceTypeExternalName) | ||||||
| 		ginkgo.By("changing the ExternalName service to type=NodePort") | 		ginkgo.By("changing the ExternalName service to type=NodePort") | ||||||
| @@ -975,7 +975,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 		defer func() { | 		defer func() { | ||||||
| 			e2elog.Logf("Cleaning up the ClusterIP to ExternalName test service") | 			e2elog.Logf("Cleaning up the ClusterIP to ExternalName test service") | ||||||
| 			err := cs.CoreV1().Services(ns).Delete(serviceName, nil) | 			err := cs.CoreV1().Services(ns).Delete(serviceName, nil) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to delete service %s in namespace %s", serviceName, ns) | 			framework.ExpectNoError(err, "failed to delete service %s in namespace %s", serviceName, ns) | ||||||
| 		}() | 		}() | ||||||
| 		jig.SanityCheckService(clusterIPService, v1.ServiceTypeClusterIP) | 		jig.SanityCheckService(clusterIPService, v1.ServiceTypeClusterIP) | ||||||
| 		ginkgo.By("changing the ClusterIP service to type=ExternalName") | 		ginkgo.By("changing the ClusterIP service to type=ExternalName") | ||||||
| @@ -999,7 +999,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 		defer func() { | 		defer func() { | ||||||
| 			e2elog.Logf("Cleaning up the NodePort to ExternalName test service") | 			e2elog.Logf("Cleaning up the NodePort to ExternalName test service") | ||||||
| 			err := cs.CoreV1().Services(ns).Delete(serviceName, nil) | 			err := cs.CoreV1().Services(ns).Delete(serviceName, nil) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to delete service %s in namespace %s", serviceName, ns) | 			framework.ExpectNoError(err, "failed to delete service %s in namespace %s", serviceName, ns) | ||||||
| 		}() | 		}() | ||||||
| 		jig.SanityCheckService(nodePortService, v1.ServiceTypeNodePort) | 		jig.SanityCheckService(nodePortService, v1.ServiceTypeNodePort) | ||||||
| 		ginkgo.By("changing the NodePort service to type=ExternalName") | 		ginkgo.By("changing the NodePort service to type=ExternalName") | ||||||
| @@ -1049,7 +1049,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 			}, | 			}, | ||||||
| 		} | 		} | ||||||
| 		result, err := t.CreateService(service) | 		result, err := t.CreateService(service) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to create service: %s in namespace: %s", serviceName, ns) | 		framework.ExpectNoError(err, "failed to create service: %s in namespace: %s", serviceName, ns) | ||||||
|  |  | ||||||
| 		if len(result.Spec.Ports) != 2 { | 		if len(result.Spec.Ports) != 2 { | ||||||
| 			framework.Failf("got unexpected len(Spec.Ports) for new service: %v", result) | 			framework.Failf("got unexpected len(Spec.Ports) for new service: %v", result) | ||||||
| @@ -1079,7 +1079,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 		service := t.BuildServiceSpec() | 		service := t.BuildServiceSpec() | ||||||
| 		service.Spec.Type = v1.ServiceTypeNodePort | 		service.Spec.Type = v1.ServiceTypeNodePort | ||||||
| 		result, err := t.CreateService(service) | 		result, err := t.CreateService(service) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to create service: %s in namespace: %s", serviceName1, ns) | 		framework.ExpectNoError(err, "failed to create service: %s in namespace: %s", serviceName1, ns) | ||||||
|  |  | ||||||
| 		if result.Spec.Type != v1.ServiceTypeNodePort { | 		if result.Spec.Type != v1.ServiceTypeNodePort { | ||||||
| 			framework.Failf("got unexpected Spec.Type for new service: %v", result) | 			framework.Failf("got unexpected Spec.Type for new service: %v", result) | ||||||
| @@ -1106,11 +1106,11 @@ var _ = SIGDescribe("Services", func() { | |||||||
|  |  | ||||||
| 		ginkgo.By("deleting service " + serviceName1 + " to release NodePort") | 		ginkgo.By("deleting service " + serviceName1 + " to release NodePort") | ||||||
| 		err = t.DeleteService(serviceName1) | 		err = t.DeleteService(serviceName1) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to delete service: %s in namespace: %s", serviceName1, ns) | 		framework.ExpectNoError(err, "failed to delete service: %s in namespace: %s", serviceName1, ns) | ||||||
|  |  | ||||||
| 		ginkgo.By("creating service " + serviceName2 + " with no-longer-conflicting NodePort") | 		ginkgo.By("creating service " + serviceName2 + " with no-longer-conflicting NodePort") | ||||||
| 		_, err = t.CreateService(service2) | 		_, err = t.CreateService(service2) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to create service: %s in namespace: %s", serviceName1, ns) | 		framework.ExpectNoError(err, "failed to create service: %s in namespace: %s", serviceName1, ns) | ||||||
| 	}) | 	}) | ||||||
|  |  | ||||||
| 	ginkgo.It("should check NodePort out-of-range", func() { | 	ginkgo.It("should check NodePort out-of-range", func() { | ||||||
| @@ -1132,7 +1132,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
|  |  | ||||||
| 		ginkgo.By("creating service " + serviceName + " with type NodePort in namespace " + ns) | 		ginkgo.By("creating service " + serviceName + " with type NodePort in namespace " + ns) | ||||||
| 		service, err := t.CreateService(service) | 		service, err := t.CreateService(service) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to create service: %s in namespace: %s", serviceName, ns) | 		framework.ExpectNoError(err, "failed to create service: %s in namespace: %s", serviceName, ns) | ||||||
|  |  | ||||||
| 		if service.Spec.Type != v1.ServiceTypeNodePort { | 		if service.Spec.Type != v1.ServiceTypeNodePort { | ||||||
| 			framework.Failf("got unexpected Spec.Type for new service: %v", service) | 			framework.Failf("got unexpected Spec.Type for new service: %v", service) | ||||||
| @@ -1168,7 +1168,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
|  |  | ||||||
| 		ginkgo.By("deleting original service " + serviceName) | 		ginkgo.By("deleting original service " + serviceName) | ||||||
| 		err = t.DeleteService(serviceName) | 		err = t.DeleteService(serviceName) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to delete service: %s in namespace: %s", serviceName, ns) | 		framework.ExpectNoError(err, "failed to delete service: %s in namespace: %s", serviceName, ns) | ||||||
|  |  | ||||||
| 		ginkgo.By(fmt.Sprintf("creating service "+serviceName+" with out-of-range NodePort %d", outOfRangeNodePort)) | 		ginkgo.By(fmt.Sprintf("creating service "+serviceName+" with out-of-range NodePort %d", outOfRangeNodePort)) | ||||||
| 		service = t.BuildServiceSpec() | 		service = t.BuildServiceSpec() | ||||||
| @@ -1200,7 +1200,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
|  |  | ||||||
| 		ginkgo.By("creating service " + serviceName + " with type NodePort in namespace " + ns) | 		ginkgo.By("creating service " + serviceName + " with type NodePort in namespace " + ns) | ||||||
| 		service, err := t.CreateService(service) | 		service, err := t.CreateService(service) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to create service: %s in namespace: %s", serviceName, ns) | 		framework.ExpectNoError(err, "failed to create service: %s in namespace: %s", serviceName, ns) | ||||||
|  |  | ||||||
| 		if service.Spec.Type != v1.ServiceTypeNodePort { | 		if service.Spec.Type != v1.ServiceTypeNodePort { | ||||||
| 			framework.Failf("got unexpected Spec.Type for new service: %v", service) | 			framework.Failf("got unexpected Spec.Type for new service: %v", service) | ||||||
| @@ -1219,7 +1219,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
|  |  | ||||||
| 		ginkgo.By("deleting original service " + serviceName) | 		ginkgo.By("deleting original service " + serviceName) | ||||||
| 		err = t.DeleteService(serviceName) | 		err = t.DeleteService(serviceName) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to delete service: %s in namespace: %s", serviceName, ns) | 		framework.ExpectNoError(err, "failed to delete service: %s in namespace: %s", serviceName, ns) | ||||||
|  |  | ||||||
| 		hostExec := framework.LaunchHostExecPod(f.ClientSet, f.Namespace.Name, "hostexec") | 		hostExec := framework.LaunchHostExecPod(f.ClientSet, f.Namespace.Name, "hostexec") | ||||||
| 		cmd := fmt.Sprintf(`! ss -ant46 'sport = :%d' | tail -n +2 | grep LISTEN`, nodePort) | 		cmd := fmt.Sprintf(`! ss -ant46 'sport = :%d' | tail -n +2 | grep LISTEN`, nodePort) | ||||||
| @@ -1241,7 +1241,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 		service.Spec.Type = v1.ServiceTypeNodePort | 		service.Spec.Type = v1.ServiceTypeNodePort | ||||||
| 		service.Spec.Ports[0].NodePort = nodePort | 		service.Spec.Ports[0].NodePort = nodePort | ||||||
| 		service, err = t.CreateService(service) | 		service, err = t.CreateService(service) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to create service: %s in namespace: %s", serviceName, ns) | 		framework.ExpectNoError(err, "failed to create service: %s in namespace: %s", serviceName, ns) | ||||||
| 	}) | 	}) | ||||||
|  |  | ||||||
| 	ginkgo.It("should create endpoints for unready pods", func() { | 	ginkgo.It("should create endpoints for unready pods", func() { | ||||||
| @@ -1413,9 +1413,9 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 		dropPodName := framework.CreateExecPodOrFail(cs, namespace, "execpod-drop", nil) | 		dropPodName := framework.CreateExecPodOrFail(cs, namespace, "execpod-drop", nil) | ||||||
|  |  | ||||||
| 		acceptPod, err := cs.CoreV1().Pods(namespace).Get(acceptPodName, metav1.GetOptions{}) | 		acceptPod, err := cs.CoreV1().Pods(namespace).Get(acceptPodName, metav1.GetOptions{}) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to fetch pod: %s in namespace: %s", acceptPodName, namespace) | 		framework.ExpectNoError(err, "failed to fetch pod: %s in namespace: %s", acceptPodName, namespace) | ||||||
| 		dropPod, err := cs.CoreV1().Pods(namespace).Get(dropPodName, metav1.GetOptions{}) | 		dropPod, err := cs.CoreV1().Pods(namespace).Get(dropPodName, metav1.GetOptions{}) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to fetch pod: %s in namespace: %s", dropPodName, namespace) | 		framework.ExpectNoError(err, "failed to fetch pod: %s in namespace: %s", dropPodName, namespace) | ||||||
|  |  | ||||||
| 		ginkgo.By("creating a pod to be part of the service " + serviceName) | 		ginkgo.By("creating a pod to be part of the service " + serviceName) | ||||||
| 		// This container is an nginx container listening on port 80 | 		// This container is an nginx container listening on port 80 | ||||||
| @@ -1433,7 +1433,8 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 				svc.Spec.Type = v1.ServiceTypeNodePort | 				svc.Spec.Type = v1.ServiceTypeNodePort | ||||||
| 				svc.Spec.LoadBalancerSourceRanges = nil | 				svc.Spec.LoadBalancerSourceRanges = nil | ||||||
| 			}) | 			}) | ||||||
| 			gomega.Expect(cs.CoreV1().Services(svc.Namespace).Delete(svc.Name, nil)).NotTo(gomega.HaveOccurred()) | 			err = cs.CoreV1().Services(svc.Namespace).Delete(svc.Name, nil) | ||||||
|  | 			framework.ExpectNoError(err) | ||||||
| 		}() | 		}() | ||||||
|  |  | ||||||
| 		svc = jig.WaitForLoadBalancerOrFail(namespace, serviceName, loadBalancerCreateTimeout) | 		svc = jig.WaitForLoadBalancerOrFail(namespace, serviceName, loadBalancerCreateTimeout) | ||||||
| @@ -1615,7 +1616,8 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 			jig.UpdateServiceOrFail(svc.Namespace, svc.Name, func(svc *v1.Service) { | 			jig.UpdateServiceOrFail(svc.Namespace, svc.Name, func(svc *v1.Service) { | ||||||
| 				svc.Spec.Type = v1.ServiceTypeNodePort | 				svc.Spec.Type = v1.ServiceTypeNodePort | ||||||
| 			}) | 			}) | ||||||
| 			gomega.Expect(cs.CoreV1().Services(svc.Namespace).Delete(svc.Name, nil)).NotTo(gomega.HaveOccurred()) | 			err = cs.CoreV1().Services(svc.Namespace).Delete(svc.Name, nil) | ||||||
|  | 			framework.ExpectNoError(err) | ||||||
| 		}() | 		}() | ||||||
|  |  | ||||||
| 		svc = jig.WaitForLoadBalancerOrFail(namespace, serviceName, framework.LoadBalancerCreateTimeoutDefault) | 		svc = jig.WaitForLoadBalancerOrFail(namespace, serviceName, framework.LoadBalancerCreateTimeoutDefault) | ||||||
| @@ -1743,17 +1745,17 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 		svcDisabled := getServeHostnameService("service-disabled") | 		svcDisabled := getServeHostnameService("service-disabled") | ||||||
| 		svcDisabled.ObjectMeta.Labels = serviceProxyNameLabels | 		svcDisabled.ObjectMeta.Labels = serviceProxyNameLabels | ||||||
| 		_, svcDisabledIP, err := framework.StartServeHostnameService(cs, svcDisabled, ns, numPods) | 		_, svcDisabledIP, err := framework.StartServeHostnameService(cs, svcDisabled, ns, numPods) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to create replication controller with service: %s in the namespace: %s", svcDisabledIP, ns) | 		framework.ExpectNoError(err, "failed to create replication controller with service: %s in the namespace: %s", svcDisabledIP, ns) | ||||||
|  |  | ||||||
| 		ginkgo.By("creating service in namespace " + ns) | 		ginkgo.By("creating service in namespace " + ns) | ||||||
| 		svcToggled := getServeHostnameService("service") | 		svcToggled := getServeHostnameService("service") | ||||||
| 		podToggledNames, svcToggledIP, err := framework.StartServeHostnameService(cs, svcToggled, ns, numPods) | 		podToggledNames, svcToggledIP, err := framework.StartServeHostnameService(cs, svcToggled, ns, numPods) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to create replication controller with service: %s in the namespace: %s", svcToggledIP, ns) | 		framework.ExpectNoError(err, "failed to create replication controller with service: %s in the namespace: %s", svcToggledIP, ns) | ||||||
|  |  | ||||||
| 		jig := framework.NewServiceTestJig(cs, svcToggled.ObjectMeta.Name) | 		jig := framework.NewServiceTestJig(cs, svcToggled.ObjectMeta.Name) | ||||||
|  |  | ||||||
| 		hosts, err := e2essh.NodeSSHHosts(cs) | 		hosts, err := e2essh.NodeSSHHosts(cs) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to find external/internal IPs for every node") | 		framework.ExpectNoError(err, "failed to find external/internal IPs for every node") | ||||||
| 		if len(hosts) == 0 { | 		if len(hosts) == 0 { | ||||||
| 			framework.Failf("No ssh-able nodes") | 			framework.Failf("No ssh-able nodes") | ||||||
| 		} | 		} | ||||||
| @@ -1834,7 +1836,7 @@ var _ = SIGDescribe("Services", func() { | |||||||
| 			} | 			} | ||||||
| 			return true, errors.New("expected wget call to fail") | 			return true, errors.New("expected wget call to fail") | ||||||
| 		}); pollErr != nil { | 		}); pollErr != nil { | ||||||
| 			gomega.Expect(pollErr).NotTo(gomega.HaveOccurred()) | 			framework.ExpectNoError(pollErr) | ||||||
| 		} | 		} | ||||||
| 	}) | 	}) | ||||||
|  |  | ||||||
| @@ -1887,9 +1889,11 @@ var _ = SIGDescribe("ESIPP [Slow] [DisabledForLargeClusters]", func() { | |||||||
| 			// Make sure we didn't leak the health check node port. | 			// Make sure we didn't leak the health check node port. | ||||||
| 			threshold := 2 | 			threshold := 2 | ||||||
| 			for _, ips := range jig.GetEndpointNodes(svc) { | 			for _, ips := range jig.GetEndpointNodes(svc) { | ||||||
| 				gomega.Expect(jig.TestHTTPHealthCheckNodePort(ips[0], healthCheckNodePort, "/healthz", framework.KubeProxyEndpointLagTimeout, false, threshold)).NotTo(gomega.HaveOccurred()) | 				err := jig.TestHTTPHealthCheckNodePort(ips[0], healthCheckNodePort, "/healthz", framework.KubeProxyEndpointLagTimeout, false, threshold) | ||||||
|  | 				framework.ExpectNoError(err) | ||||||
| 			} | 			} | ||||||
| 			gomega.Expect(cs.CoreV1().Services(svc.Namespace).Delete(svc.Name, nil)).NotTo(gomega.HaveOccurred()) | 			err := cs.CoreV1().Services(svc.Namespace).Delete(svc.Name, nil) | ||||||
|  | 			framework.ExpectNoError(err) | ||||||
| 		}() | 		}() | ||||||
|  |  | ||||||
| 		svcTCPPort := int(svc.Spec.Ports[0].Port) | 		svcTCPPort := int(svc.Spec.Ports[0].Port) | ||||||
| @@ -1913,7 +1917,8 @@ var _ = SIGDescribe("ESIPP [Slow] [DisabledForLargeClusters]", func() { | |||||||
|  |  | ||||||
| 		svc := jig.CreateOnlyLocalNodePortService(namespace, serviceName, true) | 		svc := jig.CreateOnlyLocalNodePortService(namespace, serviceName, true) | ||||||
| 		defer func() { | 		defer func() { | ||||||
| 			gomega.Expect(cs.CoreV1().Services(svc.Namespace).Delete(svc.Name, nil)).NotTo(gomega.HaveOccurred()) | 			err := cs.CoreV1().Services(svc.Namespace).Delete(svc.Name, nil) | ||||||
|  | 			framework.ExpectNoError(err) | ||||||
| 		}() | 		}() | ||||||
|  |  | ||||||
| 		tcpNodePort := int(svc.Spec.Ports[0].NodePort) | 		tcpNodePort := int(svc.Spec.Ports[0].NodePort) | ||||||
| @@ -1951,7 +1956,8 @@ var _ = SIGDescribe("ESIPP [Slow] [DisabledForLargeClusters]", func() { | |||||||
| 		serviceLBNames = append(serviceLBNames, cloudprovider.DefaultLoadBalancerName(svc)) | 		serviceLBNames = append(serviceLBNames, cloudprovider.DefaultLoadBalancerName(svc)) | ||||||
| 		defer func() { | 		defer func() { | ||||||
| 			jig.ChangeServiceType(svc.Namespace, svc.Name, v1.ServiceTypeClusterIP, loadBalancerCreateTimeout) | 			jig.ChangeServiceType(svc.Namespace, svc.Name, v1.ServiceTypeClusterIP, loadBalancerCreateTimeout) | ||||||
| 			gomega.Expect(cs.CoreV1().Services(svc.Namespace).Delete(svc.Name, nil)).NotTo(gomega.HaveOccurred()) | 			err := cs.CoreV1().Services(svc.Namespace).Delete(svc.Name, nil) | ||||||
|  | 			framework.ExpectNoError(err) | ||||||
| 		}() | 		}() | ||||||
|  |  | ||||||
| 		healthCheckNodePort := int(svc.Spec.HealthCheckNodePort) | 		healthCheckNodePort := int(svc.Spec.HealthCheckNodePort) | ||||||
| @@ -1990,7 +1996,8 @@ var _ = SIGDescribe("ESIPP [Slow] [DisabledForLargeClusters]", func() { | |||||||
| 				port := strconv.Itoa(healthCheckNodePort) | 				port := strconv.Itoa(healthCheckNodePort) | ||||||
| 				ipPort := net.JoinHostPort(publicIP, port) | 				ipPort := net.JoinHostPort(publicIP, port) | ||||||
| 				e2elog.Logf("Health checking %s, http://%s%s, expectedSuccess %v", nodes.Items[n].Name, ipPort, path, expectedSuccess) | 				e2elog.Logf("Health checking %s, http://%s%s, expectedSuccess %v", nodes.Items[n].Name, ipPort, path, expectedSuccess) | ||||||
| 				gomega.Expect(jig.TestHTTPHealthCheckNodePort(publicIP, healthCheckNodePort, path, framework.KubeProxyEndpointLagTimeout, expectedSuccess, threshold)).NotTo(gomega.HaveOccurred()) | 				err := jig.TestHTTPHealthCheckNodePort(publicIP, healthCheckNodePort, path, framework.KubeProxyEndpointLagTimeout, expectedSuccess, threshold) | ||||||
|  | 				framework.ExpectNoError(err) | ||||||
| 			} | 			} | ||||||
| 			framework.ExpectNoError(framework.DeleteRCAndWaitForGC(f.ClientSet, namespace, serviceName)) | 			framework.ExpectNoError(framework.DeleteRCAndWaitForGC(f.ClientSet, namespace, serviceName)) | ||||||
| 		} | 		} | ||||||
| @@ -2006,7 +2013,8 @@ var _ = SIGDescribe("ESIPP [Slow] [DisabledForLargeClusters]", func() { | |||||||
| 		serviceLBNames = append(serviceLBNames, cloudprovider.DefaultLoadBalancerName(svc)) | 		serviceLBNames = append(serviceLBNames, cloudprovider.DefaultLoadBalancerName(svc)) | ||||||
| 		defer func() { | 		defer func() { | ||||||
| 			jig.ChangeServiceType(svc.Namespace, svc.Name, v1.ServiceTypeClusterIP, loadBalancerCreateTimeout) | 			jig.ChangeServiceType(svc.Namespace, svc.Name, v1.ServiceTypeClusterIP, loadBalancerCreateTimeout) | ||||||
| 			gomega.Expect(cs.CoreV1().Services(svc.Namespace).Delete(svc.Name, nil)).NotTo(gomega.HaveOccurred()) | 			err := cs.CoreV1().Services(svc.Namespace).Delete(svc.Name, nil) | ||||||
|  | 			framework.ExpectNoError(err) | ||||||
| 		}() | 		}() | ||||||
|  |  | ||||||
| 		ingressIP := framework.GetIngressPoint(&svc.Status.LoadBalancer.Ingress[0]) | 		ingressIP := framework.GetIngressPoint(&svc.Status.LoadBalancer.Ingress[0]) | ||||||
| @@ -2022,7 +2030,7 @@ var _ = SIGDescribe("ESIPP [Slow] [DisabledForLargeClusters]", func() { | |||||||
| 		}) | 		}) | ||||||
| 		defer func() { | 		defer func() { | ||||||
| 			err := cs.CoreV1().Pods(namespace).Delete(execPodName, nil) | 			err := cs.CoreV1().Pods(namespace).Delete(execPodName, nil) | ||||||
| 			gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to delete pod: %s", execPodName) | 			framework.ExpectNoError(err, "failed to delete pod: %s", execPodName) | ||||||
| 		}() | 		}() | ||||||
| 		execPod, err := f.ClientSet.CoreV1().Pods(namespace).Get(execPodName, metav1.GetOptions{}) | 		execPod, err := f.ClientSet.CoreV1().Pods(namespace).Get(execPodName, metav1.GetOptions{}) | ||||||
| 		framework.ExpectNoError(err) | 		framework.ExpectNoError(err) | ||||||
| @@ -2059,7 +2067,8 @@ var _ = SIGDescribe("ESIPP [Slow] [DisabledForLargeClusters]", func() { | |||||||
| 		serviceLBNames = append(serviceLBNames, cloudprovider.DefaultLoadBalancerName(svc)) | 		serviceLBNames = append(serviceLBNames, cloudprovider.DefaultLoadBalancerName(svc)) | ||||||
| 		defer func() { | 		defer func() { | ||||||
| 			jig.ChangeServiceType(svc.Namespace, svc.Name, v1.ServiceTypeClusterIP, loadBalancerCreateTimeout) | 			jig.ChangeServiceType(svc.Namespace, svc.Name, v1.ServiceTypeClusterIP, loadBalancerCreateTimeout) | ||||||
| 			gomega.Expect(cs.CoreV1().Services(svc.Namespace).Delete(svc.Name, nil)).NotTo(gomega.HaveOccurred()) | 			err := cs.CoreV1().Services(svc.Namespace).Delete(svc.Name, nil) | ||||||
|  | 			framework.ExpectNoError(err) | ||||||
| 		}() | 		}() | ||||||
|  |  | ||||||
| 		// save the health check node port because it disappears when ESIPP is turned off. | 		// save the health check node port because it disappears when ESIPP is turned off. | ||||||
| @@ -2161,7 +2170,7 @@ func execSourceipTest(f *framework.Framework, c clientset.Interface, ns, nodeNam | |||||||
| 	defer func() { | 	defer func() { | ||||||
| 		e2elog.Logf("Cleaning up the exec pod") | 		e2elog.Logf("Cleaning up the exec pod") | ||||||
| 		err := c.CoreV1().Pods(ns).Delete(execPodName, nil) | 		err := c.CoreV1().Pods(ns).Delete(execPodName, nil) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to delete pod: %s", execPodName) | 		framework.ExpectNoError(err, "failed to delete pod: %s", execPodName) | ||||||
| 	}() | 	}() | ||||||
| 	execPod, err := f.ClientSet.CoreV1().Pods(ns).Get(execPodName, metav1.GetOptions{}) | 	execPod, err := f.ClientSet.CoreV1().Pods(ns).Get(execPodName, metav1.GetOptions{}) | ||||||
| 	framework.ExpectNoError(err) | 	framework.ExpectNoError(err) | ||||||
| @@ -2217,13 +2226,13 @@ func execAffinityTestForNonLBServiceWithOptionalTransition(f *framework.Framewor | |||||||
| 	serviceType := svc.Spec.Type | 	serviceType := svc.Spec.Type | ||||||
| 	svc.Spec.SessionAffinity = v1.ServiceAffinityClientIP | 	svc.Spec.SessionAffinity = v1.ServiceAffinityClientIP | ||||||
| 	_, _, err := framework.StartServeHostnameService(cs, svc, ns, numPods) | 	_, _, err := framework.StartServeHostnameService(cs, svc, ns, numPods) | ||||||
| 	gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to create replication controller with service in the namespace: %s", ns) | 	framework.ExpectNoError(err, "failed to create replication controller with service in the namespace: %s", ns) | ||||||
| 	defer func() { | 	defer func() { | ||||||
| 		framework.StopServeHostnameService(cs, ns, serviceName) | 		framework.StopServeHostnameService(cs, ns, serviceName) | ||||||
| 	}() | 	}() | ||||||
| 	jig := framework.NewServiceTestJig(cs, serviceName) | 	jig := framework.NewServiceTestJig(cs, serviceName) | ||||||
| 	svc, err = jig.Client.CoreV1().Services(ns).Get(serviceName, metav1.GetOptions{}) | 	svc, err = jig.Client.CoreV1().Services(ns).Get(serviceName, metav1.GetOptions{}) | ||||||
| 	gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to fetch service: %s in namespace: %s", serviceName, ns) | 	framework.ExpectNoError(err, "failed to fetch service: %s in namespace: %s", serviceName, ns) | ||||||
| 	var svcIP string | 	var svcIP string | ||||||
| 	if serviceType == v1.ServiceTypeNodePort { | 	if serviceType == v1.ServiceTypeNodePort { | ||||||
| 		nodes := framework.GetReadySchedulableNodesOrDie(cs) | 		nodes := framework.GetReadySchedulableNodesOrDie(cs) | ||||||
| @@ -2239,10 +2248,10 @@ func execAffinityTestForNonLBServiceWithOptionalTransition(f *framework.Framewor | |||||||
| 	defer func() { | 	defer func() { | ||||||
| 		e2elog.Logf("Cleaning up the exec pod") | 		e2elog.Logf("Cleaning up the exec pod") | ||||||
| 		err := cs.CoreV1().Pods(ns).Delete(execPodName, nil) | 		err := cs.CoreV1().Pods(ns).Delete(execPodName, nil) | ||||||
| 		gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to delete pod: %s in namespace: %s", execPodName, ns) | 		framework.ExpectNoError(err, "failed to delete pod: %s in namespace: %s", execPodName, ns) | ||||||
| 	}() | 	}() | ||||||
| 	execPod, err := cs.CoreV1().Pods(ns).Get(execPodName, metav1.GetOptions{}) | 	execPod, err := cs.CoreV1().Pods(ns).Get(execPodName, metav1.GetOptions{}) | ||||||
| 	gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to fetch pod: %s in namespace: %s", execPodName, ns) | 	framework.ExpectNoError(err, "failed to fetch pod: %s in namespace: %s", execPodName, ns) | ||||||
|  |  | ||||||
| 	if !isTransitionTest { | 	if !isTransitionTest { | ||||||
| 		gomega.Expect(framework.CheckAffinity(jig, execPod, svcIP, servicePort, true)).To(gomega.BeTrue()) | 		gomega.Expect(framework.CheckAffinity(jig, execPod, svcIP, servicePort, true)).To(gomega.BeTrue()) | ||||||
| @@ -2276,7 +2285,7 @@ func execAffinityTestForLBServiceWithOptionalTransition(f *framework.Framework, | |||||||
| 	ginkgo.By("creating service in namespace " + ns) | 	ginkgo.By("creating service in namespace " + ns) | ||||||
| 	svc.Spec.SessionAffinity = v1.ServiceAffinityClientIP | 	svc.Spec.SessionAffinity = v1.ServiceAffinityClientIP | ||||||
| 	_, _, err := framework.StartServeHostnameService(cs, svc, ns, numPods) | 	_, _, err := framework.StartServeHostnameService(cs, svc, ns, numPods) | ||||||
| 	gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to create replication controller with service in the namespace: %s", ns) | 	framework.ExpectNoError(err, "failed to create replication controller with service in the namespace: %s", ns) | ||||||
| 	jig := framework.NewServiceTestJig(cs, serviceName) | 	jig := framework.NewServiceTestJig(cs, serviceName) | ||||||
| 	ginkgo.By("waiting for loadbalancer for service " + ns + "/" + serviceName) | 	ginkgo.By("waiting for loadbalancer for service " + ns + "/" + serviceName) | ||||||
| 	svc = jig.WaitForLoadBalancerOrFail(ns, serviceName, framework.LoadBalancerCreateTimeoutDefault) | 	svc = jig.WaitForLoadBalancerOrFail(ns, serviceName, framework.LoadBalancerCreateTimeoutDefault) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 toyoda
					toyoda