Skip to content

Commit

Permalink
[cluster-autoscaler-release-1.30] test: clean up environments properl…
Browse files Browse the repository at this point in the history
…y before/after each unit test in azure_manager_test.go (#7751)

* test: clean up environments properly before/after each unit test in azure_manager_test.go

* test: use testing.Cleanup() to ensure loadEnv()
  • Loading branch information
comtalyst authored Jan 23, 2025
1 parent eb53934 commit ce4cc99
Showing 1 changed file with 90 additions and 0 deletions.
90 changes: 90 additions & 0 deletions cluster-autoscaler/cloudprovider/azure/azure_manager_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ package azure

import (
"fmt"
"os"
"reflect"
"strings"
"testing"
Expand Down Expand Up @@ -198,7 +199,26 @@ const (
testASG = "test-asg"
)

func saveAndClearEnv() []string {
originalEnv := os.Environ()
os.Clearenv()
return originalEnv
}

func loadEnv(originalEnv []string) {
os.Clearenv()
for _, e := range originalEnv {
parts := strings.SplitN(e, "=", 2)
os.Setenv(parts[0], parts[1])
}
}

func TestCreateAzureManagerValidConfig(t *testing.T) {
originalEnv := saveAndClearEnv()
t.Cleanup(func() {
loadEnv(originalEnv)
})

ctrl := gomock.NewController(t)
defer ctrl.Finish()
mockVMClient := mockvmclient.NewMockInterface(ctrl)
Expand Down Expand Up @@ -284,6 +304,11 @@ func TestCreateAzureManagerValidConfig(t *testing.T) {
}

func TestCreateAzureManagerLegacyConfig(t *testing.T) {
originalEnv := saveAndClearEnv()
t.Cleanup(func() {
loadEnv(originalEnv)
})

ctrl := gomock.NewController(t)
defer ctrl.Finish()
mockVMClient := mockvmclient.NewMockInterface(ctrl)
Expand Down Expand Up @@ -367,6 +392,11 @@ func TestCreateAzureManagerLegacyConfig(t *testing.T) {
}

func TestCreateAzureManagerValidConfigForStandardVMType(t *testing.T) {
originalEnv := saveAndClearEnv()
t.Cleanup(func() {
loadEnv(originalEnv)
})

ctrl := gomock.NewController(t)
defer ctrl.Finish()
mockVMClient := mockvmclient.NewMockInterface(ctrl)
Expand Down Expand Up @@ -474,12 +504,22 @@ func TestCreateAzureManagerValidConfigForStandardVMType(t *testing.T) {
}

func TestCreateAzureManagerValidConfigForStandardVMTypeWithoutDeploymentParameters(t *testing.T) {
originalEnv := saveAndClearEnv()
t.Cleanup(func() {
loadEnv(originalEnv)
})

manager, err := createAzureManagerInternal(strings.NewReader(validAzureCfgForStandardVMTypeWithoutDeploymentParameters), cloudprovider.NodeGroupDiscoveryOptions{}, &azClient{})
expectedErr := "open /var/lib/azure/azuredeploy.parameters.json: no such file or directory"
assert.Nil(t, manager)
assert.Equal(t, expectedErr, err.Error(), "return error does not match, expected: %v, actual: %v", expectedErr, err.Error())
}
func TestCreateAzureManagerValidConfigForVMsPool(t *testing.T) {
originalEnv := saveAndClearEnv()
t.Cleanup(func() {
loadEnv(originalEnv)
})

ctrl := gomock.NewController(t)
defer ctrl.Finish()
mockVMClient := mockvmclient.NewMockInterface(ctrl)
Expand Down Expand Up @@ -567,6 +607,11 @@ func TestCreateAzureManagerValidConfigForVMsPool(t *testing.T) {
}

func TestCreateAzureManagerWithNilConfig(t *testing.T) {
originalEnv := saveAndClearEnv()
t.Cleanup(func() {
loadEnv(originalEnv)
})

ctrl := gomock.NewController(t)
defer ctrl.Finish()
mockVMClient := mockvmclient.NewMockInterface(ctrl)
Expand Down Expand Up @@ -814,6 +859,11 @@ func TestCreateAzureManagerWithNilConfig(t *testing.T) {
}

func TestCreateAzureManagerWithEnvOverridingConfig(t *testing.T) {
originalEnv := saveAndClearEnv()
t.Cleanup(func() {
loadEnv(originalEnv)
})

ctrl := gomock.NewController(t)
defer ctrl.Finish()
mockVMClient := mockvmclient.NewMockInterface(ctrl)
Expand Down Expand Up @@ -945,11 +995,21 @@ func TestCreateAzureManagerWithEnvOverridingConfig(t *testing.T) {
}

func TestCreateAzureManagerInvalidConfig(t *testing.T) {
originalEnv := saveAndClearEnv()
t.Cleanup(func() {
loadEnv(originalEnv)
})

_, err := createAzureManagerInternal(strings.NewReader(invalidAzureCfg), cloudprovider.NodeGroupDiscoveryOptions{}, &azClient{})
assert.Error(t, err, "failed to unmarshal config body")
}

func TestFetchExplicitNodeGroups(t *testing.T) {
originalEnv := saveAndClearEnv()
t.Cleanup(func() {
loadEnv(originalEnv)
})

ctrl := gomock.NewController(t)
defer ctrl.Finish()

Expand Down Expand Up @@ -1025,6 +1085,11 @@ func TestFetchExplicitNodeGroups(t *testing.T) {
}

func TestGetFilteredAutoscalingGroupsVmss(t *testing.T) {
originalEnv := saveAndClearEnv()
t.Cleanup(func() {
loadEnv(originalEnv)
})

ctrl := gomock.NewController(t)
defer ctrl.Finish()

Expand Down Expand Up @@ -1070,6 +1135,11 @@ func TestGetFilteredAutoscalingGroupsVmss(t *testing.T) {
}

func TestGetFilteredAutoscalingGroupsWithInvalidVMType(t *testing.T) {
originalEnv := saveAndClearEnv()
t.Cleanup(func() {
loadEnv(originalEnv)
})

ctrl := gomock.NewController(t)
defer ctrl.Finish()

Expand All @@ -1094,6 +1164,11 @@ func TestGetFilteredAutoscalingGroupsWithInvalidVMType(t *testing.T) {
}

func TestFetchAutoAsgsVmss(t *testing.T) {
originalEnv := saveAndClearEnv()
t.Cleanup(func() {
loadEnv(originalEnv)
})

ctrl := gomock.NewController(t)
defer ctrl.Finish()

Expand Down Expand Up @@ -1148,6 +1223,11 @@ func TestFetchAutoAsgsVmss(t *testing.T) {
}

func TestManagerRefreshAndCleanup(t *testing.T) {
originalEnv := saveAndClearEnv()
t.Cleanup(func() {
loadEnv(originalEnv)
})

ctrl := gomock.NewController(t)
defer ctrl.Finish()

Expand All @@ -1158,6 +1238,11 @@ func TestManagerRefreshAndCleanup(t *testing.T) {
}

func TestGetScaleSetOptions(t *testing.T) {
originalEnv := saveAndClearEnv()
t.Cleanup(func() {
loadEnv(originalEnv)
})

manager := &AzureManager{
azureCache: &azureCache{
autoscalingOptions: make(map[azureRef]map[string]string),
Expand Down Expand Up @@ -1206,6 +1291,11 @@ func TestGetScaleSetOptions(t *testing.T) {
// if even one expected nodeGroup was not found. When manager creation errored out,
// BuildAzure returns log.Fatalf() which caused CAS to crash.
func TestVMSSNotFound(t *testing.T) {
originalEnv := saveAndClearEnv()
t.Cleanup(func() {
loadEnv(originalEnv)
})

// client setup
ctrl := gomock.NewController(t)
defer ctrl.Finish()
Expand Down

0 comments on commit ce4cc99

Please sign in to comment.