diff --git a/pkg/apis/core/v1/defaults_test.go b/pkg/apis/core/v1/defaults_test.go index 750ded75bf7..5b30be72986 100644 --- a/pkg/apis/core/v1/defaults_test.go +++ b/pkg/apis/core/v1/defaults_test.go @@ -1840,19 +1840,19 @@ func TestSetDefaultServiceInternalTrafficPolicy(t *testing.T) { local := v1.ServiceInternalTrafficPolicyLocal testCases := []struct { name string - expectedInternalTrafficPolicy v1.ServiceInternalTrafficPolicyType + expectedInternalTrafficPolicy *v1.ServiceInternalTrafficPolicyType svc v1.Service featureGateOn bool }{ { name: "must set default internalTrafficPolicy", - expectedInternalTrafficPolicy: v1.ServiceInternalTrafficPolicyCluster, + expectedInternalTrafficPolicy: &cluster, svc: v1.Service{}, featureGateOn: true, }, { name: "must not set default internalTrafficPolicy when it's cluster", - expectedInternalTrafficPolicy: v1.ServiceInternalTrafficPolicyCluster, + expectedInternalTrafficPolicy: &cluster, svc: v1.Service{ Spec: v1.ServiceSpec{ InternalTrafficPolicy: &cluster, @@ -1860,9 +1860,19 @@ func TestSetDefaultServiceInternalTrafficPolicy(t *testing.T) { }, featureGateOn: true, }, + { + name: "must not set default internalTrafficPolicy when type is ExternalName", + expectedInternalTrafficPolicy: nil, + svc: v1.Service{ + Spec: v1.ServiceSpec{ + Type: v1.ServiceTypeExternalName, + }, + }, + featureGateOn: true, + }, { name: "must not set default internalTrafficPolicy when it's local", - expectedInternalTrafficPolicy: v1.ServiceInternalTrafficPolicyLocal, + expectedInternalTrafficPolicy: &local, svc: v1.Service{ Spec: v1.ServiceSpec{ InternalTrafficPolicy: &local, @@ -1872,7 +1882,7 @@ func TestSetDefaultServiceInternalTrafficPolicy(t *testing.T) { }, { name: "must not set default internalTrafficPolicy when gate is disabled", - expectedInternalTrafficPolicy: "", + expectedInternalTrafficPolicy: nil, svc: v1.Service{}, featureGateOn: false, }, @@ -1883,14 +1893,8 @@ func TestSetDefaultServiceInternalTrafficPolicy(t *testing.T) { obj := roundTrip(t, runtime.Object(&test.svc)) svc := obj.(*v1.Service) - if test.expectedInternalTrafficPolicy == "" { - if svc.Spec.InternalTrafficPolicy != nil { - t.Fatalf("expected .spec.internalTrafficPolicy: null, got %v", *svc.Spec.InternalTrafficPolicy) - } - } else { - if *svc.Spec.InternalTrafficPolicy != test.expectedInternalTrafficPolicy { - t.Fatalf("expected .spec.internalTrafficPolicy: %v got %v", test.expectedInternalTrafficPolicy, *svc.Spec.InternalTrafficPolicy) - } + if !reflect.DeepEqual(svc.Spec.InternalTrafficPolicy, test.expectedInternalTrafficPolicy) { + t.Errorf("expected .spec.internalTrafficPolicy: %v got %v", test.expectedInternalTrafficPolicy, svc.Spec.InternalTrafficPolicy) } }) } diff --git a/pkg/apis/core/validation/validation_test.go b/pkg/apis/core/validation/validation_test.go index 9b81c9b3152..a32e3761f8d 100644 --- a/pkg/apis/core/validation/validation_test.go +++ b/pkg/apis/core/validation/validation_test.go @@ -12281,6 +12281,16 @@ func TestValidateServiceCreate(t *testing.T) { featureGates: []featuregate.Feature{features.ServiceInternalTrafficPolicy}, numErrs: 1, }, + { + name: "internalTrafficPolicy field nil when type is ExternalName", + tweakSvc: func(s *core.Service) { + s.Spec.InternalTrafficPolicy = nil + s.Spec.Type = core.ServiceTypeExternalName + s.Spec.ExternalName = "foo.bar.com" + }, + featureGates: []featuregate.Feature{features.ServiceInternalTrafficPolicy}, + numErrs: 0, + }, { name: "invalid internalTraffic field", tweakSvc: func(s *core.Service) {