diff --git a/staging/src/k8s.io/legacy-cloud-providers/azure/clients/vmssclient/BUILD b/staging/src/k8s.io/legacy-cloud-providers/azure/clients/vmssclient/BUILD index 301d2e0de68..e6ae9ef9553 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/azure/clients/vmssclient/BUILD +++ b/staging/src/k8s.io/legacy-cloud-providers/azure/clients/vmssclient/BUILD @@ -32,8 +32,10 @@ go_test( "//staging/src/k8s.io/legacy-cloud-providers/azure/clients:go_default_library", "//staging/src/k8s.io/legacy-cloud-providers/azure/clients/armclient:go_default_library", "//staging/src/k8s.io/legacy-cloud-providers/azure/clients/armclient/mockarmclient:go_default_library", + "//staging/src/k8s.io/legacy-cloud-providers/azure/retry:go_default_library", "//vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-12-01/compute:go_default_library", "//vendor/github.com/Azure/go-autorest/autorest:go_default_library", + "//vendor/github.com/Azure/go-autorest/autorest/azure:go_default_library", "//vendor/github.com/Azure/go-autorest/autorest/to:go_default_library", "//vendor/github.com/golang/mock/gomock:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", diff --git a/staging/src/k8s.io/legacy-cloud-providers/azure/clients/vmssclient/azure_vmssclient_test.go b/staging/src/k8s.io/legacy-cloud-providers/azure/clients/vmssclient/azure_vmssclient_test.go index fe3b6e8d39c..ea6a20f8854 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/azure/clients/vmssclient/azure_vmssclient_test.go +++ b/staging/src/k8s.io/legacy-cloud-providers/azure/clients/vmssclient/azure_vmssclient_test.go @@ -22,12 +22,14 @@ import ( "bytes" "context" "encoding/json" + "fmt" "io/ioutil" "net/http" "testing" "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-12-01/compute" "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" "github.com/Azure/go-autorest/autorest/to" "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" @@ -35,6 +37,7 @@ import ( azclients "k8s.io/legacy-cloud-providers/azure/clients" "k8s.io/legacy-cloud-providers/azure/clients/armclient" "k8s.io/legacy-cloud-providers/azure/clients/armclient/mockarmclient" + "k8s.io/legacy-cloud-providers/azure/retry" ) func TestGetNotFound(t *testing.T) { @@ -119,6 +122,41 @@ func TestCreateOrUpdate(t *testing.T) { assert.Nil(t, rerr) } +func TestCreateOrUpdateAsync(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + vmss := getTestVMSS("vmss1") + armClient := mockarmclient.NewMockInterface(ctrl) + future := &azure.Future{} + + armClient.EXPECT().PutResourceAsync(gomock.Any(), to.String(vmss.ID), vmss).Return(future, nil).Times(1) + vmssClient := getTestVMSSClient(armClient) + _, rerr := vmssClient.CreateOrUpdateAsync(context.TODO(), "rg", "vmss1", vmss) + assert.Nil(t, rerr) + + retryErr := &retry.Error{RawError: fmt.Errorf("error")} + armClient.EXPECT().PutResourceAsync(gomock.Any(), to.String(vmss.ID), vmss).Return(future, retryErr).Times(1) + _, rerr = vmssClient.CreateOrUpdateAsync(context.TODO(), "rg", "vmss1", vmss) + assert.Equal(t, retryErr, rerr) +} + +func TestWaitForAsyncOperationResult(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + armClient := mockarmclient.NewMockInterface(ctrl) + response := &http.Response{ + StatusCode: http.StatusOK, + Body: ioutil.NopCloser(bytes.NewReader([]byte(""))), + } + + armClient.EXPECT().WaitForAsyncOperationResult(gomock.Any(), &azure.Future{}, "VMSSWaitForAsyncOperationResult").Return(response, nil) + vmssClient := getTestVMSSClient(armClient) + _, err := vmssClient.WaitForAsyncOperationResult(context.TODO(), &azure.Future{}) + assert.Nil(t, err) +} + func TestDeleteInstances(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish()