func TestClusterUp(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() mockEcs := mock_ecs.NewMockECSClient(ctrl) mockCloudformation := mock_cloudformation.NewMockCloudformationClient(ctrl) mockEcs.EXPECT().Initialize(gomock.Any()) mockEcs.EXPECT().CreateCluster(gomock.Any()).Do(func(in interface{}) { if in.(string) != clusterName { t.Fatal("Expected to be called with " + clusterName + " not " + in.(string)) } }).Return(clusterName, nil) mockCloudformation.EXPECT().Initialize(gomock.Any()) mockCloudformation.EXPECT().ValidateStackExists(gomock.Any()).Return(errors.New("error")) mockCloudformation.EXPECT().CreateStack(gomock.Any(), gomock.Any(), gomock.Any()).Return("", nil) mockCloudformation.EXPECT().WaitUntilCreateComplete(gomock.Any()).Return(nil) globalSet := flag.NewFlagSet("ecs-cli", 0) globalSet.String("region", "us-west-1", "") globalContext := cli.NewContext(nil, globalSet, nil) flagSet := flag.NewFlagSet("ecs-cli-up", 0) flagSet.Bool(capabilityIAMFlag, true, "") flagSet.String(keypairNameFlag, "default", "") context := cli.NewContext(nil, flagSet, globalContext) err := createCluster(context, &mockReadWriter{}, mockEcs, mockCloudformation, ami.NewStaticAmiIds()) if err != nil { t.Fatal("Error bringing up cluster: ", err) } }
func TestClusterUpWithout2AvailabilityZones(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() mockECS := mock_ecs.NewMockECSClient(ctrl) mockCloudformation := mock_cloudformation.NewMockCloudformationClient(ctrl) vpcAZs := "us-west-2c" os.Setenv("AWS_ACCESS_KEY", "AKIDEXAMPLE") os.Setenv("AWS_SECRET_KEY", "secret") defer func() { os.Unsetenv("AWS_ACCESS_KEY") os.Unsetenv("AWS_SECRET_KEY") }() gomock.InOrder( mockCloudformation.EXPECT().Initialize(gomock.Any()), mockCloudformation.EXPECT().ValidateStackExists(stackName).Return(errors.New("error")), ) globalSet := flag.NewFlagSet("ecs-cli", 0) globalSet.String("region", "us-west-1", "") globalContext := cli.NewContext(nil, globalSet, nil) flagSet := flag.NewFlagSet("ecs-cli-up", 0) flagSet.Bool(capabilityIAMFlag, true, "") flagSet.String(keypairNameFlag, "default", "") flagSet.Bool(forceFlag, true, "") flagSet.String(vpcAzFlag, vpcAZs, "") context := cli.NewContext(nil, flagSet, globalContext) err := createCluster(context, newMockReadWriter(), mockECS, mockCloudformation, ami.NewStaticAmiIds()) if err == nil { t.Fatal("Expected error for 2 AZs") } }
func TestClusterUpForImageIdInput(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() mockEcs := mock_ecs.NewMockECSClient(ctrl) mockCloudformation := mock_cloudformation.NewMockCloudformationClient(ctrl) imageId := "ami-12345" os.Setenv("AWS_ACCESS_KEY", "AKIDEXAMPLE") os.Setenv("AWS_SECRET_KEY", "secret") defer func() { os.Unsetenv("AWS_ACCESS_KEY") os.Unsetenv("AWS_SECRET_KEY") }() gomock.InOrder( mockEcs.EXPECT().Initialize(gomock.Any()), mockEcs.EXPECT().CreateCluster(gomock.Any()).Do(func(in interface{}) { if in.(string) != clusterName { t.Fatal("Expected to be called with " + clusterName + " not " + in.(string)) } }).Return(clusterName, nil), ) gomock.InOrder( mockCloudformation.EXPECT().Initialize(gomock.Any()), mockCloudformation.EXPECT().ValidateStackExists(gomock.Any()).Return(errors.New("error")), mockCloudformation.EXPECT().CreateStack(gomock.Any(), gomock.Any(), gomock.Any()).Do(func(x, y, z interface{}) { cfnStackParams := z.(*cloudformation.CfnStackParams) param, err := cfnStackParams.GetParameter(cloudformation.ParameterKeyAmiId) if err != nil { t.Fatal("Expected image id params to be present") } if imageId != aws.StringValue(param.ParameterValue) { t.Fatalf("Expected image id to equal %s but got %s", imageId, aws.StringValue(param.ParameterValue)) } }).Return("", nil), mockCloudformation.EXPECT().WaitUntilCreateComplete(gomock.Any()).Return(nil), ) globalSet := flag.NewFlagSet("ecs-cli", 0) globalSet.String("region", "us-west-1", "") globalContext := cli.NewContext(nil, globalSet, nil) flagSet := flag.NewFlagSet("ecs-cli-up", 0) flagSet.Bool(capabilityIAMFlag, true, "") flagSet.String(keypairNameFlag, "default", "") flagSet.String(imageIdFlag, imageId, "") flagSet.String(certificateFlag, "default", "") context := cli.NewContext(nil, flagSet, globalContext) err := createCluster(context, &mockReadWriter{}, mockEcs, mockCloudformation, ami.NewStaticAmiIds()) if err != nil { t.Fatal("Error bringing up cluster: ", err) } }
func ClusterUp(c *cli.Context) { rdwr, err := config.NewReadWriter() if err != nil { logrus.Error("Error executing 'up': ", err) return } ecsClient := ecsclient.NewECSClient() cfnClient := cloudformation.NewCloudformationClient() amiIds := ami.NewStaticAmiIds() if err := createCluster(c, rdwr, ecsClient, cfnClient, amiIds); err != nil { logrus.Error("Error executing 'up': ", err) return } }
func TestClusterUpWithoutRegion(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() mockECS := mock_ecs.NewMockECSClient(ctrl) mockCloudformation := mock_cloudformation.NewMockCloudformationClient(ctrl) globalSet := flag.NewFlagSet("ecs-cli", 0) globalContext := cli.NewContext(nil, globalSet, nil) flagSet := flag.NewFlagSet("ecs-cli-up", 0) context := cli.NewContext(nil, flagSet, globalContext) err := createCluster(context, newMockReadWriter(), mockECS, mockCloudformation, ami.NewStaticAmiIds()) if err == nil { t.Fatal("Expected error bringing up cluster") } }
func TestClusterUpWithVPC(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() mockECS := mock_ecs.NewMockECSClient(ctrl) mockCloudformation := mock_cloudformation.NewMockCloudformationClient(ctrl) vpcId := "vpc-02dd3038" subnetIds := "subnet-04726b21,subnet-04346b21" os.Setenv("AWS_ACCESS_KEY", "AKIDEXAMPLE") os.Setenv("AWS_SECRET_KEY", "secret") defer func() { os.Unsetenv("AWS_ACCESS_KEY") os.Unsetenv("AWS_SECRET_KEY") }() gomock.InOrder( mockECS.EXPECT().Initialize(gomock.Any()), mockECS.EXPECT().CreateCluster(clusterName).Return(clusterName, nil), ) gomock.InOrder( mockCloudformation.EXPECT().Initialize(gomock.Any()), mockCloudformation.EXPECT().ValidateStackExists(stackName).Return(errors.New("error")), mockCloudformation.EXPECT().CreateStack(gomock.Any(), stackName, gomock.Any()).Return("", nil), mockCloudformation.EXPECT().WaitUntilCreateComplete(stackName).Return(nil), ) globalSet := flag.NewFlagSet("ecs-cli", 0) globalSet.String("region", "us-west-1", "") globalContext := cli.NewContext(nil, globalSet, nil) flagSet := flag.NewFlagSet("ecs-cli-up", 0) flagSet.Bool(capabilityIAMFlag, true, "") flagSet.String(keypairNameFlag, "default", "") flagSet.String(vpcIdFlag, vpcId, "") flagSet.String(subnetIdsFlag, subnetIds, "") context := cli.NewContext(nil, flagSet, globalContext) err := createCluster(context, newMockReadWriter(), mockECS, mockCloudformation, ami.NewStaticAmiIds()) if err != nil { t.Fatal("Error bringing up cluster: ", err) } }
func TestClusterUpWithoutKeyPair(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() mockEcs := mock_ecs.NewMockECSClient(ctrl) mockCloudformation := mock_cloudformation.NewMockCloudformationClient(ctrl) gomock.InOrder( mockCloudformation.EXPECT().Initialize(gomock.Any()), mockCloudformation.EXPECT().ValidateStackExists(gomock.Any()).Return(errors.New("error")), ) globalSet := flag.NewFlagSet("ecs-cli", 0) globalSet.String("region", "us-west-1", "") globalContext := cli.NewContext(nil, globalSet, nil) flagSet := flag.NewFlagSet("ecs-cli-up", 0) flagSet.Bool(capabilityIAMFlag, true, "") context := cli.NewContext(nil, flagSet, globalContext) err := createCluster(context, &mockReadWriter{}, mockEcs, mockCloudformation, ami.NewStaticAmiIds()) if err == nil { t.Fatal("Expected error for key pair name") } }
func TestClusterUpWith2SecurityGroups(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() mockECS := mock_ecs.NewMockECSClient(ctrl) mockCloudformation := mock_cloudformation.NewMockCloudformationClient(ctrl) securityGroupIds := "sg-eeaabc8d,sg-eaaebc8d" vpcId := "vpc-02dd3038" subnetIds := "subnet-04726b21,subnet-04346b21" os.Setenv("AWS_ACCESS_KEY", "AKIDEXAMPLE") os.Setenv("AWS_SECRET_KEY", "secret") defer func() { os.Unsetenv("AWS_ACCESS_KEY") os.Unsetenv("AWS_SECRET_KEY") }() gomock.InOrder( mockCloudformation.EXPECT().Initialize(gomock.Any()), mockCloudformation.EXPECT().ValidateStackExists(stackName).Return(errors.New("error")), ) globalSet := flag.NewFlagSet("ecs-cli", 0) globalSet.String("region", "us-west-1", "") globalContext := cli.NewContext(nil, globalSet, nil) flagSet := flag.NewFlagSet("ecs-cli-up", 0) flagSet.Bool(capabilityIAMFlag, true, "") flagSet.String(keypairNameFlag, "default", "") flagSet.Bool(forceFlag, true, "") flagSet.String(securityGroupFlag, securityGroupIds, "") flagSet.String(vpcIdFlag, vpcId, "") flagSet.String(subnetIdsFlag, subnetIds, "") context := cli.NewContext(nil, flagSet, globalContext) err := createCluster(context, newMockReadWriter(), mockECS, mockCloudformation, ami.NewStaticAmiIds()) if err == nil { t.Fatal("Expected error for security group without VPC") } }
func TestClusterUpWithClusterNameEmpty(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() mockECS := mock_ecs.NewMockECSClient(ctrl) mockCloudformation := mock_cloudformation.NewMockCloudformationClient(ctrl) os.Setenv("AWS_ACCESS_KEY", "AKIDEXAMPLE") os.Setenv("AWS_SECRET_KEY", "secret") defer func() { os.Unsetenv("AWS_ACCESS_KEY") os.Unsetenv("AWS_SECRET_KEY") }() globalSet := flag.NewFlagSet("ecs-cli", 0) globalSet.String("region", "us-west-1", "") globalContext := cli.NewContext(nil, globalSet, nil) flagSet := flag.NewFlagSet("ecs-cli-up", 0) flagSet.Bool(capabilityIAMFlag, true, "") flagSet.String(keypairNameFlag, "default", "") context := cli.NewContext(nil, flagSet, globalContext) err := createCluster(context, &mockReadWriter{clusterName: ""}, mockECS, mockCloudformation, ami.NewStaticAmiIds()) if err == nil { t.Fatal("Expected error bringing up cluster") } }