X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/b49229f98012d7c08ce02b8d28dbcc165c8a6c53..fc55e48b43faeb6909ea161d804d5600df3d5c5c:/lib/cloud/azure/azure_test.go diff --git a/lib/cloud/azure/azure_test.go b/lib/cloud/azure/azure_test.go index 94af0b9a26..de8d655b19 100644 --- a/lib/cloud/azure/azure_test.go +++ b/lib/cloud/azure/azure_test.go @@ -47,7 +47,7 @@ import ( "git.arvados.org/arvados.git/lib/dispatchcloud/test" "git.arvados.org/arvados.git/sdk/go/arvados" "git.arvados.org/arvados.git/sdk/go/config" - "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2018-06-01/compute" + "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-07-01/compute" "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2018-06-01/network" "github.com/Azure/azure-sdk-for-go/storage" "github.com/Azure/go-autorest/autorest" @@ -69,14 +69,17 @@ var _ = check.Suite(&AzureInstanceSetSuite{}) const testNamePrefix = "compute-test123-" -type VirtualMachinesClientStub struct{} +type VirtualMachinesClientStub struct { + vmParameters compute.VirtualMachine +} -func (*VirtualMachinesClientStub) createOrUpdate(ctx context.Context, +func (stub *VirtualMachinesClientStub) createOrUpdate(ctx context.Context, resourceGroupName string, VMName string, parameters compute.VirtualMachine) (result compute.VirtualMachine, err error) { parameters.ID = &VMName parameters.Name = &VMName + stub.vmParameters = parameters return parameters, nil } @@ -124,10 +127,10 @@ type testConfig struct { var live = flag.String("live-azure-cfg", "", "Test with real azure API, provide config file") -func GetInstanceSet() (cloud.InstanceSet, cloud.ImageID, arvados.Cluster, error) { +func GetInstanceSet() (*azureInstanceSet, cloud.ImageID, arvados.Cluster, error) { cluster := arvados.Cluster{ InstanceTypes: arvados.InstanceTypeMap(map[string]arvados.InstanceType{ - "tiny": arvados.InstanceType{ + "tiny": { Name: "tiny", ProviderType: "Standard_D1_v2", VCPUs: 1, @@ -136,6 +139,15 @@ func GetInstanceSet() (cloud.InstanceSet, cloud.ImageID, arvados.Cluster, error) Price: .02, Preemptible: false, }, + "tinyp": { + Name: "tiny", + ProviderType: "Standard_D1_v2", + VCPUs: 1, + RAM: 4000000000, + Scratch: 10000000000, + Price: .002, + Preemptible: true, + }, })} if *live != "" { var exampleCfg testConfig @@ -144,8 +156,8 @@ func GetInstanceSet() (cloud.InstanceSet, cloud.ImageID, arvados.Cluster, error) return nil, cloud.ImageID(""), cluster, err } - ap, err := newAzureInstanceSet(exampleCfg.DriverParameters, "test123", nil, logrus.StandardLogger()) - return ap, cloud.ImageID(exampleCfg.ImageIDForTestSuite), cluster, err + ap, err := newAzureInstanceSet(exampleCfg.DriverParameters, "test123", nil, logrus.StandardLogger(), nil) + return ap.(*azureInstanceSet), cloud.ImageID(exampleCfg.ImageIDForTestSuite), cluster, err } ap := azureInstanceSet{ azconfig: azureInstanceSetConfig{ @@ -156,6 +168,7 @@ func GetInstanceSet() (cloud.InstanceSet, cloud.ImageID, arvados.Cluster, error) logger: logrus.StandardLogger(), deleteNIC: make(chan string), deleteBlob: make(chan storage.Blob), + deleteDisk: make(chan compute.Disk), } ap.ctx, ap.stopFunc = context.WithCancel(context.Background()) ap.vmClient = &VirtualMachinesClientStub{} @@ -183,7 +196,25 @@ func (*AzureInstanceSetSuite) TestCreate(c *check.C) { tags := inst.Tags() c.Check(tags["TestTagName"], check.Equals, "test tag value") c.Logf("inst.String()=%v Address()=%v Tags()=%v", inst.String(), inst.Address(), tags) + if *live == "" { + c.Check(ap.vmClient.(*VirtualMachinesClientStub).vmParameters.VirtualMachineProperties.OsProfile.LinuxConfiguration.SSH, check.NotNil) + } + instPreemptable, err := ap.Create(cluster.InstanceTypes["tinyp"], + img, map[string]string{ + "TestTagName": "test tag value", + }, "umask 0600; echo -n test-file-data >/var/run/test-file", nil) + + c.Assert(err, check.IsNil) + + tags = instPreemptable.Tags() + c.Check(tags["TestTagName"], check.Equals, "test tag value") + c.Logf("instPreemptable.String()=%v Address()=%v Tags()=%v", instPreemptable.String(), instPreemptable.Address(), tags) + if *live == "" { + // Should not have set SSH option, because publickey + // arg was nil + c.Check(ap.vmClient.(*VirtualMachinesClientStub).vmParameters.VirtualMachineProperties.OsProfile.LinuxConfiguration.SSH, check.IsNil) + } } func (*AzureInstanceSetSuite) TestListInstances(c *check.C) { @@ -208,7 +239,7 @@ func (*AzureInstanceSetSuite) TestManageNics(c *check.C) { c.Fatal("Error making provider", err) } - ap.(*azureInstanceSet).manageNics() + ap.manageNics() ap.Stop() } @@ -218,7 +249,7 @@ func (*AzureInstanceSetSuite) TestManageBlobs(c *check.C) { c.Fatal("Error making provider", err) } - ap.(*azureInstanceSet).manageBlobs() + ap.manageBlobs() ap.Stop() } @@ -242,7 +273,7 @@ func (*AzureInstanceSetSuite) TestDeleteFake(c *check.C) { c.Fatal("Error making provider", err) } - _, err = ap.(*azureInstanceSet).netClient.delete(context.Background(), "fakefakefake", "fakefakefake") + _, err = ap.netClient.delete(context.Background(), "fakefakefake", "fakefakefake") de, ok := err.(autorest.DetailedError) if ok { @@ -258,7 +289,7 @@ func (*AzureInstanceSetSuite) TestWrapError(c *check.C) { DetailedError: autorest.DetailedError{ Response: &http.Response{ StatusCode: 429, - Header: map[string][]string{"Retry-After": []string{"123"}}, + Header: map[string][]string{"Retry-After": {"123"}}, }, }, ServiceError: &azure.ServiceError{},