From c9bfb8533e0df731eef937123451aaa2e1ddeed7 Mon Sep 17 00:00:00 2001 From: dkokkino Date: Tue, 25 Mar 2025 13:28:04 +0100 Subject: [PATCH] Add unit tests for OpenStack platform defaults Adds unit tests in platform_test.py to verify OpenStack platform defaults. Covers cases such as: - Assigning a default OpenShift-managed load balancer when none is specified - Handling user-managed load balancers with and without VIPs - Ensuring correct API and Ingress VIP assignments --- pkg/types/openstack/defaults/platform_test.go | 120 ++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 pkg/types/openstack/defaults/platform_test.go diff --git a/pkg/types/openstack/defaults/platform_test.go b/pkg/types/openstack/defaults/platform_test.go new file mode 100644 index 0000000000..4ea552c3dd --- /dev/null +++ b/pkg/types/openstack/defaults/platform_test.go @@ -0,0 +1,120 @@ +package defaults + +import ( + "testing" + + "github.com/stretchr/testify/assert" + + configv1 "github.com/openshift/api/config/v1" + "github.com/openshift/installer/pkg/ipnet" + "github.com/openshift/installer/pkg/types" + "github.com/openshift/installer/pkg/types/openstack" +) + +func validPlatform() *openstack.Platform { + return &openstack.Platform{ + Cloud: "test-cloud", + ExternalNetwork: "test-network", + } +} + +func validNetworking() *types.Networking { + return &types.Networking{ + NetworkType: "OVNKubernetes", + MachineNetwork: []types.MachineNetworkEntry{{ + CIDR: *ipnet.MustParseCIDR("10.0.0.0/16"), + }}, + } +} + +func TestSetPlatformDefaults(t *testing.T) { + cases := []struct { + name string + platform *openstack.Platform + config *types.InstallConfig + networking *types.Networking + expectedLB configv1.PlatformLoadBalancerType + expectedAPIVIPs []string + expectedIngressVIPs []string + }{ + { + name: "No load balancer provided", + platform: func() *openstack.Platform { + p := validPlatform() + return p + }(), + networking: validNetworking(), + expectedAPIVIPs: []string{"10.0.0.5"}, + expectedIngressVIPs: []string{"10.0.0.7"}, + expectedLB: "OpenShiftManagedDefault", + }, + { + name: "Default Openshift Managed load balancer VIPs provided", + platform: func() *openstack.Platform { + p := validPlatform() + p.LoadBalancer = &configv1.OpenStackPlatformLoadBalancer{ + Type: configv1.LoadBalancerTypeOpenShiftManagedDefault, + } + p.APIVIPs = []string{"10.0.0.2"} + p.IngressVIPs = []string{"10.0.0.3"} + return p + }(), + networking: validNetworking(), + expectedAPIVIPs: []string{"10.0.0.2"}, + expectedIngressVIPs: []string{"10.0.0.3"}, + expectedLB: "OpenShiftManagedDefault", + }, + { + name: "Default Openshift Managed load balancer no VIPs provided", + platform: func() *openstack.Platform { + p := validPlatform() + p.LoadBalancer = &configv1.OpenStackPlatformLoadBalancer{ + Type: configv1.LoadBalancerTypeOpenShiftManagedDefault, + } + return p + }(), + networking: validNetworking(), + expectedAPIVIPs: []string{"10.0.0.5"}, + expectedIngressVIPs: []string{"10.0.0.7"}, + expectedLB: "OpenShiftManagedDefault", + }, + { + name: "User managed load balancer VIPs provided", + platform: func() *openstack.Platform { + p := validPlatform() + p.LoadBalancer = &configv1.OpenStackPlatformLoadBalancer{ + Type: configv1.LoadBalancerTypeUserManaged, + } + p.APIVIPs = []string{"192.168.100.10"} + p.IngressVIPs = []string{"192.168.100.11"} + return p + }(), + networking: validNetworking(), + expectedAPIVIPs: []string{"192.168.100.10"}, + expectedIngressVIPs: []string{"192.168.100.11"}, + expectedLB: "UserManaged", + }, + { + name: "User managed load balancer no VIPs provided", + platform: func() *openstack.Platform { + p := validPlatform() + p.LoadBalancer = &configv1.OpenStackPlatformLoadBalancer{ + Type: configv1.LoadBalancerTypeUserManaged, + } + return p + }(), + networking: validNetworking(), + expectedAPIVIPs: []string(nil), + expectedIngressVIPs: []string(nil), + expectedLB: "UserManaged", + }, + } + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + SetPlatformDefaults(tc.platform, tc.networking) + assert.Equal(t, tc.expectedLB, tc.platform.LoadBalancer.Type, "unexpected loadbalancer") + assert.Equal(t, tc.expectedAPIVIPs, tc.platform.APIVIPs, "unexpected APIVIPs") + assert.Equal(t, tc.expectedIngressVIPs, tc.platform.IngressVIPs, "unexpected IngressVIPs") + }) + } +}