X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/82fff312b0249ae6757bdffc59c985303998748a..21e9b0c724c06df630d01ccfedf1312d07f751a0:/lib/cloud/ec2/ec2_test.go diff --git a/lib/cloud/ec2/ec2_test.go b/lib/cloud/ec2/ec2_test.go index 8b754eacac..3cd238ded5 100644 --- a/lib/cloud/ec2/ec2_test.go +++ b/lib/cloud/ec2/ec2_test.go @@ -5,7 +5,7 @@ // // How to manually run individual tests against the real cloud: // -// $ go test -v git.curoverse.com/arvados.git/lib/cloud/ec2 -live-ec2-cfg ec2config.yml -check.f=TestCreate +// $ go test -v git.arvados.org/arvados.git/lib/cloud/ec2 -live-ec2-cfg ec2config.yml -check.f=TestCreate // // Tests should be run individually and in the order they are listed in the file: // @@ -25,13 +25,15 @@ package ec2 import ( "encoding/json" "flag" + "sync/atomic" "testing" - "git.curoverse.com/arvados.git/lib/cloud" - "git.curoverse.com/arvados.git/lib/dispatchcloud/test" - "git.curoverse.com/arvados.git/sdk/go/arvados" - "git.curoverse.com/arvados.git/sdk/go/config" + "git.arvados.org/arvados.git/lib/cloud" + "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/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" "github.com/aws/aws-sdk-go/service/ec2" "github.com/sirupsen/logrus" check "gopkg.in/check.v1" @@ -65,7 +67,7 @@ func (e *ec2stub) DescribeKeyPairs(input *ec2.DescribeKeyPairsInput) (*ec2.Descr } func (e *ec2stub) RunInstances(input *ec2.RunInstancesInput) (*ec2.Reservation, error) { - return &ec2.Reservation{Instances: []*ec2.Instance{&ec2.Instance{ + return &ec2.Reservation{Instances: []*ec2.Instance{{ InstanceId: aws.String("i-123"), Tags: input.TagSpecifications[0].Tags, }}}, nil @@ -86,7 +88,7 @@ func (e *ec2stub) TerminateInstances(input *ec2.TerminateInstancesInput) (*ec2.T func GetInstanceSet() (cloud.InstanceSet, cloud.ImageID, arvados.Cluster, error) { cluster := arvados.Cluster{ InstanceTypes: arvados.InstanceTypeMap(map[string]arvados.InstanceType{ - "tiny": arvados.InstanceType{ + "tiny": { Name: "tiny", ProviderType: "t2.micro", VCPUs: 1, @@ -95,7 +97,7 @@ func GetInstanceSet() (cloud.InstanceSet, cloud.ImageID, arvados.Cluster, error) Price: .02, Preemptible: false, }, - "tiny-with-extra-scratch": arvados.InstanceType{ + "tiny-with-extra-scratch": { Name: "tiny", ProviderType: "t2.micro", VCPUs: 1, @@ -104,7 +106,7 @@ func GetInstanceSet() (cloud.InstanceSet, cloud.ImageID, arvados.Cluster, error) Preemptible: false, AddedScratch: 20000000000, }, - "tiny-preemptible": arvados.InstanceType{ + "tiny-preemptible": { Name: "tiny", ProviderType: "t2.micro", VCPUs: 1, @@ -245,3 +247,15 @@ func (*EC2InstanceSetSuite) TestDestroyInstances(c *check.C) { c.Check(i.Destroy(), check.IsNil) } } + +func (*EC2InstanceSetSuite) TestWrapError(c *check.C) { + retryError := awserr.New("Throttling", "", nil) + wrapped := wrapError(retryError, &atomic.Value{}) + _, ok := wrapped.(cloud.RateLimitError) + c.Check(ok, check.Equals, true) + + quotaError := awserr.New("InsufficientInstanceCapacity", "", nil) + wrapped = wrapError(quotaError, nil) + _, ok = wrapped.(cloud.QuotaError) + c.Check(ok, check.Equals, true) +}