Merge pull request #99146 from JornShen/cleanup_validateEndpointsPorts

merge error check to validateEndpointsPorts
This commit is contained in:
Kubernetes Prow Robot 2021-02-18 22:40:24 -08:00 committed by GitHub
commit 0d8373ace2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 52 deletions

View File

@ -160,9 +160,7 @@ var _ = SIGDescribe("Conntrack", func() {
serverPod1.Spec.NodeName = serverNodeInfo.name serverPod1.Spec.NodeName = serverNodeInfo.name
fr.PodClient().CreateSync(serverPod1) fr.PodClient().CreateSync(serverPod1)
// Waiting for service to expose endpoint. validateEndpointsPortsOrFail(cs, ns, serviceName, portsByPodName{podBackend1: {80}})
err = validateEndpointsPorts(cs, ns, serviceName, portsByPodName{podBackend1: {80}})
framework.ExpectNoError(err, "failed to validate endpoints for service %s in namespace: %s", serviceName, ns)
// Note that the fact that Endpoints object already exists, does NOT mean // Note that the fact that Endpoints object already exists, does NOT mean
// that iptables (or whatever else is used) was already programmed. // that iptables (or whatever else is used) was already programmed.
@ -188,9 +186,7 @@ var _ = SIGDescribe("Conntrack", func() {
framework.Logf("Cleaning up %s pod", podBackend1) framework.Logf("Cleaning up %s pod", podBackend1)
fr.PodClient().DeleteSync(podBackend1, metav1.DeleteOptions{}, framework.DefaultPodDeletionTimeout) fr.PodClient().DeleteSync(podBackend1, metav1.DeleteOptions{}, framework.DefaultPodDeletionTimeout)
// Waiting for service to expose endpoint. validateEndpointsPortsOrFail(cs, ns, serviceName, portsByPodName{podBackend2: {80}})
err = validateEndpointsPorts(cs, ns, serviceName, portsByPodName{podBackend2: {80}})
framework.ExpectNoError(err, "failed to validate endpoints for service %s in namespace: %s", serviceName, ns)
// Check that the second pod keeps receiving traffic // Check that the second pod keeps receiving traffic
// UDP conntrack entries timeout is 30 sec by default // UDP conntrack entries timeout is 30 sec by default
@ -237,9 +233,7 @@ var _ = SIGDescribe("Conntrack", func() {
serverPod1.Spec.NodeName = serverNodeInfo.name serverPod1.Spec.NodeName = serverNodeInfo.name
fr.PodClient().CreateSync(serverPod1) fr.PodClient().CreateSync(serverPod1)
// Waiting for service to expose endpoint. validateEndpointsPortsOrFail(cs, ns, serviceName, portsByPodName{podBackend1: {80}})
err = validateEndpointsPorts(cs, ns, serviceName, portsByPodName{podBackend1: {80}})
framework.ExpectNoError(err, "failed to validate endpoints for service %s in namespace: %s", serviceName, ns)
// Note that the fact that Endpoints object already exists, does NOT mean // Note that the fact that Endpoints object already exists, does NOT mean
// that iptables (or whatever else is used) was already programmed. // that iptables (or whatever else is used) was already programmed.
@ -265,9 +259,7 @@ var _ = SIGDescribe("Conntrack", func() {
framework.Logf("Cleaning up %s pod", podBackend1) framework.Logf("Cleaning up %s pod", podBackend1)
fr.PodClient().DeleteSync(podBackend1, metav1.DeleteOptions{}, framework.DefaultPodDeletionTimeout) fr.PodClient().DeleteSync(podBackend1, metav1.DeleteOptions{}, framework.DefaultPodDeletionTimeout)
// Waiting for service to expose endpoint. validateEndpointsPortsOrFail(cs, ns, serviceName, portsByPodName{podBackend2: {80}})
err = validateEndpointsPorts(cs, ns, serviceName, portsByPodName{podBackend2: {80}})
framework.ExpectNoError(err, "failed to validate endpoints for service %s in namespace: %s", serviceName, ns)
// Check that the second pod keeps receiving traffic // Check that the second pod keeps receiving traffic
// UDP conntrack entries timeout is 30 sec by default // UDP conntrack entries timeout is 30 sec by default

View File

@ -783,8 +783,7 @@ var _ = SIGDescribe("Services", func() {
_, err := jig.CreateTCPServiceWithPort(nil, 80) _, err := jig.CreateTCPServiceWithPort(nil, 80)
framework.ExpectNoError(err) framework.ExpectNoError(err)
err = validateEndpointsPorts(cs, ns, serviceName, portsByPodName{}) validateEndpointsPortsOrFail(cs, ns, serviceName, portsByPodName{})
framework.ExpectNoError(err, "failed to validate endpoints for service %s in namespace: %s", serviceName, ns)
names := map[string]bool{} names := map[string]bool{}
defer func() { defer func() {
@ -799,23 +798,19 @@ var _ = SIGDescribe("Services", func() {
createPodOrFail(cs, ns, name1, jig.Labels, []v1.ContainerPort{{ContainerPort: 80}}) createPodOrFail(cs, ns, name1, jig.Labels, []v1.ContainerPort{{ContainerPort: 80}})
names[name1] = true names[name1] = true
err = validateEndpointsPorts(cs, ns, serviceName, portsByPodName{name1: {80}}) validateEndpointsPortsOrFail(cs, ns, serviceName, portsByPodName{name1: {80}})
framework.ExpectNoError(err, "failed to validate endpoints for service %s in namespace: %s", serviceName, ns)
createPodOrFail(cs, ns, name2, jig.Labels, []v1.ContainerPort{{ContainerPort: 80}}) createPodOrFail(cs, ns, name2, jig.Labels, []v1.ContainerPort{{ContainerPort: 80}})
names[name2] = true names[name2] = true
err = validateEndpointsPorts(cs, ns, serviceName, portsByPodName{name1: {80}, name2: {80}}) validateEndpointsPortsOrFail(cs, ns, serviceName, portsByPodName{name1: {80}, name2: {80}})
framework.ExpectNoError(err, "failed to validate endpoints for service %s in namespace: %s", serviceName, ns)
e2epod.DeletePodOrFail(cs, ns, name1) e2epod.DeletePodOrFail(cs, ns, name1)
delete(names, name1) delete(names, name1)
err = validateEndpointsPorts(cs, ns, serviceName, portsByPodName{name2: {80}}) validateEndpointsPortsOrFail(cs, ns, serviceName, portsByPodName{name2: {80}})
framework.ExpectNoError(err, "failed to validate endpoints for service %s in namespace: %s", serviceName, ns)
e2epod.DeletePodOrFail(cs, ns, name2) e2epod.DeletePodOrFail(cs, ns, name2)
delete(names, name2) delete(names, name2)
err = validateEndpointsPorts(cs, ns, serviceName, portsByPodName{}) validateEndpointsPortsOrFail(cs, ns, serviceName, portsByPodName{})
framework.ExpectNoError(err, "failed to validate endpoints for service %s in namespace: %s", serviceName, ns)
}) })
/* /*
@ -856,8 +851,7 @@ var _ = SIGDescribe("Services", func() {
port1 := 100 port1 := 100
port2 := 101 port2 := 101
err = validateEndpointsPorts(cs, ns, serviceName, portsByPodName{}) validateEndpointsPortsOrFail(cs, ns, serviceName, portsByPodName{})
framework.ExpectNoError(err, "failed to validate endpoints for service %s in namespace: %s", serviceName, ns)
names := map[string]bool{} names := map[string]bool{}
defer func() { defer func() {
@ -885,23 +879,19 @@ var _ = SIGDescribe("Services", func() {
createPodOrFail(cs, ns, podname1, jig.Labels, containerPorts1) createPodOrFail(cs, ns, podname1, jig.Labels, containerPorts1)
names[podname1] = true names[podname1] = true
err = validateEndpointsPorts(cs, ns, serviceName, portsByPodName{podname1: {port1}}) validateEndpointsPortsOrFail(cs, ns, serviceName, portsByPodName{podname1: {port1}})
framework.ExpectNoError(err, "failed to validate endpoints for service %s in namespace: %s", serviceName, ns)
createPodOrFail(cs, ns, podname2, jig.Labels, containerPorts2) createPodOrFail(cs, ns, podname2, jig.Labels, containerPorts2)
names[podname2] = true names[podname2] = true
err = validateEndpointsPorts(cs, ns, serviceName, portsByPodName{podname1: {port1}, podname2: {port2}}) validateEndpointsPortsOrFail(cs, ns, serviceName, portsByPodName{podname1: {port1}, podname2: {port2}})
framework.ExpectNoError(err, "failed to validate endpoints for service %s in namespace: %s", serviceName, ns)
e2epod.DeletePodOrFail(cs, ns, podname1) e2epod.DeletePodOrFail(cs, ns, podname1)
delete(names, podname1) delete(names, podname1)
err = validateEndpointsPorts(cs, ns, serviceName, portsByPodName{podname2: {port2}}) validateEndpointsPortsOrFail(cs, ns, serviceName, portsByPodName{podname2: {port2}})
framework.ExpectNoError(err, "failed to validate endpoints for service %s in namespace: %s", serviceName, ns)
e2epod.DeletePodOrFail(cs, ns, podname2) e2epod.DeletePodOrFail(cs, ns, podname2)
delete(names, podname2) delete(names, podname2)
err = validateEndpointsPorts(cs, ns, serviceName, portsByPodName{}) validateEndpointsPortsOrFail(cs, ns, serviceName, portsByPodName{})
framework.ExpectNoError(err, "failed to validate endpoints for service %s in namespace: %s", serviceName, ns)
}) })
ginkgo.It("should preserve source pod IP for traffic thru service cluster IP [LinuxOnly]", func() { ginkgo.It("should preserve source pod IP for traffic thru service cluster IP [LinuxOnly]", func() {
@ -955,9 +945,7 @@ var _ = SIGDescribe("Services", func() {
framework.ExpectNoError(err, "failed to delete pod: %s on node", serverPodName) framework.ExpectNoError(err, "failed to delete pod: %s on node", serverPodName)
}() }()
// Waiting for service to expose endpoint. validateEndpointsPortsOrFail(cs, ns, serviceName, portsByPodName{serverPodName: {servicePort}})
err = validateEndpointsPorts(cs, ns, serviceName, portsByPodName{serverPodName: {servicePort}})
framework.ExpectNoError(err, "failed to validate endpoints for service %s in namespace: %s", serviceName, ns)
ginkgo.By("Creating pause pod deployment") ginkgo.By("Creating pause pod deployment")
deployment := createPausePodDeployment(cs, "pause-pod", ns, nodeCounts) deployment := createPausePodDeployment(cs, "pause-pod", ns, nodeCounts)
@ -1009,8 +997,7 @@ var _ = SIGDescribe("Services", func() {
framework.ExpectNoError(e2epod.WaitTimeoutForPodReadyInNamespace(f.ClientSet, pod.Name, f.Namespace.Name, framework.PodStartTimeout)) framework.ExpectNoError(e2epod.WaitTimeoutForPodReadyInNamespace(f.ClientSet, pod.Name, f.Namespace.Name, framework.PodStartTimeout))
ginkgo.By("waiting for the service to expose an endpoint") ginkgo.By("waiting for the service to expose an endpoint")
err = validateEndpointsPorts(cs, ns, serviceName, portsByPodName{serverPodName: {servicePort}}) validateEndpointsPortsOrFail(cs, ns, serviceName, portsByPodName{serverPodName: {servicePort}})
framework.ExpectNoError(err, "failed to validate endpoints for service %s in namespace: %s", serviceName, ns)
ginkgo.By("Checking if the pod can reach itself") ginkgo.By("Checking if the pod can reach itself")
err = jig.CheckServiceReachability(svc, pod) err = jig.CheckServiceReachability(svc, pod)
@ -2544,16 +2531,17 @@ func translatePodNameToUID(c clientset.Interface, ns string, expectedEndpoints p
return portsByUID, nil return portsByUID, nil
} }
// validateEndpointsPorts validates that the given service exists and is served by the given expectedEndpoints. // validateEndpointsPortsOrFail validates that the given service exists and is served by the given expectedEndpoints.
func validateEndpointsPorts(c clientset.Interface, namespace, serviceName string, expectedEndpoints portsByPodName) error { func validateEndpointsPortsOrFail(c clientset.Interface, namespace, serviceName string, expectedEndpoints portsByPodName) {
ginkgo.By(fmt.Sprintf("waiting up to %v for service %s in namespace %s to expose endpoints %v", framework.ServiceStartTimeout, serviceName, namespace, expectedEndpoints)) ginkgo.By(fmt.Sprintf("waiting up to %v for service %s in namespace %s to expose endpoints %v", framework.ServiceStartTimeout, serviceName, namespace, expectedEndpoints))
expectedPortsByPodUID, err := translatePodNameToUID(c, namespace, expectedEndpoints) expectedPortsByPodUID, err := translatePodNameToUID(c, namespace, expectedEndpoints)
if err != nil { framework.ExpectNoError(err, "failed to translate pod name to UID, ns:%s, expectedEndpoints:%v", namespace, expectedEndpoints)
return err
}
i := 0 var (
if pollErr := wait.PollImmediate(time.Second, framework.ServiceStartTimeout, func() (bool, error) { pollErr error
i = 0
)
if pollErr = wait.PollImmediate(time.Second, framework.ServiceStartTimeout, func() (bool, error) {
i++ i++
ep, err := c.CoreV1().Endpoints(namespace).Get(context.TODO(), serviceName, metav1.GetOptions{}) ep, err := c.CoreV1().Endpoints(namespace).Get(context.TODO(), serviceName, metav1.GetOptions{})
@ -2601,9 +2589,8 @@ func validateEndpointsPorts(c clientset.Interface, namespace, serviceName string
} else { } else {
framework.Logf("Can't list pod debug info: %v", err) framework.Logf("Can't list pod debug info: %v", err)
} }
return fmt.Errorf("error waithing for service %s in namespace %s to expose endpoints %v: %v", serviceName, namespace, expectedEndpoints, pollErr)
} }
return nil framework.ExpectNoError(pollErr, "error waithing for service %s in namespace %s to expose endpoints %v: %v", serviceName, namespace, expectedEndpoints)
} }
func restartApiserver(namespace string, cs clientset.Interface) error { func restartApiserver(namespace string, cs clientset.Interface) error {
@ -2668,8 +2655,7 @@ var _ = SIGDescribe("SCTP [Feature:SCTP] [LinuxOnly]", func() {
framework.ExpectNoError(err, fmt.Sprintf("error while waiting for service:%s err: %v", serviceName, err)) framework.ExpectNoError(err, fmt.Sprintf("error while waiting for service:%s err: %v", serviceName, err))
ginkgo.By("validating endpoints do not exist yet") ginkgo.By("validating endpoints do not exist yet")
err = validateEndpointsPorts(cs, ns, serviceName, portsByPodName{}) validateEndpointsPortsOrFail(cs, ns, serviceName, portsByPodName{})
framework.ExpectNoError(err, "failed to validate endpoints for service %s in namespace: %s", serviceName, ns)
ginkgo.By("creating a pod for the service") ginkgo.By("creating a pod for the service")
names := map[string]bool{} names := map[string]bool{}
@ -2686,15 +2672,13 @@ var _ = SIGDescribe("SCTP [Feature:SCTP] [LinuxOnly]", func() {
}() }()
ginkgo.By("validating endpoints exists") ginkgo.By("validating endpoints exists")
err = validateEndpointsPorts(cs, ns, serviceName, portsByPodName{name1: {5060}}) validateEndpointsPortsOrFail(cs, ns, serviceName, portsByPodName{name1: {5060}})
framework.ExpectNoError(err, "failed to validate endpoints for service %s in namespace: %s", serviceName, ns)
ginkgo.By("deleting the pod") ginkgo.By("deleting the pod")
e2epod.DeletePodOrFail(cs, ns, name1) e2epod.DeletePodOrFail(cs, ns, name1)
delete(names, name1) delete(names, name1)
ginkgo.By("validating endpoints do not exist anymore") ginkgo.By("validating endpoints do not exist anymore")
err = validateEndpointsPorts(cs, ns, serviceName, portsByPodName{}) validateEndpointsPortsOrFail(cs, ns, serviceName, portsByPodName{})
framework.ExpectNoError(err, "failed to validate endpoints for service %s in namespace: %s", serviceName, ns)
ginkgo.By("validating sctp module is still not loaded") ginkgo.By("validating sctp module is still not loaded")
sctpLoadedAtEnd := CheckSCTPModuleLoadedOnNodes(f, nodes) sctpLoadedAtEnd := CheckSCTPModuleLoadedOnNodes(f, nodes)