From cbe4bcfeeecf820d4c5c65189527138f1294292f Mon Sep 17 00:00:00 2001 From: Brad Davidson Date: Fri, 17 Feb 2023 01:26:20 +0000 Subject: [PATCH] Add test for filterByIPFamily Signed-off-by: Brad Davidson --- pkg/cloudprovider/servicelb_test.go | 91 +++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 pkg/cloudprovider/servicelb_test.go diff --git a/pkg/cloudprovider/servicelb_test.go b/pkg/cloudprovider/servicelb_test.go new file mode 100644 index 0000000000..f12baeb493 --- /dev/null +++ b/pkg/cloudprovider/servicelb_test.go @@ -0,0 +1,91 @@ +package cloudprovider + +import ( + "reflect" + "testing" + + core "k8s.io/api/core/v1" +) + +const ( + addrv4 = "1.2.3.4" + addrv6 = "2001:db8::1" +) + +func Test_UnitFilterByIPFamily(t *testing.T) { + type args struct { + ips []string + svc *core.Service + } + tests := []struct { + name string + args args + want []string + wantErr bool + }{ + { + name: "No IPFamily", + args: args{ + ips: []string{addrv4, addrv6}, + svc: &core.Service{ + Spec: core.ServiceSpec{ + IPFamilies: []core.IPFamily{}, + }, + }, + }, + want: nil, + wantErr: false, + }, + { + name: "IPv4 Only", + args: args{ + ips: []string{addrv4, addrv6}, + svc: &core.Service{ + Spec: core.ServiceSpec{ + IPFamilies: []core.IPFamily{core.IPv4Protocol}, + }, + }, + }, + want: []string{addrv4}, + wantErr: false, + }, + { + name: "IPv6 Only", + args: args{ + ips: []string{addrv4, addrv6}, + svc: &core.Service{ + Spec: core.ServiceSpec{ + IPFamilies: []core.IPFamily{core.IPv6Protocol}, + }, + }, + }, + want: []string{addrv6}, + wantErr: false, + }, + { + name: "Dual-Stack", + args: args{ + ips: []string{addrv4, addrv6}, + svc: &core.Service{ + Spec: core.ServiceSpec{ + IPFamilies: []core.IPFamily{core.IPv4Protocol, core.IPv6Protocol}, + }, + }, + }, + want: []string{addrv4, addrv6}, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := filterByIPFamily(tt.args.ips, tt.args.svc) + if (err != nil) != tt.wantErr { + t.Errorf("filterByIPFamily() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("filterByIPFamily() = %+v\nWant = %+v", got, tt.want) + } + }) + } +}