14291: minimal stub so that tests don't panic when run without live config
authorPeter Amstutz <pamstutz@veritasgenetics.com>
Thu, 28 Feb 2019 15:35:00 +0000 (10:35 -0500)
committerPeter Amstutz <pamstutz@veritasgenetics.com>
Thu, 28 Feb 2019 15:35:00 +0000 (10:35 -0500)
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz@veritasgenetics.com>

lib/cloud/ec2/ec2.go
lib/cloud/ec2/ec2_test.go

index dab708c8d9c1fc4538222f13fe162cfb7c3a4ec1..9b75abe09c2853df54557f28cc2d2cb23ce5953e 100644 (file)
@@ -37,11 +37,19 @@ type ec2InstanceSetConfig struct {
        KeyPairName     string
 }
 
+type EC2Interface interface {
+       ImportKeyPair(input *ec2.ImportKeyPairInput) (*ec2.ImportKeyPairOutput, error)
+       RunInstances(input *ec2.RunInstancesInput) (*ec2.Reservation, error)
+       DescribeInstances(input *ec2.DescribeInstancesInput) (*ec2.DescribeInstancesOutput, error)
+       CreateTags(input *ec2.CreateTagsInput) (*ec2.CreateTagsOutput, error)
+       TerminateInstances(input *ec2.TerminateInstancesInput) (*ec2.TerminateInstancesOutput, error)
+}
+
 type ec2InstanceSet struct {
        ec2config    ec2InstanceSetConfig
        dispatcherID cloud.InstanceSetID
        logger       logrus.FieldLogger
-       client       *ec2.EC2
+       client       EC2Interface
        importedKey  bool
 }
 
index e76ec724c149c55883406fec0ad3cfc06e38f327..868de095650c4684abf49707c3ec893ebba53a69 100644 (file)
@@ -32,6 +32,8 @@ import (
        "git.curoverse.com/arvados.git/lib/cloud"
        "git.curoverse.com/arvados.git/sdk/go/arvados"
        "git.curoverse.com/arvados.git/sdk/go/config"
+       "github.com/aws/aws-sdk-go/aws"
+       "github.com/aws/aws-sdk-go/service/ec2"
        "github.com/sirupsen/logrus"
        "golang.org/x/crypto/ssh"
        check "gopkg.in/check.v1"
@@ -53,6 +55,32 @@ type testConfig struct {
        DriverParameters    json.RawMessage
 }
 
+type ec2stub struct {
+}
+
+func (e *ec2stub) ImportKeyPair(input *ec2.ImportKeyPairInput) (*ec2.ImportKeyPairOutput, error) {
+       return nil, nil
+}
+
+func (e *ec2stub) RunInstances(input *ec2.RunInstancesInput) (*ec2.Reservation, error) {
+       return &ec2.Reservation{Instances: []*ec2.Instance{&ec2.Instance{
+               InstanceId: aws.String("i-123"),
+               Tags:       input.TagSpecifications[0].Tags,
+       }}}, nil
+}
+
+func (e *ec2stub) DescribeInstances(input *ec2.DescribeInstancesInput) (*ec2.DescribeInstancesOutput, error) {
+       return &ec2.DescribeInstancesOutput{}, nil
+}
+
+func (e *ec2stub) CreateTags(input *ec2.CreateTagsInput) (*ec2.CreateTagsOutput, error) {
+       return nil, nil
+}
+
+func (e *ec2stub) TerminateInstances(input *ec2.TerminateInstancesInput) (*ec2.TerminateInstancesOutput, error) {
+       return nil, nil
+}
+
 func GetInstanceSet() (cloud.InstanceSet, cloud.ImageID, arvados.Cluster, error) {
        cluster := arvados.Cluster{
                InstanceTypes: arvados.InstanceTypeMap(map[string]arvados.InstanceType{
@@ -99,6 +127,7 @@ func GetInstanceSet() (cloud.InstanceSet, cloud.ImageID, arvados.Cluster, error)
                ec2config:    ec2InstanceSetConfig{},
                dispatcherID: "test123",
                logger:       logrus.StandardLogger(),
+               client:       &ec2stub{},
        }
        return &ap, cloud.ImageID("blob"), cluster, nil
 }