From 3c51478f65156ca86ba0ae76e4a79ad5d3535e72 Mon Sep 17 00:00:00 2001 From: Slavik Panasovets Date: Fri, 3 Dec 2021 13:49:31 +0000 Subject: [PATCH] add gce loadbalancer no-op finalizer and existingFwdRule tests --- .../gce/gce_loadbalancer_external_test.go | 100 ++++++++++++++++-- 1 file changed, 90 insertions(+), 10 deletions(-) diff --git a/staging/src/k8s.io/legacy-cloud-providers/gce/gce_loadbalancer_external_test.go b/staging/src/k8s.io/legacy-cloud-providers/gce/gce_loadbalancer_external_test.go index fe39187637a..9a6c9cfffa5 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/gce/gce_loadbalancer_external_test.go +++ b/staging/src/k8s.io/legacy-cloud-providers/gce/gce_loadbalancer_external_test.go @@ -583,16 +583,6 @@ func TestEnsureExternalLoadBalancerFailsWithNoNodes(t *testing.T) { func TestEnsureExternalLoadBalancerRBSAnnotation(t *testing.T) { t.Parallel() - vals := DefaultTestClusterValues() - gce, err := fakeGCECloud(DefaultTestClusterValues()) - require.NoError(t, err) - nodeNames := []string{"test-node-1"} - - nodes, err := createAndInsertNodes(gce, nodeNames, vals.ZoneName) - require.NoError(t, err) - - svc := fakeLoadbalancerService("") - for desc, tc := range map[string]struct { annotations map[string]string expectError *error @@ -611,6 +601,15 @@ func TestEnsureExternalLoadBalancerRBSAnnotation(t *testing.T) { }, } { t.Run(desc, func(t *testing.T) { + vals := DefaultTestClusterValues() + gce, err := fakeGCECloud(DefaultTestClusterValues()) + require.NoError(t, err) + nodeNames := []string{"test-node-1"} + + nodes, err := createAndInsertNodes(gce, nodeNames, vals.ZoneName) + require.NoError(t, err) + + svc := fakeLoadbalancerService("") svc.Annotations = tc.annotations _, err = gce.ensureExternalLoadBalancer(vals.ClusterName, vals.ClusterID, svc, nil, nodes) if tc.expectError != nil { @@ -622,6 +621,87 @@ func TestEnsureExternalLoadBalancerRBSAnnotation(t *testing.T) { } } +func TestEnsureExternalLoadBalancerRBSFinalizer(t *testing.T) { + t.Parallel() + + for desc, tc := range map[string]struct { + finalizers []string + expectError *error + }{ + "When has ELBRbsFinalizer": { + finalizers: []string{ELBRbsFinalizer}, + expectError: &cloudprovider.ImplementedElsewhere, + }, + "When has no finalizer": { + finalizers: []string{}, + expectError: nil, + }, + } { + t.Run(desc, func(t *testing.T) { + vals := DefaultTestClusterValues() + gce, err := fakeGCECloud(DefaultTestClusterValues()) + require.NoError(t, err) + nodeNames := []string{"test-node-1"} + + nodes, err := createAndInsertNodes(gce, nodeNames, vals.ZoneName) + require.NoError(t, err) + + svc := fakeLoadbalancerService("") + svc.Finalizers = tc.finalizers + _, err = gce.ensureExternalLoadBalancer(vals.ClusterName, vals.ClusterID, svc, nil, nodes) + if tc.expectError != nil { + assert.EqualError(t, err, (*tc.expectError).Error()) + } else { + assert.NoError(t, err, "Should not return an error "+desc) + } + }) + } +} + +func TestEnsureExternalLoadBalancerExistingFwdRule(t *testing.T) { + t.Parallel() + + for desc, tc := range map[string]struct { + existingForwardingRule *compute.ForwardingRule + expectError *error + }{ + "When has existingForwardingRule with backend service": { + existingForwardingRule: &compute.ForwardingRule{ + BackendService: "exists", + }, + expectError: &cloudprovider.ImplementedElsewhere, + }, + "When has existingForwardingRule with empty backend service": { + existingForwardingRule: &compute.ForwardingRule{ + BackendService: "", + }, + expectError: nil, + }, + "When has no existingForwardingRule": { + existingForwardingRule: nil, + expectError: nil, + }, + } { + t.Run(desc, func(t *testing.T) { + vals := DefaultTestClusterValues() + gce, err := fakeGCECloud(DefaultTestClusterValues()) + require.NoError(t, err) + nodeNames := []string{"test-node-1"} + + nodes, err := createAndInsertNodes(gce, nodeNames, vals.ZoneName) + require.NoError(t, err) + + svc := fakeLoadbalancerService("") + _, err = gce.ensureExternalLoadBalancer(vals.ClusterName, vals.ClusterID, svc, tc.existingForwardingRule, nodes) + if tc.expectError != nil { + assert.EqualError(t, err, (*tc.expectError).Error()) + } else { + assert.NoError(t, err, "Should not return an error "+desc) + } + }) + } +} + func TestForwardingRuleNeedsUpdate(t *testing.T) { t.Parallel()