Skip to content

Commit fa13dc1

Browse files
authored
Merge pull request kubernetes#93907 from robscott/endpointslice-e2e-test-fix
Updating EndpointSlice e2e tests to accept duplicate EndpointSlices
2 parents 35c8fec + 17ff005 commit fa13dc1

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

test/e2e/network/endpointslice.go

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
apierrors "k8s.io/apimachinery/pkg/api/errors"
2828
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2929
"k8s.io/apimachinery/pkg/util/intstr"
30+
"k8s.io/apimachinery/pkg/util/sets"
3031
"k8s.io/apimachinery/pkg/util/wait"
3132
clientset "k8s.io/client-go/kubernetes"
3233
"k8s.io/kubernetes/test/e2e/framework"
@@ -406,9 +407,13 @@ func expectEndpointsAndSlices(cs clientset.Interface, ns string, svc *v1.Service
406407
framework.Failf("Expected 1 EndpointSlice, got %d", len(endpointSlices))
407408
}
408409

409-
totalEndpointSliceAddresses := 0
410+
// Use a set for deduping values. Duplicate addresses are technically valid
411+
// here although rare.
412+
esAddresses := sets.NewString()
410413
for _, endpointSlice := range endpointSlices {
411-
totalEndpointSliceAddresses += len(endpointSlice.Endpoints)
414+
for _, endpoint := range endpointSlice.Endpoints {
415+
esAddresses.Insert(endpoint.Addresses[0])
416+
}
412417
if len(pods) == 0 && len(endpointSlice.Ports) != 0 {
413418
framework.Failf("Expected EndpointSlice to have 0 ports, got %d", len(endpointSlice.Ports))
414419
}
@@ -463,8 +468,8 @@ func expectEndpointsAndSlices(cs clientset.Interface, ns string, svc *v1.Service
463468
}
464469
}
465470

466-
if len(pods) != totalEndpointSliceAddresses {
467-
framework.Failf("Expected %d addresses, got %d", len(pods), totalEndpointSliceAddresses)
471+
if len(pods) != esAddresses.Len() {
472+
framework.Failf("Expected %d addresses, got %d", len(pods), esAddresses.Len())
468473
}
469474
}
470475

@@ -492,8 +497,12 @@ func hasMatchingEndpointSlices(cs clientset.Interface, ns, svcName string, numEn
492497
framework.Logf("EndpointSlice for Service %s/%s not found", ns, svcName)
493498
return []discoveryv1beta1.EndpointSlice{}, false
494499
}
495-
if len(esList.Items) != numSlices {
496-
framework.Logf("Expected %d EndpointSlices for Service %s/%s, got %d", numSlices, ns, svcName, len(esList.Items))
500+
// In some cases the EndpointSlice controller will create more
501+
// EndpointSlices than necessary resulting in some duplication. This is
502+
// valid and tests should only fail here if less EndpointSlices than
503+
// expected are added.
504+
if len(esList.Items) < numSlices {
505+
framework.Logf("Expected at least %d EndpointSlices for Service %s/%s, got %d", numSlices, ns, svcName, len(esList.Items))
497506
for i, epSlice := range esList.Items {
498507
epsData, err := json.Marshal(epSlice)
499508
if err != nil {

0 commit comments

Comments
 (0)