Rewrite deprecated Autoscaling tests (#3907)
This commit is contained in:
parent
097a260dce
commit
f17b4a3904
@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
## apigateway
|
## apigateway
|
||||||
<details>
|
<details>
|
||||||
<summary>43% implemented</summary>
|
<summary>44% implemented</summary>
|
||||||
|
|
||||||
- [X] create_api_key
|
- [X] create_api_key
|
||||||
- [X] create_authorizer
|
- [X] create_authorizer
|
||||||
@ -50,7 +50,7 @@
|
|||||||
- [ ] delete_gateway_response
|
- [ ] delete_gateway_response
|
||||||
- [X] delete_integration
|
- [X] delete_integration
|
||||||
- [X] delete_integration_response
|
- [X] delete_integration_response
|
||||||
- [ ] delete_method
|
- [X] delete_method
|
||||||
- [X] delete_method_response
|
- [X] delete_method_response
|
||||||
- [ ] delete_model
|
- [ ] delete_model
|
||||||
- [ ] delete_request_validator
|
- [ ] delete_request_validator
|
||||||
|
@ -29,6 +29,7 @@ from .utils import (
|
|||||||
from tests import EXAMPLE_AMI_ID
|
from tests import EXAMPLE_AMI_ID
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
@mock_elb_deprecated
|
@mock_elb_deprecated
|
||||||
@mock_ec2_deprecated
|
@mock_ec2_deprecated
|
||||||
@ -118,6 +119,111 @@ def test_create_autoscaling_group():
|
|||||||
len(instances_attached).should.equal(INSTANCE_COUNT_START + INSTANCE_COUNT_GROUP)
|
len(instances_attached).should.equal(INSTANCE_COUNT_START + INSTANCE_COUNT_GROUP)
|
||||||
|
|
||||||
|
|
||||||
|
@mock_autoscaling
|
||||||
|
@mock_ec2
|
||||||
|
@mock_elb
|
||||||
|
def test_create_autoscaling_group_boto3_within_elb():
|
||||||
|
mocked_networking = setup_networking()
|
||||||
|
elb_client = boto3.client("elb", region_name="us-east-1")
|
||||||
|
elb_client.create_load_balancer(
|
||||||
|
LoadBalancerName="test_lb",
|
||||||
|
Listeners=[{"Protocol": "http", "LoadBalancerPort": 80, "InstancePort": 8080}],
|
||||||
|
AvailabilityZones=[],
|
||||||
|
)
|
||||||
|
|
||||||
|
# we attach a couple of machines to the load balancer
|
||||||
|
# that are not managed by the auto scaling group
|
||||||
|
INSTANCE_COUNT_START = 3
|
||||||
|
INSTANCE_COUNT_GROUP = 2
|
||||||
|
ec2 = boto3.resource("ec2", region_name="us-east-1")
|
||||||
|
instances = ec2.create_instances(
|
||||||
|
ImageId=EXAMPLE_AMI_ID,
|
||||||
|
InstanceType="t1.micro",
|
||||||
|
MaxCount=INSTANCE_COUNT_START,
|
||||||
|
MinCount=INSTANCE_COUNT_START,
|
||||||
|
SubnetId=mocked_networking["subnet1"],
|
||||||
|
)
|
||||||
|
|
||||||
|
instances_ids = [_.id for _ in instances]
|
||||||
|
elb_client.register_instances_with_load_balancer(
|
||||||
|
LoadBalancerName="test_lb",
|
||||||
|
Instances=[{"InstanceId": id} for id in instances_ids],
|
||||||
|
)
|
||||||
|
|
||||||
|
as_client = boto3.client("autoscaling", region_name="us-east-1")
|
||||||
|
as_client.create_launch_configuration(
|
||||||
|
LaunchConfigurationName="tester",
|
||||||
|
ImageId=EXAMPLE_AMI_ID,
|
||||||
|
InstanceType="t2.medium",
|
||||||
|
)
|
||||||
|
|
||||||
|
as_client.create_auto_scaling_group(
|
||||||
|
AutoScalingGroupName="tester_group",
|
||||||
|
AvailabilityZones=["us-east-1a", "us-east-1b"],
|
||||||
|
DefaultCooldown=60,
|
||||||
|
DesiredCapacity=INSTANCE_COUNT_GROUP,
|
||||||
|
HealthCheckGracePeriod=100,
|
||||||
|
HealthCheckType="EC2",
|
||||||
|
LaunchConfigurationName="tester",
|
||||||
|
LoadBalancerNames=["test_lb"],
|
||||||
|
MinSize=INSTANCE_COUNT_GROUP,
|
||||||
|
MaxSize=INSTANCE_COUNT_GROUP,
|
||||||
|
PlacementGroup="test_placement",
|
||||||
|
Tags=[
|
||||||
|
{
|
||||||
|
"ResourceId": "tester_group",
|
||||||
|
"ResourceType": "group",
|
||||||
|
"Key": "test_key",
|
||||||
|
"Value": "test_value",
|
||||||
|
"PropagateAtLaunch": True,
|
||||||
|
}
|
||||||
|
],
|
||||||
|
TerminationPolicies=["OldestInstance", "NewestInstance"],
|
||||||
|
VPCZoneIdentifier="{subnet1},{subnet2}".format(
|
||||||
|
subnet1=mocked_networking["subnet1"], subnet2=mocked_networking["subnet2"]
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
group = as_client.describe_auto_scaling_groups()["AutoScalingGroups"][0]
|
||||||
|
group["AutoScalingGroupName"].should.equal("tester_group")
|
||||||
|
set(group["AvailabilityZones"]).should.equal(set(["us-east-1a", "us-east-1b"]))
|
||||||
|
group["DesiredCapacity"].should.equal(2)
|
||||||
|
group["MaxSize"].should.equal(INSTANCE_COUNT_GROUP)
|
||||||
|
group["MinSize"].should.equal(INSTANCE_COUNT_GROUP)
|
||||||
|
group["Instances"].should.have.length_of(INSTANCE_COUNT_GROUP)
|
||||||
|
group["VPCZoneIdentifier"].should.equal(
|
||||||
|
"{subnet1},{subnet2}".format(
|
||||||
|
subnet1=mocked_networking["subnet1"], subnet2=mocked_networking["subnet2"]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
group["LaunchConfigurationName"].should.equal("tester")
|
||||||
|
group["DefaultCooldown"].should.equal(60)
|
||||||
|
group["HealthCheckGracePeriod"].should.equal(100)
|
||||||
|
group["HealthCheckType"].should.equal("EC2")
|
||||||
|
group["LoadBalancerNames"].should.equal(["test_lb"])
|
||||||
|
group["PlacementGroup"].should.equal("test_placement")
|
||||||
|
list(group["TerminationPolicies"]).should.equal(
|
||||||
|
["OldestInstance", "NewestInstance"]
|
||||||
|
)
|
||||||
|
list(group["Tags"]).should.have.length_of(1)
|
||||||
|
tag = group["Tags"][0]
|
||||||
|
tag["ResourceId"].should.equal("tester_group")
|
||||||
|
tag["Key"].should.equal("test_key")
|
||||||
|
tag["Value"].should.equal("test_value")
|
||||||
|
tag["PropagateAtLaunch"].should.equal(True)
|
||||||
|
|
||||||
|
instances_attached = elb_client.describe_instance_health(
|
||||||
|
LoadBalancerName="test_lb"
|
||||||
|
)["InstanceStates"]
|
||||||
|
instances_attached.should.have.length_of(
|
||||||
|
INSTANCE_COUNT_START + INSTANCE_COUNT_GROUP
|
||||||
|
)
|
||||||
|
attached_ids = [i["InstanceId"] for i in instances_attached]
|
||||||
|
for ec2_instance_id in instances_ids:
|
||||||
|
attached_ids.should.contain(ec2_instance_id)
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_create_autoscaling_groups_defaults():
|
def test_create_autoscaling_groups_defaults():
|
||||||
"""Test with the minimum inputs and check that all of the proper defaults
|
"""Test with the minimum inputs and check that all of the proper defaults
|
||||||
@ -158,6 +264,46 @@ def test_create_autoscaling_groups_defaults():
|
|||||||
list(group.tags).should.equal([])
|
list(group.tags).should.equal([])
|
||||||
|
|
||||||
|
|
||||||
|
@mock_autoscaling
|
||||||
|
def test_create_autoscaling_groups_defaults_boto3():
|
||||||
|
"""Test with the minimum inputs and check that all of the proper defaults
|
||||||
|
are assigned for the other attributes"""
|
||||||
|
|
||||||
|
mocked_networking = setup_networking()
|
||||||
|
as_client = boto3.client("autoscaling", region_name="us-east-1")
|
||||||
|
as_client.create_launch_configuration(
|
||||||
|
LaunchConfigurationName="tester_config",
|
||||||
|
ImageId=EXAMPLE_AMI_ID,
|
||||||
|
InstanceType="t2.medium",
|
||||||
|
)
|
||||||
|
|
||||||
|
as_client.create_auto_scaling_group(
|
||||||
|
AutoScalingGroupName="tester_group",
|
||||||
|
LaunchConfigurationName="tester_config",
|
||||||
|
MinSize=2,
|
||||||
|
MaxSize=2,
|
||||||
|
VPCZoneIdentifier=mocked_networking["subnet1"],
|
||||||
|
)
|
||||||
|
|
||||||
|
group = as_client.describe_auto_scaling_groups()["AutoScalingGroups"][0]
|
||||||
|
group["AutoScalingGroupName"].should.equal("tester_group")
|
||||||
|
group["MaxSize"].should.equal(2)
|
||||||
|
group["MinSize"].should.equal(2)
|
||||||
|
group["LaunchConfigurationName"].should.equal("tester_config")
|
||||||
|
|
||||||
|
# Defaults
|
||||||
|
group["AvailabilityZones"].should.equal(["us-east-1a"]) # subnet1
|
||||||
|
group["DesiredCapacity"].should.equal(2)
|
||||||
|
group["VPCZoneIdentifier"].should.equal(mocked_networking["subnet1"])
|
||||||
|
group["DefaultCooldown"].should.equal(300)
|
||||||
|
group["HealthCheckGracePeriod"].should.equal(300)
|
||||||
|
group["HealthCheckType"].should.equal("EC2")
|
||||||
|
group["LoadBalancerNames"].should.equal([])
|
||||||
|
group.shouldnt.have.key("PlacementGroup")
|
||||||
|
group["TerminationPolicies"].should.equal([])
|
||||||
|
group["Tags"].should.equal([])
|
||||||
|
|
||||||
|
|
||||||
@mock_autoscaling
|
@mock_autoscaling
|
||||||
def test_list_many_autoscaling_groups():
|
def test_list_many_autoscaling_groups():
|
||||||
mocked_networking = setup_networking()
|
mocked_networking = setup_networking()
|
||||||
@ -226,6 +372,7 @@ def test_propogate_tags():
|
|||||||
tags.should.contain({"Value": "TestGroup1", "Key": "aws:autoscaling:groupName"})
|
tags.should.contain({"Value": "TestGroup1", "Key": "aws:autoscaling:groupName"})
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_autoscaling_group_describe_filter():
|
def test_autoscaling_group_describe_filter():
|
||||||
mocked_networking = setup_networking_deprecated()
|
mocked_networking = setup_networking_deprecated()
|
||||||
@ -254,6 +401,7 @@ def test_autoscaling_group_describe_filter():
|
|||||||
conn.get_all_groups().should.have.length_of(3)
|
conn.get_all_groups().should.have.length_of(3)
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_autoscaling_update():
|
def test_autoscaling_update():
|
||||||
mocked_networking = setup_networking_deprecated()
|
mocked_networking = setup_networking_deprecated()
|
||||||
@ -286,6 +434,7 @@ def test_autoscaling_update():
|
|||||||
group.vpc_zone_identifier.should.equal(mocked_networking["subnet2"])
|
group.vpc_zone_identifier.should.equal(mocked_networking["subnet2"])
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_autoscaling_tags_update():
|
def test_autoscaling_tags_update():
|
||||||
mocked_networking = setup_networking_deprecated()
|
mocked_networking = setup_networking_deprecated()
|
||||||
@ -334,6 +483,7 @@ def test_autoscaling_tags_update():
|
|||||||
group.tags.should.have.length_of(2)
|
group.tags.should.have.length_of(2)
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_autoscaling_group_delete():
|
def test_autoscaling_group_delete():
|
||||||
mocked_networking = setup_networking_deprecated()
|
mocked_networking = setup_networking_deprecated()
|
||||||
@ -358,6 +508,35 @@ def test_autoscaling_group_delete():
|
|||||||
conn.get_all_groups().should.have.length_of(0)
|
conn.get_all_groups().should.have.length_of(0)
|
||||||
|
|
||||||
|
|
||||||
|
@mock_autoscaling
|
||||||
|
def test_autoscaling_group_delete_boto3():
|
||||||
|
mocked_networking = setup_networking()
|
||||||
|
as_client = boto3.client("autoscaling", region_name="us-east-1")
|
||||||
|
as_client.create_launch_configuration(
|
||||||
|
LaunchConfigurationName="tester_config",
|
||||||
|
ImageId=EXAMPLE_AMI_ID,
|
||||||
|
InstanceType="t2.medium",
|
||||||
|
)
|
||||||
|
|
||||||
|
as_client.create_auto_scaling_group(
|
||||||
|
AutoScalingGroupName="tester_group",
|
||||||
|
LaunchConfigurationName="tester_config",
|
||||||
|
MinSize=2,
|
||||||
|
MaxSize=2,
|
||||||
|
VPCZoneIdentifier=mocked_networking["subnet1"],
|
||||||
|
)
|
||||||
|
|
||||||
|
as_client.describe_auto_scaling_groups()["AutoScalingGroups"].should.have.length_of(
|
||||||
|
1
|
||||||
|
)
|
||||||
|
|
||||||
|
as_client.delete_auto_scaling_group(AutoScalingGroupName="tester_group")
|
||||||
|
as_client.describe_auto_scaling_groups()["AutoScalingGroups"].should.have.length_of(
|
||||||
|
0
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@mock_ec2_deprecated
|
@mock_ec2_deprecated
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_autoscaling_group_describe_instances():
|
def test_autoscaling_group_describe_instances():
|
||||||
@ -392,6 +571,7 @@ def test_autoscaling_group_describe_instances():
|
|||||||
instances[0].instance_type.should.equal("t2.medium")
|
instances[0].instance_type.should.equal("t2.medium")
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@requires_boto_gte("2.8")
|
@requires_boto_gte("2.8")
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_set_desired_capacity_up():
|
def test_set_desired_capacity_up():
|
||||||
@ -426,6 +606,7 @@ def test_set_desired_capacity_up():
|
|||||||
instances.should.have.length_of(3)
|
instances.should.have.length_of(3)
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@requires_boto_gte("2.8")
|
@requires_boto_gte("2.8")
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_set_desired_capacity_down():
|
def test_set_desired_capacity_down():
|
||||||
@ -460,6 +641,7 @@ def test_set_desired_capacity_down():
|
|||||||
instances.should.have.length_of(1)
|
instances.should.have.length_of(1)
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@requires_boto_gte("2.8")
|
@requires_boto_gte("2.8")
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_set_desired_capacity_the_same():
|
def test_set_desired_capacity_the_same():
|
||||||
@ -494,6 +676,7 @@ def test_set_desired_capacity_the_same():
|
|||||||
instances.should.have.length_of(2)
|
instances.should.have.length_of(2)
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
@mock_elb_deprecated
|
@mock_elb_deprecated
|
||||||
def test_autoscaling_group_with_elb():
|
def test_autoscaling_group_with_elb():
|
||||||
@ -2916,3 +3099,41 @@ def test_autoscaling_lifecyclehook():
|
|||||||
)
|
)
|
||||||
|
|
||||||
len(response["LifecycleHooks"]).should.equal(0)
|
len(response["LifecycleHooks"]).should.equal(0)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
"original,new", [(2, 1), (2, 3), (1, 5), (1, 1)],
|
||||||
|
)
|
||||||
|
@mock_autoscaling
|
||||||
|
def test_set_desired_capacity_without_protection_boto3(original, new):
|
||||||
|
mocked_networking = setup_networking()
|
||||||
|
client = boto3.client("autoscaling", region_name="us-east-1")
|
||||||
|
client.create_launch_configuration(
|
||||||
|
LaunchConfigurationName="test_launch_configuration",
|
||||||
|
ImageId=EXAMPLE_AMI_ID,
|
||||||
|
InstanceType="t2.medium",
|
||||||
|
)
|
||||||
|
|
||||||
|
client.create_auto_scaling_group(
|
||||||
|
AutoScalingGroupName="tester_group",
|
||||||
|
LaunchConfigurationName="test_launch_configuration",
|
||||||
|
AvailabilityZones=["us-east-1a"],
|
||||||
|
MinSize=original,
|
||||||
|
MaxSize=original,
|
||||||
|
DesiredCapacity=original,
|
||||||
|
VPCZoneIdentifier=mocked_networking["subnet1"],
|
||||||
|
)
|
||||||
|
|
||||||
|
group = client.describe_auto_scaling_groups()["AutoScalingGroups"][0]
|
||||||
|
group["DesiredCapacity"].should.equal(original)
|
||||||
|
instances = client.describe_auto_scaling_instances()["AutoScalingInstances"]
|
||||||
|
instances.should.have.length_of(original)
|
||||||
|
|
||||||
|
client.update_auto_scaling_group(
|
||||||
|
AutoScalingGroupName="tester_group", DesiredCapacity=new
|
||||||
|
)
|
||||||
|
|
||||||
|
group = client.describe_auto_scaling_groups()["AutoScalingGroups"][0]
|
||||||
|
group["DesiredCapacity"].should.equal(new)
|
||||||
|
instances = client.describe_auto_scaling_instances()["AutoScalingInstances"]
|
||||||
|
instances.should.have.length_of(new)
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import base64
|
||||||
|
|
||||||
import boto
|
import boto
|
||||||
import boto3
|
import boto3
|
||||||
from boto.ec2.autoscale.launchconfig import LaunchConfiguration
|
from boto.ec2.autoscale.launchconfig import LaunchConfiguration
|
||||||
@ -15,6 +18,7 @@ from tests.helpers import requires_boto_gte
|
|||||||
from tests import EXAMPLE_AMI_ID
|
from tests import EXAMPLE_AMI_ID
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_create_launch_configuration():
|
def test_create_launch_configuration():
|
||||||
conn = boto.connect_autoscale()
|
conn = boto.connect_autoscale()
|
||||||
@ -47,6 +51,42 @@ def test_create_launch_configuration():
|
|||||||
launch_config.spot_price.should.equal(0.1)
|
launch_config.spot_price.should.equal(0.1)
|
||||||
|
|
||||||
|
|
||||||
|
@mock_autoscaling
|
||||||
|
def test_create_launch_configuration_boto3():
|
||||||
|
client = boto3.client("autoscaling", region_name="us-east-1")
|
||||||
|
client.create_launch_configuration(
|
||||||
|
LaunchConfigurationName="tester",
|
||||||
|
ImageId=EXAMPLE_AMI_ID,
|
||||||
|
InstanceType="t1.micro",
|
||||||
|
KeyName="the_keys",
|
||||||
|
SecurityGroups=["default", "default2"],
|
||||||
|
UserData="This is some user_data",
|
||||||
|
InstanceMonitoring={"Enabled": True},
|
||||||
|
IamInstanceProfile="arn:aws:iam::{}:instance-profile/testing".format(
|
||||||
|
ACCOUNT_ID
|
||||||
|
),
|
||||||
|
SpotPrice="0.1",
|
||||||
|
)
|
||||||
|
|
||||||
|
launch_config = client.describe_launch_configurations()["LaunchConfigurations"][0]
|
||||||
|
launch_config["LaunchConfigurationName"].should.equal("tester")
|
||||||
|
launch_config.should.have.key("LaunchConfigurationARN")
|
||||||
|
launch_config["ImageId"].should.equal(EXAMPLE_AMI_ID)
|
||||||
|
launch_config["InstanceType"].should.equal("t1.micro")
|
||||||
|
launch_config["KeyName"].should.equal("the_keys")
|
||||||
|
set(launch_config["SecurityGroups"]).should.equal(set(["default", "default2"]))
|
||||||
|
userdata = launch_config["UserData"]
|
||||||
|
userdata = base64.b64decode(userdata)
|
||||||
|
userdata.should.equal(b"This is some user_data")
|
||||||
|
launch_config["InstanceMonitoring"].should.equal({"Enabled": True})
|
||||||
|
launch_config["IamInstanceProfile"].should.equal(
|
||||||
|
"arn:aws:iam::{}:instance-profile/testing".format(ACCOUNT_ID)
|
||||||
|
)
|
||||||
|
launch_config["SpotPrice"].should.equal("0.1")
|
||||||
|
launch_config["BlockDeviceMappings"].should.equal([])
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@requires_boto_gte("2.27.0")
|
@requires_boto_gte("2.27.0")
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_create_launch_configuration_with_block_device_mappings():
|
def test_create_launch_configuration_with_block_device_mappings():
|
||||||
@ -116,6 +156,67 @@ def test_create_launch_configuration_with_block_device_mappings():
|
|||||||
returned_mapping["/dev/xvdb"].ephemeral_name.should.equal("ephemeral0")
|
returned_mapping["/dev/xvdb"].ephemeral_name.should.equal("ephemeral0")
|
||||||
|
|
||||||
|
|
||||||
|
@mock_autoscaling
|
||||||
|
def test_create_launch_configuration_with_block_device_mappings_boto3():
|
||||||
|
client = boto3.client("autoscaling", region_name="us-east-1")
|
||||||
|
client.create_launch_configuration(
|
||||||
|
LaunchConfigurationName="tester",
|
||||||
|
ImageId=EXAMPLE_AMI_ID,
|
||||||
|
InstanceType="t1.micro",
|
||||||
|
KeyName="the_keys",
|
||||||
|
SecurityGroups=["default", "default2"],
|
||||||
|
UserData="This is some user_data",
|
||||||
|
InstanceMonitoring={"Enabled": True},
|
||||||
|
IamInstanceProfile="arn:aws:iam::{}:instance-profile/testing".format(
|
||||||
|
ACCOUNT_ID
|
||||||
|
),
|
||||||
|
SpotPrice="0.1",
|
||||||
|
BlockDeviceMappings=[
|
||||||
|
{"DeviceName": "/dev/xvdb", "VirtualName": "ephemeral0"},
|
||||||
|
{
|
||||||
|
"DeviceName": "/dev/xvdp",
|
||||||
|
"Ebs": {"SnapshotId": "snap-1234abcd", "VolumeType": "standard"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DeviceName": "/dev/xvdh",
|
||||||
|
"Ebs": {
|
||||||
|
"VolumeType": "io1",
|
||||||
|
"VolumeSize": 100,
|
||||||
|
"Iops": 1000,
|
||||||
|
"DeleteOnTermination": False,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
launch_config = client.describe_launch_configurations()["LaunchConfigurations"][0]
|
||||||
|
launch_config["LaunchConfigurationName"].should.equal("tester")
|
||||||
|
|
||||||
|
mappings = launch_config["BlockDeviceMappings"]
|
||||||
|
mappings.should.have.length_of(3)
|
||||||
|
|
||||||
|
xvdh = [m for m in mappings if m["DeviceName"] == "/dev/xvdh"][0]
|
||||||
|
xvdp = [m for m in mappings if m["DeviceName"] == "/dev/xvdp"][0]
|
||||||
|
xvdb = [m for m in mappings if m["DeviceName"] == "/dev/xvdb"][0]
|
||||||
|
|
||||||
|
xvdh.shouldnt.have.key("VirtualName")
|
||||||
|
xvdh.should.have.key("Ebs")
|
||||||
|
xvdh["Ebs"]["VolumeSize"].should.equal(100)
|
||||||
|
xvdh["Ebs"]["VolumeType"].should.equal("io1")
|
||||||
|
xvdh["Ebs"]["DeleteOnTermination"].should.equal(False)
|
||||||
|
xvdh["Ebs"]["Iops"].should.equal(1000)
|
||||||
|
|
||||||
|
xvdp.shouldnt.have.key("VirtualName")
|
||||||
|
xvdp.should.have.key("Ebs")
|
||||||
|
xvdp["Ebs"]["SnapshotId"].should.equal("snap-1234abcd")
|
||||||
|
xvdp["Ebs"]["VolumeType"].should.equal("standard")
|
||||||
|
xvdp["Ebs"]["DeleteOnTermination"].should.equal(False)
|
||||||
|
|
||||||
|
xvdb["VirtualName"].should.equal("ephemeral0")
|
||||||
|
xvdb.shouldnt.have.key("Ebs")
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@requires_boto_gte("2.12")
|
@requires_boto_gte("2.12")
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_create_launch_configuration_for_2_12():
|
def test_create_launch_configuration_for_2_12():
|
||||||
@ -129,6 +230,7 @@ def test_create_launch_configuration_for_2_12():
|
|||||||
launch_config.ebs_optimized.should.equal(True)
|
launch_config.ebs_optimized.should.equal(True)
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@requires_boto_gte("2.25.0")
|
@requires_boto_gte("2.25.0")
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_create_launch_configuration_using_ip_association():
|
def test_create_launch_configuration_using_ip_association():
|
||||||
@ -142,6 +244,23 @@ def test_create_launch_configuration_using_ip_association():
|
|||||||
launch_config.associate_public_ip_address.should.equal(True)
|
launch_config.associate_public_ip_address.should.equal(True)
|
||||||
|
|
||||||
|
|
||||||
|
@mock_autoscaling
|
||||||
|
def test_create_launch_configuration_additional_parameters():
|
||||||
|
client = boto3.client("autoscaling", region_name="us-east-1")
|
||||||
|
client.create_launch_configuration(
|
||||||
|
LaunchConfigurationName="tester",
|
||||||
|
ImageId=EXAMPLE_AMI_ID,
|
||||||
|
InstanceType="t1.micro",
|
||||||
|
EbsOptimized=True,
|
||||||
|
AssociatePublicIpAddress=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
launch_config = client.describe_launch_configurations()["LaunchConfigurations"][0]
|
||||||
|
launch_config["EbsOptimized"].should.equal(True)
|
||||||
|
launch_config["AssociatePublicIpAddress"].should.equal(True)
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@requires_boto_gte("2.25.0")
|
@requires_boto_gte("2.25.0")
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_create_launch_configuration_using_ip_association_should_default_to_false():
|
def test_create_launch_configuration_using_ip_association_should_default_to_false():
|
||||||
@ -153,6 +272,21 @@ def test_create_launch_configuration_using_ip_association_should_default_to_fals
|
|||||||
launch_config.associate_public_ip_address.should.equal(False)
|
launch_config.associate_public_ip_address.should.equal(False)
|
||||||
|
|
||||||
|
|
||||||
|
@mock_autoscaling
|
||||||
|
def test_create_launch_configuration_additional_params_default_to_false():
|
||||||
|
client = boto3.client("autoscaling", region_name="us-east-1")
|
||||||
|
client.create_launch_configuration(
|
||||||
|
LaunchConfigurationName="tester",
|
||||||
|
ImageId=EXAMPLE_AMI_ID,
|
||||||
|
InstanceType="t1.micro",
|
||||||
|
)
|
||||||
|
|
||||||
|
launch_config = client.describe_launch_configurations()["LaunchConfigurations"][0]
|
||||||
|
launch_config["EbsOptimized"].should.equal(False)
|
||||||
|
launch_config["AssociatePublicIpAddress"].should.equal(False)
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_create_launch_configuration_defaults():
|
def test_create_launch_configuration_defaults():
|
||||||
"""Test with the minimum inputs and check that all of the proper defaults
|
"""Test with the minimum inputs and check that all of the proper defaults
|
||||||
@ -177,6 +311,29 @@ def test_create_launch_configuration_defaults():
|
|||||||
launch_config.spot_price.should.equal(None)
|
launch_config.spot_price.should.equal(None)
|
||||||
|
|
||||||
|
|
||||||
|
@mock_autoscaling
|
||||||
|
def test_create_launch_configuration_defaults_boto3():
|
||||||
|
"""Test with the minimum inputs and check that all of the proper defaults
|
||||||
|
are assigned for the other attributes"""
|
||||||
|
client = boto3.client("autoscaling", region_name="us-east-1")
|
||||||
|
client.create_launch_configuration(
|
||||||
|
LaunchConfigurationName="tester",
|
||||||
|
ImageId=EXAMPLE_AMI_ID,
|
||||||
|
InstanceType="m1.small",
|
||||||
|
)
|
||||||
|
|
||||||
|
launch_config = client.describe_launch_configurations()["LaunchConfigurations"][0]
|
||||||
|
|
||||||
|
# Defaults
|
||||||
|
launch_config["KeyName"].should.equal("")
|
||||||
|
launch_config["SecurityGroups"].should.equal([])
|
||||||
|
launch_config["UserData"].should.equal("")
|
||||||
|
launch_config["InstanceMonitoring"].should.equal({"Enabled": False})
|
||||||
|
launch_config.shouldnt.have.key("IamInstanceProfile")
|
||||||
|
launch_config.shouldnt.have.key("SpotPrice")
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@requires_boto_gte("2.12")
|
@requires_boto_gte("2.12")
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_create_launch_configuration_defaults_for_2_12():
|
def test_create_launch_configuration_defaults_for_2_12():
|
||||||
@ -188,6 +345,7 @@ def test_create_launch_configuration_defaults_for_2_12():
|
|||||||
launch_config.ebs_optimized.should.equal(False)
|
launch_config.ebs_optimized.should.equal(False)
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_launch_configuration_describe_filter():
|
def test_launch_configuration_describe_filter():
|
||||||
conn = boto.connect_autoscale()
|
conn = boto.connect_autoscale()
|
||||||
@ -206,6 +364,25 @@ def test_launch_configuration_describe_filter():
|
|||||||
conn.get_all_launch_configurations().should.have.length_of(3)
|
conn.get_all_launch_configurations().should.have.length_of(3)
|
||||||
|
|
||||||
|
|
||||||
|
@mock_autoscaling
|
||||||
|
def test_launch_configuration_describe_filter_boto3():
|
||||||
|
client = boto3.client("autoscaling", region_name="us-east-1")
|
||||||
|
for name in ["tester", "tester2", "tester3"]:
|
||||||
|
client.create_launch_configuration(
|
||||||
|
LaunchConfigurationName=name,
|
||||||
|
ImageId=EXAMPLE_AMI_ID,
|
||||||
|
InstanceType="m1.small",
|
||||||
|
)
|
||||||
|
|
||||||
|
configs = client.describe_launch_configurations(
|
||||||
|
LaunchConfigurationNames=["tester", "tester2"]
|
||||||
|
)
|
||||||
|
configs["LaunchConfigurations"].should.have.length_of(2)
|
||||||
|
client.describe_launch_configurations()[
|
||||||
|
"LaunchConfigurations"
|
||||||
|
].should.have.length_of(3)
|
||||||
|
|
||||||
|
|
||||||
@mock_autoscaling
|
@mock_autoscaling
|
||||||
def test_launch_configuration_describe_paginated():
|
def test_launch_configuration_describe_paginated():
|
||||||
conn = boto3.client("autoscaling", region_name="us-east-1")
|
conn = boto3.client("autoscaling", region_name="us-east-1")
|
||||||
@ -229,6 +406,7 @@ def test_launch_configuration_describe_paginated():
|
|||||||
assert "NextToken" not in response2.keys()
|
assert "NextToken" not in response2.keys()
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_launch_configuration_delete():
|
def test_launch_configuration_delete():
|
||||||
conn = boto.connect_autoscale()
|
conn = boto.connect_autoscale()
|
||||||
@ -243,6 +421,26 @@ def test_launch_configuration_delete():
|
|||||||
conn.get_all_launch_configurations().should.have.length_of(0)
|
conn.get_all_launch_configurations().should.have.length_of(0)
|
||||||
|
|
||||||
|
|
||||||
|
@mock_autoscaling
|
||||||
|
def test_launch_configuration_delete_boto3():
|
||||||
|
client = boto3.client("autoscaling", region_name="us-east-1")
|
||||||
|
client.create_launch_configuration(
|
||||||
|
LaunchConfigurationName="tester",
|
||||||
|
ImageId=EXAMPLE_AMI_ID,
|
||||||
|
InstanceType="m1.small",
|
||||||
|
)
|
||||||
|
|
||||||
|
client.describe_launch_configurations()[
|
||||||
|
"LaunchConfigurations"
|
||||||
|
].should.have.length_of(1)
|
||||||
|
|
||||||
|
client.delete_launch_configuration(LaunchConfigurationName="tester")
|
||||||
|
|
||||||
|
client.describe_launch_configurations()[
|
||||||
|
"LaunchConfigurations"
|
||||||
|
].should.have.length_of(0)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"request_params",
|
"request_params",
|
||||||
[
|
[
|
||||||
|
@ -1,13 +1,15 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import boto
|
import boto
|
||||||
|
import boto3
|
||||||
from boto.ec2.autoscale.launchconfig import LaunchConfiguration
|
from boto.ec2.autoscale.launchconfig import LaunchConfiguration
|
||||||
from boto.ec2.autoscale.group import AutoScalingGroup
|
from boto.ec2.autoscale.group import AutoScalingGroup
|
||||||
from boto.ec2.autoscale.policy import ScalingPolicy
|
from boto.ec2.autoscale.policy import ScalingPolicy
|
||||||
|
import pytest
|
||||||
import sure # noqa
|
import sure # noqa
|
||||||
|
|
||||||
from moto import mock_autoscaling_deprecated
|
from moto import mock_autoscaling_deprecated, mock_autoscaling
|
||||||
|
|
||||||
from .utils import setup_networking_deprecated
|
from .utils import setup_networking_deprecated, setup_networking
|
||||||
from tests import EXAMPLE_AMI_ID
|
from tests import EXAMPLE_AMI_ID
|
||||||
|
|
||||||
|
|
||||||
@ -30,6 +32,25 @@ def setup_autoscale_group():
|
|||||||
return group
|
return group
|
||||||
|
|
||||||
|
|
||||||
|
def setup_autoscale_group_boto3():
|
||||||
|
mocked_networking = setup_networking()
|
||||||
|
client = boto3.client("autoscaling", region_name="us-east-1")
|
||||||
|
client.create_launch_configuration(
|
||||||
|
LaunchConfigurationName="tester",
|
||||||
|
ImageId=EXAMPLE_AMI_ID,
|
||||||
|
InstanceType="m1.small",
|
||||||
|
)
|
||||||
|
|
||||||
|
client.create_auto_scaling_group(
|
||||||
|
AutoScalingGroupName="tester_group",
|
||||||
|
LaunchConfigurationName="tester",
|
||||||
|
MinSize=2,
|
||||||
|
MaxSize=2,
|
||||||
|
VPCZoneIdentifier=mocked_networking["subnet1"],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_create_policy():
|
def test_create_policy():
|
||||||
setup_autoscale_group()
|
setup_autoscale_group()
|
||||||
@ -51,6 +72,27 @@ def test_create_policy():
|
|||||||
policy.cooldown.should.equal(60)
|
policy.cooldown.should.equal(60)
|
||||||
|
|
||||||
|
|
||||||
|
@mock_autoscaling
|
||||||
|
def test_create_policy_boto3():
|
||||||
|
setup_autoscale_group_boto3()
|
||||||
|
client = boto3.client("autoscaling", region_name="us-east-1")
|
||||||
|
client.put_scaling_policy(
|
||||||
|
PolicyName="ScaleUp",
|
||||||
|
AdjustmentType="ExactCapacity",
|
||||||
|
AutoScalingGroupName="tester_group",
|
||||||
|
ScalingAdjustment=3,
|
||||||
|
Cooldown=60,
|
||||||
|
)
|
||||||
|
|
||||||
|
policy = client.describe_policies()["ScalingPolicies"][0]
|
||||||
|
policy["PolicyName"].should.equal("ScaleUp")
|
||||||
|
policy["AdjustmentType"].should.equal("ExactCapacity")
|
||||||
|
policy["AutoScalingGroupName"].should.equal("tester_group")
|
||||||
|
policy["ScalingAdjustment"].should.equal(3)
|
||||||
|
policy["Cooldown"].should.equal(60)
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_create_policy_default_values():
|
def test_create_policy_default_values():
|
||||||
setup_autoscale_group()
|
setup_autoscale_group()
|
||||||
@ -70,6 +112,25 @@ def test_create_policy_default_values():
|
|||||||
policy.cooldown.should.equal(300)
|
policy.cooldown.should.equal(300)
|
||||||
|
|
||||||
|
|
||||||
|
@mock_autoscaling
|
||||||
|
def test_create_policy_default_values_boto3():
|
||||||
|
setup_autoscale_group_boto3()
|
||||||
|
client = boto3.client("autoscaling", region_name="us-east-1")
|
||||||
|
client.put_scaling_policy(
|
||||||
|
PolicyName="ScaleUp",
|
||||||
|
AdjustmentType="ExactCapacity",
|
||||||
|
AutoScalingGroupName="tester_group",
|
||||||
|
ScalingAdjustment=3,
|
||||||
|
)
|
||||||
|
|
||||||
|
policy = client.describe_policies()["ScalingPolicies"][0]
|
||||||
|
policy["PolicyName"].should.equal("ScaleUp")
|
||||||
|
|
||||||
|
# Defaults
|
||||||
|
policy["Cooldown"].should.equal(300)
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_update_policy():
|
def test_update_policy():
|
||||||
setup_autoscale_group()
|
setup_autoscale_group()
|
||||||
@ -97,6 +158,34 @@ def test_update_policy():
|
|||||||
policy.scaling_adjustment.should.equal(2)
|
policy.scaling_adjustment.should.equal(2)
|
||||||
|
|
||||||
|
|
||||||
|
@mock_autoscaling
|
||||||
|
def test_update_policy_boto3():
|
||||||
|
setup_autoscale_group_boto3()
|
||||||
|
client = boto3.client("autoscaling", region_name="us-east-1")
|
||||||
|
client.put_scaling_policy(
|
||||||
|
PolicyName="ScaleUp",
|
||||||
|
AdjustmentType="ExactCapacity",
|
||||||
|
AutoScalingGroupName="tester_group",
|
||||||
|
ScalingAdjustment=3,
|
||||||
|
)
|
||||||
|
|
||||||
|
client.describe_policies()["ScalingPolicies"].should.have.length_of(1)
|
||||||
|
policy = client.describe_policies()["ScalingPolicies"][0]
|
||||||
|
policy["ScalingAdjustment"].should.equal(3)
|
||||||
|
|
||||||
|
# Now update it by creating another with the same name
|
||||||
|
client.put_scaling_policy(
|
||||||
|
PolicyName="ScaleUp",
|
||||||
|
AdjustmentType="ExactCapacity",
|
||||||
|
AutoScalingGroupName="tester_group",
|
||||||
|
ScalingAdjustment=2,
|
||||||
|
)
|
||||||
|
client.describe_policies()["ScalingPolicies"].should.have.length_of(1)
|
||||||
|
policy = client.describe_policies()["ScalingPolicies"][0]
|
||||||
|
policy["ScalingAdjustment"].should.equal(2)
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_delete_policy():
|
def test_delete_policy():
|
||||||
setup_autoscale_group()
|
setup_autoscale_group()
|
||||||
@ -115,6 +204,24 @@ def test_delete_policy():
|
|||||||
conn.get_all_policies().should.have.length_of(0)
|
conn.get_all_policies().should.have.length_of(0)
|
||||||
|
|
||||||
|
|
||||||
|
@mock_autoscaling
|
||||||
|
def test_delete_policy_boto3():
|
||||||
|
setup_autoscale_group_boto3()
|
||||||
|
client = boto3.client("autoscaling", region_name="us-east-1")
|
||||||
|
client.put_scaling_policy(
|
||||||
|
PolicyName="ScaleUp",
|
||||||
|
AdjustmentType="ExactCapacity",
|
||||||
|
AutoScalingGroupName="tester_group",
|
||||||
|
ScalingAdjustment=3,
|
||||||
|
)
|
||||||
|
|
||||||
|
client.describe_policies()["ScalingPolicies"].should.have.length_of(1)
|
||||||
|
|
||||||
|
client.delete_policy(PolicyName="ScaleUp")
|
||||||
|
client.describe_policies()["ScalingPolicies"].should.have.length_of(0)
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_execute_policy_exact_capacity():
|
def test_execute_policy_exact_capacity():
|
||||||
setup_autoscale_group()
|
setup_autoscale_group()
|
||||||
@ -133,6 +240,24 @@ def test_execute_policy_exact_capacity():
|
|||||||
instances.should.have.length_of(3)
|
instances.should.have.length_of(3)
|
||||||
|
|
||||||
|
|
||||||
|
@mock_autoscaling
|
||||||
|
def test_execute_policy_exact_capacity_boto3():
|
||||||
|
setup_autoscale_group_boto3()
|
||||||
|
client = boto3.client("autoscaling", region_name="us-east-1")
|
||||||
|
client.put_scaling_policy(
|
||||||
|
PolicyName="ScaleUp",
|
||||||
|
AdjustmentType="ExactCapacity",
|
||||||
|
AutoScalingGroupName="tester_group",
|
||||||
|
ScalingAdjustment=3,
|
||||||
|
)
|
||||||
|
|
||||||
|
client.execute_policy(PolicyName="ScaleUp")
|
||||||
|
|
||||||
|
instances = client.describe_auto_scaling_instances()
|
||||||
|
instances["AutoScalingInstances"].should.have.length_of(3)
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_execute_policy_positive_change_in_capacity():
|
def test_execute_policy_positive_change_in_capacity():
|
||||||
setup_autoscale_group()
|
setup_autoscale_group()
|
||||||
@ -151,6 +276,24 @@ def test_execute_policy_positive_change_in_capacity():
|
|||||||
instances.should.have.length_of(5)
|
instances.should.have.length_of(5)
|
||||||
|
|
||||||
|
|
||||||
|
@mock_autoscaling
|
||||||
|
def test_execute_policy_positive_change_in_capacity_boto3():
|
||||||
|
setup_autoscale_group_boto3()
|
||||||
|
client = boto3.client("autoscaling", region_name="us-east-1")
|
||||||
|
client.put_scaling_policy(
|
||||||
|
PolicyName="ScaleUp",
|
||||||
|
AdjustmentType="ChangeInCapacity",
|
||||||
|
AutoScalingGroupName="tester_group",
|
||||||
|
ScalingAdjustment=3,
|
||||||
|
)
|
||||||
|
|
||||||
|
client.execute_policy(PolicyName="ScaleUp")
|
||||||
|
|
||||||
|
instances = client.describe_auto_scaling_instances()
|
||||||
|
instances["AutoScalingInstances"].should.have.length_of(5)
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_execute_policy_percent_change_in_capacity():
|
def test_execute_policy_percent_change_in_capacity():
|
||||||
setup_autoscale_group()
|
setup_autoscale_group()
|
||||||
@ -169,6 +312,30 @@ def test_execute_policy_percent_change_in_capacity():
|
|||||||
instances.should.have.length_of(3)
|
instances.should.have.length_of(3)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
"adjustment,nr_of_instances", [(1, 3), (50, 3), (100, 4), (250, 7)],
|
||||||
|
)
|
||||||
|
@mock_autoscaling
|
||||||
|
def test_execute_policy_percent_change_in_capacity_boto3(adjustment, nr_of_instances):
|
||||||
|
"""http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/as-scale-based-on-demand.html
|
||||||
|
If PercentChangeInCapacity returns a value between 0 and 1,
|
||||||
|
Auto Scaling will round it off to 1."""
|
||||||
|
setup_autoscale_group_boto3()
|
||||||
|
client = boto3.client("autoscaling", region_name="us-east-1")
|
||||||
|
client.put_scaling_policy(
|
||||||
|
PolicyName="ScaleUp",
|
||||||
|
AdjustmentType="PercentChangeInCapacity",
|
||||||
|
AutoScalingGroupName="tester_group",
|
||||||
|
ScalingAdjustment=adjustment,
|
||||||
|
)
|
||||||
|
|
||||||
|
client.execute_policy(PolicyName="ScaleUp")
|
||||||
|
|
||||||
|
instances = client.describe_auto_scaling_instances()
|
||||||
|
instances["AutoScalingInstances"].should.have.length_of(nr_of_instances)
|
||||||
|
|
||||||
|
|
||||||
|
# Has boto3 equivalent
|
||||||
@mock_autoscaling_deprecated
|
@mock_autoscaling_deprecated
|
||||||
def test_execute_policy_small_percent_change_in_capacity():
|
def test_execute_policy_small_percent_change_in_capacity():
|
||||||
"""http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/as-scale-based-on-demand.html
|
"""http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/as-scale-based-on-demand.html
|
||||||
|
Loading…
x
Reference in New Issue
Block a user