From 187ad4695efda75d40f539ea3971684bf4b4c368 Mon Sep 17 00:00:00 2001 From: Cezary Zawdka Date: Fri, 31 Dec 2021 14:25:57 +0100 Subject: [PATCH] GCE load balancer: unit test for ensuring instance groups while using multiple IGs with rbs alpha feature gate enabled --- .../gce/gce_instancegroup.go | 2 +- .../gce/gce_loadbalancer_internal_test.go | 30 ++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/staging/src/k8s.io/legacy-cloud-providers/gce/gce_instancegroup.go b/staging/src/k8s.io/legacy-cloud-providers/gce/gce_instancegroup.go index f7a12e2cdc5..e8b37526221 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/gce/gce_instancegroup.go +++ b/staging/src/k8s.io/legacy-cloud-providers/gce/gce_instancegroup.go @@ -55,7 +55,7 @@ func (g *Cloud) DeleteInstanceGroup(name string, zone string) error { func (g *Cloud) FilterInstanceGroupsByName(name, zone string) ([]*compute.InstanceGroup, error) { ctx, cancel := cloud.ContextWithCallTimeout() defer cancel() - mc := newInstanceGroupMetricContext("list", zone) + mc := newInstanceGroupMetricContext("filter", zone) v, err := g.c.InstanceGroups().List(ctx, zone, filter.Regexp("name", name)) return v, mc.Observe(err) } diff --git a/staging/src/k8s.io/legacy-cloud-providers/gce/gce_loadbalancer_internal_test.go b/staging/src/k8s.io/legacy-cloud-providers/gce/gce_loadbalancer_internal_test.go index 5102c0c9973..e0930ebf688 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/gce/gce_loadbalancer_internal_test.go +++ b/staging/src/k8s.io/legacy-cloud-providers/gce/gce_loadbalancer_internal_test.go @@ -23,6 +23,7 @@ import ( "context" "fmt" "reflect" + "sort" "strings" "testing" @@ -165,12 +166,39 @@ func TestEnsureInternalInstanceGroupsLimit(t *testing.T) { igName := makeInstanceGroupName(vals.ClusterID) _, err = gce.ensureInternalInstanceGroups(igName, nodes) require.NoError(t, err) - instances, err := gce.ListInstancesInInstanceGroup(igName, vals.ZoneName, allInstances) require.NoError(t, err) assert.Equal(t, maxInstancesPerInstanceGroup, len(instances)) } +func TestEnsureMultipleInstanceGroups(t *testing.T) { + t.Parallel() + + vals := DefaultTestClusterValues() + gce, err := fakeGCECloud(vals) + require.NoError(t, err) + gce.AlphaFeatureGate = NewAlphaFeatureGate([]string{AlphaFeatureNetLBRbs}) + + nodes, err := createAndInsertNodes(gce, []string{"n1"}, vals.ZoneName) + require.NoError(t, err) + + baseName := makeInstanceGroupName(vals.ClusterID) + clusterIGs := []string{baseName, baseName + "-1", baseName + "-2", baseName + "-3"} + for _, igName := range append(clusterIGs, "zz-another-ig", "k8s-ig--cluster2-id") { + ig := &compute.InstanceGroup{Name: igName} + err := gce.CreateInstanceGroup(ig, vals.ZoneName) + require.NoError(t, err) + } + + igsFromCloud, err := gce.ensureInternalInstanceGroups(baseName, nodes) + require.NoError(t, err) + assert.Len(t, igsFromCloud, len(clusterIGs), "Incorrect number of Instance Groups") + sort.Strings(igsFromCloud) + for i, igName := range clusterIGs { + assert.True(t, strings.HasSuffix(igsFromCloud[i], igName)) + } +} + func TestEnsureInternalLoadBalancer(t *testing.T) { t.Parallel()