From bea96abac326440692d8f51a43a6a004d2bef932 Mon Sep 17 00:00:00 2001 From: Antonio Ojea Date: Fri, 14 Oct 2022 15:44:11 +0000 Subject: [PATCH] test dualstack services with assigned clusterIPs --- test/integration/dualstack/dualstack_test.go | 79 ++++++++++++++++++-- 1 file changed, 71 insertions(+), 8 deletions(-) diff --git a/test/integration/dualstack/dualstack_test.go b/test/integration/dualstack/dualstack_test.go index 2f517ef0b6b..b052d1c45d9 100644 --- a/test/integration/dualstack/dualstack_test.go +++ b/test/integration/dualstack/dualstack_test.go @@ -81,6 +81,14 @@ func TestCreateServiceSingleStackIPv4(t *testing.T) { expectedIPFamilies: []v1.IPFamily{v1.IPv4Protocol}, expectError: false, }, + { + name: "Type ClusterIP - Client Allocated IP - Default IP Family - Policy Single Stack", + serviceType: v1.ServiceTypeClusterIP, + clusterIPs: []string{"10.0.0.16"}, + ipFamilies: nil, + expectedIPFamilies: []v1.IPFamily{v1.IPv4Protocol}, + expectError: false, + }, { name: "Type ClusterIP - Server Allocated IP - Default IP Family - Policy Prefer Dual Stack", serviceType: v1.ServiceTypeClusterIP, @@ -218,10 +226,9 @@ func TestCreateServiceSingleStackIPv4(t *testing.T) { Name: fmt.Sprintf("svc-test-%d", i), // use different services for each test }, Spec: v1.ServiceSpec{ - Type: tc.serviceType, - ClusterIPs: tc.clusterIPs, - IPFamilies: tc.ipFamilies, - IPFamilyPolicy: &tc.ipFamilyPolicy, + Type: tc.serviceType, + ClusterIPs: tc.clusterIPs, + IPFamilies: tc.ipFamilies, Ports: []v1.ServicePort{ { Port: 443, @@ -231,6 +238,14 @@ func TestCreateServiceSingleStackIPv4(t *testing.T) { }, } + if len(tc.ipFamilyPolicy) > 0 { + svc.Spec.IPFamilyPolicy = &tc.ipFamilyPolicy + } + + if len(tc.clusterIPs) > 0 { + svc.Spec.ClusterIP = tc.clusterIPs[0] + } + // create the service _, err := client.CoreV1().Services(metav1.NamespaceDefault).Create(context.TODO(), svc, metav1.CreateOptions{}) if (err != nil) != tc.expectError { @@ -509,6 +524,47 @@ func TestCreateServiceDualStackIPv4IPv6(t *testing.T) { ipFamilyPolicy: v1.IPFamilyPolicySingleStack, expectError: false, }, + { + name: "Type ClusterIP - Client Allocated IP - IPv4 Family", + serviceType: v1.ServiceTypeClusterIP, + clusterIPs: []string{"10.0.0.16"}, + ipFamilies: nil, + expectedIPFamilies: []v1.IPFamily{v1.IPv4Protocol}, + expectError: false, + }, + { + name: "Type ClusterIP - Client Allocated IP - IPv6 Family", + serviceType: v1.ServiceTypeClusterIP, + clusterIPs: []string{"2001:db8:1::16"}, + ipFamilies: nil, + expectedIPFamilies: []v1.IPFamily{v1.IPv6Protocol}, + expectError: false, + }, + { + name: "Type ClusterIP - Client Allocated IP - IPv4 IPv6 Family ", + serviceType: v1.ServiceTypeClusterIP, + clusterIPs: []string{"10.0.0.17", "2001:db8:1::17"}, + ipFamilies: nil, + expectedIPFamilies: []v1.IPFamily{v1.IPv4Protocol, v1.IPv6Protocol}, + expectError: true, + }, + { + name: "Type ClusterIP - Client Allocated IP - IPv4 IPv6 Family ", + serviceType: v1.ServiceTypeClusterIP, + clusterIPs: []string{"10.0.0.17", "2001:db8:1::17"}, + ipFamilies: nil, + ipFamilyPolicy: v1.IPFamilyPolicyPreferDualStack, + expectedIPFamilies: []v1.IPFamily{v1.IPv4Protocol, v1.IPv6Protocol}, + expectError: false, + }, + { + name: "Type ClusterIP - Client Allocated IP - IPv4 IPv6 Family ", + serviceType: v1.ServiceTypeClusterIP, + clusterIPs: []string{"10.0.0.18", "2001:db8:1::18"}, + ipFamilies: []v1.IPFamily{v1.IPv4Protocol, v1.IPv6Protocol}, + expectedIPFamilies: []v1.IPFamily{v1.IPv4Protocol, v1.IPv6Protocol}, + expectError: true, + }, { name: "Type ClusterIP - Server Allocated IP - Default IP Family - Policy Prefer Dual Stack", serviceType: v1.ServiceTypeClusterIP, @@ -647,10 +703,9 @@ func TestCreateServiceDualStackIPv4IPv6(t *testing.T) { Name: fmt.Sprintf("svc-test-%d", i), // use different services for each test }, Spec: v1.ServiceSpec{ - Type: tc.serviceType, - ClusterIPs: tc.clusterIPs, - IPFamilies: tc.ipFamilies, - IPFamilyPolicy: &tc.ipFamilyPolicy, + Type: tc.serviceType, + ClusterIPs: tc.clusterIPs, + IPFamilies: tc.ipFamilies, Ports: []v1.ServicePort{ { Port: 443, @@ -660,6 +715,14 @@ func TestCreateServiceDualStackIPv4IPv6(t *testing.T) { }, } + if len(tc.ipFamilyPolicy) > 0 { + svc.Spec.IPFamilyPolicy = &tc.ipFamilyPolicy + } + + if len(tc.clusterIPs) > 0 { + svc.Spec.ClusterIP = tc.clusterIPs[0] + } + // create a service _, err := client.CoreV1().Services(metav1.NamespaceDefault).Create(context.TODO(), svc, metav1.CreateOptions{}) if (err != nil) != tc.expectError {