github.com/andresvia/terraform@v0.6.15-0.20160412045437-d51c75946785/builtin/providers/aws/resource_aws_autoscaling_policy_test.go (about) 1 package aws 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/aws/aws-sdk-go/aws" 8 "github.com/aws/aws-sdk-go/service/autoscaling" 9 "github.com/hashicorp/terraform/helper/resource" 10 "github.com/hashicorp/terraform/terraform" 11 ) 12 13 func TestAccAWSAutoscalingPolicy_basic(t *testing.T) { 14 var policy autoscaling.ScalingPolicy 15 16 resource.Test(t, resource.TestCase{ 17 PreCheck: func() { testAccPreCheck(t) }, 18 Providers: testAccProviders, 19 CheckDestroy: testAccCheckAWSAutoscalingPolicyDestroy, 20 Steps: []resource.TestStep{ 21 resource.TestStep{ 22 Config: testAccAWSAutoscalingPolicyConfig, 23 Check: resource.ComposeTestCheckFunc( 24 testAccCheckScalingPolicyExists("aws_autoscaling_policy.foobar_simple", &policy), 25 resource.TestCheckResourceAttr("aws_autoscaling_policy.foobar_simple", "adjustment_type", "ChangeInCapacity"), 26 resource.TestCheckResourceAttr("aws_autoscaling_policy.foobar_simple", "policy_type", "SimpleScaling"), 27 resource.TestCheckResourceAttr("aws_autoscaling_policy.foobar_simple", "cooldown", "300"), 28 resource.TestCheckResourceAttr("aws_autoscaling_policy.foobar_simple", "name", "foobar_simple"), 29 resource.TestCheckResourceAttr("aws_autoscaling_policy.foobar_simple", "scaling_adjustment", "2"), 30 resource.TestCheckResourceAttr("aws_autoscaling_policy.foobar_simple", "autoscaling_group_name", "terraform-test-foobar5"), 31 testAccCheckScalingPolicyExists("aws_autoscaling_policy.foobar_step", &policy), 32 resource.TestCheckResourceAttr("aws_autoscaling_policy.foobar_step", "adjustment_type", "ChangeInCapacity"), 33 resource.TestCheckResourceAttr("aws_autoscaling_policy.foobar_step", "policy_type", "StepScaling"), 34 resource.TestCheckResourceAttr("aws_autoscaling_policy.foobar_step", "name", "foobar_step"), 35 resource.TestCheckResourceAttr("aws_autoscaling_policy.foobar_step", "metric_aggregation_type", "Minimum"), 36 resource.TestCheckResourceAttr("aws_autoscaling_policy.foobar_step", "estimated_instance_warmup", "200"), 37 resource.TestCheckResourceAttr("aws_autoscaling_policy.foobar_step", "autoscaling_group_name", "terraform-test-foobar5"), 38 ), 39 }, 40 }, 41 }) 42 } 43 44 func testAccCheckScalingPolicyExists(n string, policy *autoscaling.ScalingPolicy) resource.TestCheckFunc { 45 return func(s *terraform.State) error { 46 rs, ok := s.RootModule().Resources[n] 47 if !ok { 48 return fmt.Errorf("Not found: %s", n) 49 } 50 51 conn := testAccProvider.Meta().(*AWSClient).autoscalingconn 52 params := &autoscaling.DescribePoliciesInput{ 53 AutoScalingGroupName: aws.String(rs.Primary.Attributes["autoscaling_group_name"]), 54 PolicyNames: []*string{aws.String(rs.Primary.ID)}, 55 } 56 resp, err := conn.DescribePolicies(params) 57 if err != nil { 58 return err 59 } 60 if len(resp.ScalingPolicies) == 0 { 61 return fmt.Errorf("ScalingPolicy not found") 62 } 63 64 return nil 65 } 66 } 67 68 func testAccCheckAWSAutoscalingPolicyDestroy(s *terraform.State) error { 69 conn := testAccProvider.Meta().(*AWSClient).autoscalingconn 70 71 for _, rs := range s.RootModule().Resources { 72 if rs.Type != "aws_autoscaling_group" { 73 continue 74 } 75 76 params := autoscaling.DescribePoliciesInput{ 77 AutoScalingGroupName: aws.String(rs.Primary.Attributes["autoscaling_group_name"]), 78 PolicyNames: []*string{aws.String(rs.Primary.ID)}, 79 } 80 81 resp, err := conn.DescribePolicies(¶ms) 82 83 if err == nil { 84 if len(resp.ScalingPolicies) != 0 && 85 *resp.ScalingPolicies[0].PolicyName == rs.Primary.ID { 86 return fmt.Errorf("Scaling Policy Still Exists: %s", rs.Primary.ID) 87 } 88 } 89 } 90 91 return nil 92 } 93 94 var testAccAWSAutoscalingPolicyConfig = fmt.Sprintf(` 95 resource "aws_launch_configuration" "foobar" { 96 name = "terraform-test-foobar5" 97 image_id = "ami-21f78e11" 98 instance_type = "t1.micro" 99 } 100 101 resource "aws_autoscaling_group" "foobar" { 102 availability_zones = ["us-west-2a"] 103 name = "terraform-test-foobar5" 104 max_size = 5 105 min_size = 2 106 health_check_grace_period = 300 107 health_check_type = "ELB" 108 force_delete = true 109 termination_policies = ["OldestInstance"] 110 launch_configuration = "${aws_launch_configuration.foobar.name}" 111 tag { 112 key = "Foo" 113 value = "foo-bar" 114 propagate_at_launch = true 115 } 116 } 117 118 resource "aws_autoscaling_policy" "foobar_simple" { 119 name = "foobar_simple" 120 adjustment_type = "ChangeInCapacity" 121 cooldown = 300 122 policy_type = "SimpleScaling" 123 scaling_adjustment = 2 124 autoscaling_group_name = "${aws_autoscaling_group.foobar.name}" 125 } 126 127 resource "aws_autoscaling_policy" "foobar_step" { 128 name = "foobar_step" 129 adjustment_type = "ChangeInCapacity" 130 policy_type = "StepScaling" 131 estimated_instance_warmup = 200 132 metric_aggregation_type = "Minimum" 133 step_adjustment { 134 scaling_adjustment = 1 135 metric_interval_lower_bound = 2.0 136 } 137 autoscaling_group_name = "${aws_autoscaling_group.foobar.name}" 138 } 139 `)