Index: third_party/gsutil/boto/tests/unit/ec2/autoscale/test_group.py |
diff --git a/third_party/gsutil/boto/tests/unit/ec2/autoscale/test_group.py b/third_party/gsutil/boto/tests/unit/ec2/autoscale/test_group.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8c7baa83bdbe8216eefedb643ad05361d9680cfb |
--- /dev/null |
+++ b/third_party/gsutil/boto/tests/unit/ec2/autoscale/test_group.py |
@@ -0,0 +1,162 @@ |
+#!/usr/bin/env python |
+# Copyright (c) 2012 Amazon.com, Inc. or its affiliates. All Rights Reserved |
+# |
+# Permission is hereby granted, free of charge, to any person obtaining a |
+# copy of this software and associated documentation files (the |
+# "Software"), to deal in the Software without restriction, including |
+# without limitation the rights to use, copy, modify, merge, publish, dis- |
+# tribute, sublicense, and/or sell copies of the Software, and to permit |
+# persons to whom the Software is furnished to do so, subject to the fol- |
+# lowing conditions: |
+# |
+# The above copyright notice and this permission notice shall be included |
+# in all copies or substantial portions of the Software. |
+# |
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- |
+# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT |
+# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS |
+# IN THE SOFTWARE. |
+# |
+ |
+from tests.unit import unittest |
+from tests.unit import AWSMockServiceTestCase |
+ |
+from boto.ec2.autoscale import AutoScaleConnection |
+from boto.ec2.autoscale.group import AutoScalingGroup |
+ |
+ |
+class TestAutoScaleGroup(AWSMockServiceTestCase): |
+ connection_class = AutoScaleConnection |
+ |
+ def setUp(self): |
+ super(TestAutoScaleGroup, self).setUp() |
+ |
+ def default_body(self): |
+ return """ |
+ <CreateLaunchConfigurationResponse> |
+ <ResponseMetadata> |
+ <RequestId>requestid</RequestId> |
+ </ResponseMetadata> |
+ </CreateLaunchConfigurationResponse> |
+ """ |
+ |
+ def test_autoscaling_group_with_termination_policies(self): |
+ self.set_http_response(status_code=200) |
+ autoscale = AutoScalingGroup( |
+ name='foo', launch_config='lauch_config', |
+ min_size=1, max_size=2, |
+ termination_policies=['OldestInstance', 'OldestLaunchConfiguration']) |
+ self.service_connection.create_auto_scaling_group(autoscale) |
+ self.assert_request_parameters({ |
+ 'Action': 'CreateAutoScalingGroup', |
+ 'AutoScalingGroupName': 'foo', |
+ 'LaunchConfigurationName': 'lauch_config', |
+ 'MaxSize': 2, |
+ 'MinSize': 1, |
+ 'TerminationPolicies.member.1': 'OldestInstance', |
+ 'TerminationPolicies.member.2': 'OldestLaunchConfiguration', |
+ }, ignore_params_values=['Version']) |
+ |
+ |
+class TestParseAutoScaleGroupResponse(AWSMockServiceTestCase): |
+ connection_class = AutoScaleConnection |
+ |
+ def default_body(self): |
+ return """ |
+ <DescribeAutoScalingGroupsResult> |
+ <AutoScalingGroups> |
+ <member> |
+ <Tags/> |
+ <SuspendedProcesses/> |
+ <AutoScalingGroupName>test_group</AutoScalingGroupName> |
+ <HealthCheckType>EC2</HealthCheckType> |
+ <CreatedTime>2012-09-27T20:19:47.082Z</CreatedTime> |
+ <EnabledMetrics/> |
+ <LaunchConfigurationName>test_launchconfig</LaunchConfigurationName> |
+ <Instances> |
+ <member> |
+ <HealthStatus>Healthy</HealthStatus> |
+ <AvailabilityZone>us-east-1a</AvailabilityZone> |
+ <InstanceId>i-z118d054</InstanceId> |
+ <LaunchConfigurationName>test_launchconfig</LaunchConfigurationName> |
+ <LifecycleState>InService</LifecycleState> |
+ </member> |
+ </Instances> |
+ <DesiredCapacity>1</DesiredCapacity> |
+ <AvailabilityZones> |
+ <member>us-east-1c</member> |
+ <member>us-east-1a</member> |
+ </AvailabilityZones> |
+ <LoadBalancerNames/> |
+ <MinSize>1</MinSize> |
+ <VPCZoneIdentifier/> |
+ <HealthCheckGracePeriod>0</HealthCheckGracePeriod> |
+ <DefaultCooldown>300</DefaultCooldown> |
+ <AutoScalingGroupARN>myarn</AutoScalingGroupARN> |
+ <TerminationPolicies> |
+ <member>OldestInstance</member> |
+ <member>OldestLaunchConfiguration</member> |
+ </TerminationPolicies> |
+ <MaxSize>2</MaxSize> |
+ </member> |
+ </AutoScalingGroups> |
+ </DescribeAutoScalingGroupsResult> |
+ """ |
+ |
+ def test_get_all_groups_is_parsed_correctly(self): |
+ self.set_http_response(status_code=200) |
+ response = self.service_connection.get_all_groups(names=['test_group']) |
+ self.assertEqual(len(response), 1, response) |
+ as_group = response[0] |
+ self.assertEqual(as_group.availability_zones, ['us-east-1c', 'us-east-1a']) |
+ self.assertEqual(as_group.default_cooldown, 300) |
+ self.assertEqual(as_group.desired_capacity, 1) |
+ self.assertEqual(as_group.enabled_metrics, []) |
+ self.assertEqual(as_group.health_check_period, 0) |
+ self.assertEqual(as_group.health_check_type, 'EC2') |
+ self.assertEqual(as_group.launch_config_name, 'test_launchconfig') |
+ self.assertEqual(as_group.load_balancers, []) |
+ self.assertEqual(as_group.min_size, 1) |
+ self.assertEqual(as_group.max_size, 2) |
+ self.assertEqual(as_group.name, 'test_group') |
+ self.assertEqual(as_group.suspended_processes, []) |
+ self.assertEqual(as_group.tags, []) |
+ self.assertEqual(as_group.termination_policies, |
+ ['OldestInstance', 'OldestLaunchConfiguration']) |
+ |
+ |
+class TestDescribeTerminationPolicies(AWSMockServiceTestCase): |
+ connection_class = AutoScaleConnection |
+ |
+ def default_body(self): |
+ return """ |
+ <DescribeTerminationPolicyTypesResponse> |
+ <DescribeTerminationPolicyTypesResult> |
+ <TerminationPolicyTypes> |
+ <member>ClosestToNextInstanceHour</member> |
+ <member>Default</member> |
+ <member>NewestInstance</member> |
+ <member>OldestInstance</member> |
+ <member>OldestLaunchConfiguration</member> |
+ </TerminationPolicyTypes> |
+ </DescribeTerminationPolicyTypesResult> |
+ <ResponseMetadata> |
+ <RequestId>requestid</RequestId> |
+ </ResponseMetadata> |
+ </DescribeTerminationPolicyTypesResponse> |
+ """ |
+ |
+ def test_autoscaling_group_with_termination_policies(self): |
+ self.set_http_response(status_code=200) |
+ response = self.service_connection.get_termination_policies() |
+ self.assertListEqual( |
+ response, |
+ ['ClosestToNextInstanceHour', 'Default', |
+ 'NewestInstance', 'OldestInstance', 'OldestLaunchConfiguration']) |
+ |
+ |
+if __name__ == '__main__': |
+ unittest.main() |