X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/15a809ab5d5cd892b7f3097f82ba271890721cd1..8be52d226caaefc971492d6639d63761c1077c1f:/lib/cloud/azure/azure_test.go diff --git a/lib/cloud/azure/azure_test.go b/lib/cloud/azure/azure_test.go index dfd9b95e0f..850a3fb427 100644 --- a/lib/cloud/azure/azure_test.go +++ b/lib/cloud/azure/azure_test.go @@ -3,30 +3,34 @@ // SPDX-License-Identifier: AGPL-3.0 // // -// How to manually run individual tests against the real cloud +// How to manually run individual tests against the real cloud: // -// $ go test -v git.curoverse.com/arvados.git/lib/cloud/azure -live-azure-cfg azconfig.yml -check.f=TestListInstances +// $ go test -v git.curoverse.com/arvados.git/lib/cloud/azure -live-azure-cfg azconfig.yml -check.f=TestCreate +// +// Tests should be run individually and in the order they are listed in the file: // // Example azconfig.yml: // // ImageIDForTestSuite: "https://example.blob.core.windows.net/system/Microsoft.Compute/Images/images/zzzzz-compute-osDisk.XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.vhd" -// SubscriptionID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX -// ClientID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX -// Location: centralus -// CloudEnvironment: AzurePublicCloud -// ClientSecret: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -// TenantId: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX -// ResourceGroup: zzzzz -// Network: zzzzz0:10 / 3:26:1 -// Subnet: zzzzz-subnet-private -// StorageAccount: example -// BlobContainer: vhds -// DeleteDanglingResourcesAfter: 20 +// DriverParameters: +// SubscriptionID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX +// ClientID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX +// Location: centralus +// CloudEnvironment: AzurePublicCloud +// ClientSecret: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +// TenantId: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX +// ResourceGroup: zzzzz +// Network: zzzzz +// Subnet: zzzzz-subnet-private +// StorageAccount: example +// BlobContainer: vhds +// DeleteDanglingResourcesAfter: 20s package azure import ( "context" + "encoding/json" "errors" "flag" "io/ioutil" @@ -65,7 +69,7 @@ type VirtualMachinesClientStub struct{} var testKey = []byte(`ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLQS1ExT2+WjA0d/hntEAyAtgeN1W2ik2QX8c2zO6HjlPHWXL92r07W0WMuDib40Pcevpi1BXeBWXA9ZB5KKMJB+ukaAu22KklnQuUmNvk6ZXnPKSkGxuCYvPQb08WhHf3p1VxiKfP3iauedBDM4x9/bkJohlBBQiFXzNUcQ+a6rKiMzmJN2gbL8ncyUzc+XQ5q4JndTwTGtOlzDiGOc9O4z5Dd76wtAVJneOuuNpwfFRVHThpJM6VThpCZOnl8APaceWXKeuwOuCae3COZMz++xQfxOfZ9Z8aIwo+TlQhsRaNfZ4Vjrop6ej8dtfZtgUFKfbXEOYaHrGrWGotFDTD example@example`) -func (*VirtualMachinesClientStub) CreateOrUpdate(ctx context.Context, +func (*VirtualMachinesClientStub) createOrUpdate(ctx context.Context, resourceGroupName string, VMName string, parameters compute.VirtualMachine) (result compute.VirtualMachine, err error) { @@ -74,17 +78,17 @@ func (*VirtualMachinesClientStub) CreateOrUpdate(ctx context.Context, return parameters, nil } -func (*VirtualMachinesClientStub) Delete(ctx context.Context, resourceGroupName string, VMName string) (result *http.Response, err error) { +func (*VirtualMachinesClientStub) delete(ctx context.Context, resourceGroupName string, VMName string) (result *http.Response, err error) { return nil, nil } -func (*VirtualMachinesClientStub) ListComplete(ctx context.Context, resourceGroupName string) (result compute.VirtualMachineListResultIterator, err error) { +func (*VirtualMachinesClientStub) listComplete(ctx context.Context, resourceGroupName string) (result compute.VirtualMachineListResultIterator, err error) { return compute.VirtualMachineListResultIterator{}, nil } type InterfacesClientStub struct{} -func (*InterfacesClientStub) CreateOrUpdate(ctx context.Context, +func (*InterfacesClientStub) createOrUpdate(ctx context.Context, resourceGroupName string, nicName string, parameters network.Interface) (result network.Interface, err error) { @@ -93,14 +97,19 @@ func (*InterfacesClientStub) CreateOrUpdate(ctx context.Context, return parameters, nil } -func (*InterfacesClientStub) Delete(ctx context.Context, resourceGroupName string, VMName string) (result *http.Response, err error) { +func (*InterfacesClientStub) delete(ctx context.Context, resourceGroupName string, VMName string) (result *http.Response, err error) { return nil, nil } -func (*InterfacesClientStub) ListComplete(ctx context.Context, resourceGroupName string) (result network.InterfaceListResultIterator, err error) { +func (*InterfacesClientStub) listComplete(ctx context.Context, resourceGroupName string) (result network.InterfaceListResultIterator, err error) { return network.InterfaceListResultIterator{}, nil } +type testConfig struct { + ImageIDForTestSuite string + DriverParameters json.RawMessage +} + var live = flag.String("live-azure-cfg", "", "Test with real azure API, provide config file") func GetInstanceSet() (cloud.InstanceSet, cloud.ImageID, arvados.Cluster, error) { @@ -117,16 +126,17 @@ func GetInstanceSet() (cloud.InstanceSet, cloud.ImageID, arvados.Cluster, error) }, })} if *live != "" { - exampleCfg := make(map[string]interface{}) + var exampleCfg testConfig err := config.LoadFile(&exampleCfg, *live) if err != nil { return nil, cloud.ImageID(""), cluster, err } - ap, err := NewAzureInstanceSet(exampleCfg, "test123", logrus.StandardLogger()) - return ap, cloud.ImageID(exampleCfg["ImageIDForTestSuite"].(string)), cluster, err + + ap, err := newAzureInstanceSet(exampleCfg.DriverParameters, "test123", logrus.StandardLogger()) + return ap, cloud.ImageID(exampleCfg.ImageIDForTestSuite), cluster, err } - ap := AzureInstanceSet{ - azconfig: AzureInstanceSetConfig{ + ap := azureInstanceSet{ + azconfig: azureInstanceSetConfig{ BlobContainer: "vhds", }, dispatcherID: "test123", @@ -187,7 +197,7 @@ func (*AzureInstanceSetSuite) TestManageNics(c *check.C) { c.Fatal("Error making provider", err) } - ap.(*AzureInstanceSet).ManageNics() + ap.(*azureInstanceSet).manageNics() ap.Stop() } @@ -197,7 +207,7 @@ func (*AzureInstanceSetSuite) TestManageBlobs(c *check.C) { c.Fatal("Error making provider", err) } - ap.(*AzureInstanceSet).ManageBlobs() + ap.(*azureInstanceSet).manageBlobs() ap.Stop() } @@ -221,7 +231,7 @@ func (*AzureInstanceSetSuite) TestDeleteFake(c *check.C) { c.Fatal("Error making provider", err) } - _, err = ap.(*AzureInstanceSet).netClient.Delete(context.Background(), "fakefakefake", "fakefakefake") + _, err = ap.(*azureInstanceSet).netClient.delete(context.Background(), "fakefakefake", "fakefakefake") de, ok := err.(autorest.DetailedError) if ok { @@ -243,7 +253,7 @@ func (*AzureInstanceSetSuite) TestWrapError(c *check.C) { ServiceError: &azure.ServiceError{}, }, } - wrapped := WrapAzureError(retryError) + wrapped := wrapAzureError(retryError) _, ok := wrapped.(cloud.RateLimitError) c.Check(ok, check.Equals, true) @@ -259,7 +269,7 @@ func (*AzureInstanceSetSuite) TestWrapError(c *check.C) { }, }, } - wrapped = WrapAzureError(quotaError) + wrapped = wrapAzureError(quotaError) _, ok = wrapped.(cloud.QuotaError) c.Check(ok, check.Equals, true) }