moto/tests/test_autoscaling/test_policies.py

190 lines
5.2 KiB
Python
Raw Normal View History

from __future__ import unicode_literals
2013-07-27 20:24:38 +00:00
import boto
from boto.ec2.autoscale.launchconfig import LaunchConfiguration
from boto.ec2.autoscale.group import AutoScalingGroup
from boto.ec2.autoscale.policy import ScalingPolicy
2013-08-03 21:21:25 +00:00
import sure # noqa
2013-07-27 20:24:38 +00:00
2017-02-16 03:35:45 +00:00
from moto import mock_autoscaling_deprecated
2013-07-27 20:24:38 +00:00
from utils import setup_networking_deprecated
2013-07-27 20:24:38 +00:00
def setup_autoscale_group():
mocked_networking = setup_networking_deprecated()
2013-07-27 20:24:38 +00:00
conn = boto.connect_autoscale()
config = LaunchConfiguration(
2019-10-31 15:44:26 +00:00
name="tester", image_id="ami-abcd1234", instance_type="m1.small"
2013-07-27 20:24:38 +00:00
)
conn.create_launch_configuration(config)
group = AutoScalingGroup(
2019-10-31 15:44:26 +00:00
name="tester_group",
2013-07-27 20:24:38 +00:00
max_size=2,
min_size=2,
launch_config=config,
2019-10-31 15:44:26 +00:00
vpc_zone_identifier=mocked_networking["subnet1"],
2013-07-27 20:24:38 +00:00
)
conn.create_auto_scaling_group(group)
return group
2017-02-16 03:35:45 +00:00
@mock_autoscaling_deprecated
2013-07-27 20:24:38 +00:00
def test_create_policy():
2013-08-03 21:21:25 +00:00
setup_autoscale_group()
2013-07-27 20:24:38 +00:00
conn = boto.connect_autoscale()
policy = ScalingPolicy(
2019-10-31 15:44:26 +00:00
name="ScaleUp",
adjustment_type="ExactCapacity",
as_name="tester_group",
2013-07-27 20:24:38 +00:00
scaling_adjustment=3,
cooldown=60,
)
conn.create_scaling_policy(policy)
policy = conn.get_all_policies()[0]
2019-10-31 15:44:26 +00:00
policy.name.should.equal("ScaleUp")
policy.adjustment_type.should.equal("ExactCapacity")
policy.as_name.should.equal("tester_group")
2013-07-27 20:24:38 +00:00
policy.scaling_adjustment.should.equal(3)
policy.cooldown.should.equal(60)
2017-02-16 03:35:45 +00:00
@mock_autoscaling_deprecated
2013-07-27 20:24:38 +00:00
def test_create_policy_default_values():
2013-08-03 21:21:25 +00:00
setup_autoscale_group()
2013-07-27 20:24:38 +00:00
conn = boto.connect_autoscale()
policy = ScalingPolicy(
2019-10-31 15:44:26 +00:00
name="ScaleUp",
adjustment_type="ExactCapacity",
as_name="tester_group",
2013-07-27 20:24:38 +00:00
scaling_adjustment=3,
)
conn.create_scaling_policy(policy)
policy = conn.get_all_policies()[0]
2019-10-31 15:44:26 +00:00
policy.name.should.equal("ScaleUp")
2013-07-27 20:24:38 +00:00
# Defaults
policy.cooldown.should.equal(300)
2017-02-16 03:35:45 +00:00
@mock_autoscaling_deprecated
2013-07-27 20:24:38 +00:00
def test_update_policy():
2013-08-03 21:21:25 +00:00
setup_autoscale_group()
2013-07-27 20:24:38 +00:00
conn = boto.connect_autoscale()
policy = ScalingPolicy(
2019-10-31 15:44:26 +00:00
name="ScaleUp",
adjustment_type="ExactCapacity",
as_name="tester_group",
2013-07-27 20:24:38 +00:00
scaling_adjustment=3,
)
conn.create_scaling_policy(policy)
policy = conn.get_all_policies()[0]
policy.scaling_adjustment.should.equal(3)
# Now update it by creating another with the same name
policy = ScalingPolicy(
2019-10-31 15:44:26 +00:00
name="ScaleUp",
adjustment_type="ExactCapacity",
as_name="tester_group",
2013-07-27 20:24:38 +00:00
scaling_adjustment=2,
)
conn.create_scaling_policy(policy)
policy = conn.get_all_policies()[0]
policy.scaling_adjustment.should.equal(2)
2017-02-16 03:35:45 +00:00
@mock_autoscaling_deprecated
2013-07-27 20:24:38 +00:00
def test_delete_policy():
2013-08-03 21:21:25 +00:00
setup_autoscale_group()
2013-07-27 20:24:38 +00:00
conn = boto.connect_autoscale()
policy = ScalingPolicy(
2019-10-31 15:44:26 +00:00
name="ScaleUp",
adjustment_type="ExactCapacity",
as_name="tester_group",
2013-07-27 20:24:38 +00:00
scaling_adjustment=3,
)
conn.create_scaling_policy(policy)
conn.get_all_policies().should.have.length_of(1)
2019-10-31 15:44:26 +00:00
conn.delete_policy("ScaleUp")
2013-07-27 20:24:38 +00:00
conn.get_all_policies().should.have.length_of(0)
2017-02-16 03:35:45 +00:00
@mock_autoscaling_deprecated
2013-07-27 20:24:38 +00:00
def test_execute_policy_exact_capacity():
2013-08-03 21:21:25 +00:00
setup_autoscale_group()
2013-07-27 20:24:38 +00:00
conn = boto.connect_autoscale()
policy = ScalingPolicy(
2019-10-31 15:44:26 +00:00
name="ScaleUp",
adjustment_type="ExactCapacity",
as_name="tester_group",
2013-07-27 20:24:38 +00:00
scaling_adjustment=3,
)
conn.create_scaling_policy(policy)
conn.execute_policy("ScaleUp")
instances = list(conn.get_all_autoscaling_instances())
instances.should.have.length_of(3)
2017-02-16 03:35:45 +00:00
@mock_autoscaling_deprecated
2013-07-27 20:24:38 +00:00
def test_execute_policy_positive_change_in_capacity():
2013-08-03 21:21:25 +00:00
setup_autoscale_group()
2013-07-27 20:24:38 +00:00
conn = boto.connect_autoscale()
policy = ScalingPolicy(
2019-10-31 15:44:26 +00:00
name="ScaleUp",
adjustment_type="ChangeInCapacity",
as_name="tester_group",
2013-07-27 20:24:38 +00:00
scaling_adjustment=3,
)
conn.create_scaling_policy(policy)
conn.execute_policy("ScaleUp")
instances = list(conn.get_all_autoscaling_instances())
instances.should.have.length_of(5)
2017-02-16 03:35:45 +00:00
@mock_autoscaling_deprecated
2013-07-27 20:24:38 +00:00
def test_execute_policy_percent_change_in_capacity():
2013-08-03 21:21:25 +00:00
setup_autoscale_group()
2013-07-27 20:24:38 +00:00
conn = boto.connect_autoscale()
policy = ScalingPolicy(
2019-10-31 15:44:26 +00:00
name="ScaleUp",
adjustment_type="PercentChangeInCapacity",
as_name="tester_group",
2013-07-27 20:24:38 +00:00
scaling_adjustment=50,
)
conn.create_scaling_policy(policy)
conn.execute_policy("ScaleUp")
instances = list(conn.get_all_autoscaling_instances())
instances.should.have.length_of(3)
2017-02-16 03:35:45 +00:00
@mock_autoscaling_deprecated
2013-07-27 20:24:38 +00:00
def test_execute_policy_small_percent_change_in_capacity():
""" 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."""
2013-08-03 21:21:25 +00:00
setup_autoscale_group()
2013-07-27 20:24:38 +00:00
conn = boto.connect_autoscale()
policy = ScalingPolicy(
2019-10-31 15:44:26 +00:00
name="ScaleUp",
adjustment_type="PercentChangeInCapacity",
as_name="tester_group",
2013-07-27 20:24:38 +00:00
scaling_adjustment=1,
)
conn.create_scaling_policy(policy)
conn.execute_policy("ScaleUp")
instances = list(conn.get_all_autoscaling_instances())
instances.should.have.length_of(3)