Svc REST: Test that ExternalName doesn't set IPs

This commit is contained in:
Tim Hockin 2020-11-25 16:00:55 -08:00
parent ca4a95ee49
commit 9ca582f3b7

View File

@ -339,14 +339,12 @@ func familyOf(ip string) api.IPFamily {
return api.IPFamily("unknown") return api.IPFamily("unknown")
} }
// Prove that create ignores IPFamily stuff when type is ExternalName. // Prove that create ignores IP and IPFamily stuff when type is ExternalName.
func TestCreateIgnoresIPFamilyForExternalName(t *testing.T) { func TestCreateIgnoresIPsForExternalName(t *testing.T) {
type testCase struct { type testCase struct {
name string name string
svc *api.Service svc *api.Service
expectError bool expectError bool
expectPolicy *api.IPFamilyPolicyType
expectFamilies []api.IPFamily
} }
// These cases were chosen from the full gamut to ensure all "interesting" // These cases were chosen from the full gamut to ensure all "interesting"
// cases are covered. // cases are covered.
@ -360,41 +358,31 @@ func TestCreateIgnoresIPFamilyForExternalName(t *testing.T) {
clusterFamilies: []api.IPFamily{api.IPv4Protocol}, clusterFamilies: []api.IPFamily{api.IPv4Protocol},
enableDualStack: false, enableDualStack: false,
cases: []testCase{{ cases: []testCase{{
name: "Policy:unset_Families:unset", name: "Policy:unset_Families:unset",
svc: svctest.MakeService("foo"), svc: svctest.MakeService("foo"),
expectPolicy: nil,
expectFamilies: nil,
}, { }, {
name: "Policy:SingleStack_Families:v4", name: "Policy:SingleStack_Families:v4",
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetIPFamilyPolicy(api.IPFamilyPolicySingleStack), svctest.SetIPFamilyPolicy(api.IPFamilyPolicySingleStack),
svctest.SetIPFamilies(api.IPv4Protocol)), svctest.SetIPFamilies(api.IPv4Protocol)),
expectPolicy: nil,
expectFamilies: nil,
}, { }, {
name: "Policy:PreferDualStack_Families:v4v6", name: "Policy:PreferDualStack_Families:v4v6",
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetIPFamilyPolicy(api.IPFamilyPolicyPreferDualStack), svctest.SetIPFamilyPolicy(api.IPFamilyPolicyPreferDualStack),
svctest.SetIPFamilies(api.IPv4Protocol, api.IPv6Protocol)), svctest.SetIPFamilies(api.IPv4Protocol, api.IPv6Protocol)),
expectPolicy: nil,
expectFamilies: nil,
}, { }, {
name: "Policy:RequireDualStack_Families:v6v4", name: "Policy:RequireDualStack_Families:v6v4",
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetIPFamilyPolicy(api.IPFamilyPolicyRequireDualStack), svctest.SetIPFamilyPolicy(api.IPFamilyPolicyRequireDualStack),
svctest.SetIPFamilies(api.IPv6Protocol, api.IPv4Protocol)), svctest.SetIPFamilies(api.IPv6Protocol, api.IPv4Protocol)),
expectPolicy: nil,
expectFamilies: nil,
}}, }},
}, { }, {
name: "singlestack:v6_gate:on", name: "singlestack:v6_gate:on",
clusterFamilies: []api.IPFamily{api.IPv6Protocol}, clusterFamilies: []api.IPFamily{api.IPv6Protocol},
enableDualStack: true, enableDualStack: true,
cases: []testCase{{ cases: []testCase{{
name: "Policy:unset_Families:unset", name: "Policy:unset_Families:unset",
svc: svctest.MakeService("foo"), svc: svctest.MakeService("foo"),
expectPolicy: nil,
expectFamilies: nil,
}, { }, {
name: "Policy:SingleStack_Families:v6", name: "Policy:SingleStack_Families:v6",
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
@ -419,41 +407,31 @@ func TestCreateIgnoresIPFamilyForExternalName(t *testing.T) {
clusterFamilies: []api.IPFamily{api.IPv4Protocol, api.IPv6Protocol}, clusterFamilies: []api.IPFamily{api.IPv4Protocol, api.IPv6Protocol},
enableDualStack: false, enableDualStack: false,
cases: []testCase{{ cases: []testCase{{
name: "Policy:unset_Families:unset", name: "Policy:unset_Families:unset",
svc: svctest.MakeService("foo"), svc: svctest.MakeService("foo"),
expectPolicy: nil,
expectFamilies: nil,
}, { }, {
name: "Policy:SingleStack_Families:v4", name: "Policy:SingleStack_Families:v4",
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetIPFamilyPolicy(api.IPFamilyPolicySingleStack), svctest.SetIPFamilyPolicy(api.IPFamilyPolicySingleStack),
svctest.SetIPFamilies(api.IPv4Protocol)), svctest.SetIPFamilies(api.IPv4Protocol)),
expectPolicy: nil,
expectFamilies: nil,
}, { }, {
name: "Policy:PreferDualStack_Families:v4v6", name: "Policy:PreferDualStack_Families:v4v6",
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetIPFamilyPolicy(api.IPFamilyPolicyPreferDualStack), svctest.SetIPFamilyPolicy(api.IPFamilyPolicyPreferDualStack),
svctest.SetIPFamilies(api.IPv4Protocol, api.IPv6Protocol)), svctest.SetIPFamilies(api.IPv4Protocol, api.IPv6Protocol)),
expectPolicy: nil,
expectFamilies: nil,
}, { }, {
name: "Policy:RequireDualStack_Families:v6v4", name: "Policy:RequireDualStack_Families:v6v4",
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetIPFamilyPolicy(api.IPFamilyPolicyRequireDualStack), svctest.SetIPFamilyPolicy(api.IPFamilyPolicyRequireDualStack),
svctest.SetIPFamilies(api.IPv6Protocol, api.IPv4Protocol)), svctest.SetIPFamilies(api.IPv6Protocol, api.IPv4Protocol)),
expectPolicy: nil,
expectFamilies: nil,
}}, }},
}, { }, {
name: "dualstack:v6v4_gate:on", name: "dualstack:v6v4_gate:on",
clusterFamilies: []api.IPFamily{api.IPv6Protocol, api.IPv4Protocol}, clusterFamilies: []api.IPFamily{api.IPv6Protocol, api.IPv4Protocol},
enableDualStack: true, enableDualStack: true,
cases: []testCase{{ cases: []testCase{{
name: "Policy:unset_Families:unset", name: "Policy:unset_Families:unset",
svc: svctest.MakeService("foo"), svc: svctest.MakeService("foo"),
expectPolicy: nil,
expectFamilies: nil,
}, { }, {
name: "Policy:SingleStack_Families:v6", name: "Policy:SingleStack_Families:v6",
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
@ -503,12 +481,18 @@ func TestCreateIgnoresIPFamilyForExternalName(t *testing.T) {
} }
createdSvc := createdObj.(*api.Service) createdSvc := createdObj.(*api.Service)
if want, got := fmtIPFamilyPolicy(itc.expectPolicy), fmtIPFamilyPolicy(createdSvc.Spec.IPFamilyPolicy); want != got { if want, got := fmtIPFamilyPolicy(nil), fmtIPFamilyPolicy(createdSvc.Spec.IPFamilyPolicy); want != got {
t.Errorf("wrong IPFamilyPolicy: want %s, got %s", want, got) t.Errorf("wrong IPFamilyPolicy: want %s, got %s", want, got)
} }
if want, got := fmtIPFamilies(itc.expectFamilies), fmtIPFamilies(createdSvc.Spec.IPFamilies); want != got { if want, got := fmtIPFamilies(nil), fmtIPFamilies(createdSvc.Spec.IPFamilies); want != got {
t.Errorf("wrong IPFamilies: want %s, got %s", want, got) t.Errorf("wrong IPFamilies: want %s, got %s", want, got)
} }
if len(createdSvc.Spec.ClusterIP) != 0 {
t.Errorf("expected no clusterIP, got %q", createdSvc.Spec.ClusterIP)
}
if len(createdSvc.Spec.ClusterIPs) != 0 {
t.Errorf("expected no clusterIPs, got %q", createdSvc.Spec.ClusterIPs)
}
}) })
} }
}) })