From 5b5101b5630d25f7f996b969ec48e0849b49136a Mon Sep 17 00:00:00 2001 From: Pengfei Ni Date: Thu, 23 Aug 2018 10:38:40 +0800 Subject: [PATCH] Add unit tests for GetNodeResourceGroup and GetResourceGroups --- .../providers/azure/azure_test.go | 99 ++++++++++++++++++- 1 file changed, 98 insertions(+), 1 deletion(-) diff --git a/pkg/cloudprovider/providers/azure/azure_test.go b/pkg/cloudprovider/providers/azure/azure_test.go index 80a8dd96d04..a3a7cd848fc 100644 --- a/pkg/cloudprovider/providers/azure/azure_test.go +++ b/pkg/cloudprovider/providers/azure/azure_test.go @@ -1067,7 +1067,7 @@ func getClusterResources(az *Cloud, vmCount int, availabilitySetCount int) (clus az.InterfacesClient.CreateOrUpdate(ctx, az.Config.ResourceGroup, nicName, newNIC) // create vm - asID := az.getAvailabilitySetID(asName) + asID := az.getAvailabilitySetID(az.Config.ResourceGroup, asName) newVM := compute.VirtualMachine{ Name: &vmName, Location: &az.Config.Location, @@ -2773,3 +2773,100 @@ func TestGetResourceGroupFromDiskURI(t *testing.T) { } } } + +func TestGetResourceGroups(t *testing.T) { + tests := []struct { + name string + nodeResourceGroups map[string]string + expected sets.String + informerSynced bool + expectError bool + }{ + { + name: "cloud provider configured RG should be returned by default", + nodeResourceGroups: map[string]string{}, + informerSynced: true, + expected: sets.NewString("rg"), + }, + { + name: "cloud provider configured RG and node RGs should be returned", + nodeResourceGroups: map[string]string{"node1": "rg1", "node2": "rg2"}, + informerSynced: true, + expected: sets.NewString("rg", "rg1", "rg2"), + }, + { + name: "error should be returned if informer hasn't synced yet", + nodeResourceGroups: map[string]string{"node1": "rg1", "node2": "rg2"}, + informerSynced: false, + expectError: true, + }, + } + + az := getTestCloud() + for _, test := range tests { + az.nodeResourceGroups = test.nodeResourceGroups + if test.informerSynced { + az.nodeInformerSynced = func() bool { return true } + } else { + az.nodeInformerSynced = func() bool { return false } + } + actual, err := az.GetResourceGroups() + if test.expectError { + assert.NotNil(t, err, test.name) + continue + } + + assert.Nil(t, err, test.name) + assert.Equal(t, test.expected, actual, test.name) + } +} + +func TestGetNodeResourceGroup(t *testing.T) { + tests := []struct { + name string + nodeResourceGroups map[string]string + node string + expected string + informerSynced bool + expectError bool + }{ + { + name: "cloud provider configured RG should be returned by default", + nodeResourceGroups: map[string]string{}, + informerSynced: true, + node: "node1", + expected: "rg", + }, + { + name: "node RGs should be returned", + nodeResourceGroups: map[string]string{"node1": "rg1", "node2": "rg2"}, + informerSynced: true, + node: "node1", + expected: "rg1", + }, + { + name: "error should be returned if informer hasn't synced yet", + nodeResourceGroups: map[string]string{"node1": "rg1", "node2": "rg2"}, + informerSynced: false, + expectError: true, + }, + } + + az := getTestCloud() + for _, test := range tests { + az.nodeResourceGroups = test.nodeResourceGroups + if test.informerSynced { + az.nodeInformerSynced = func() bool { return true } + } else { + az.nodeInformerSynced = func() bool { return false } + } + actual, err := az.GetNodeResourceGroup(test.node) + if test.expectError { + assert.NotNil(t, err, test.name) + continue + } + + assert.Nil(t, err, test.name) + assert.Equal(t, test.expected, actual, test.name) + } +}