moto/tests/test_autoscaling/test_autoscaling_scheduledactions.py

85 lines
3.0 KiB
Python

import boto3
from moto import mock_autoscaling
from unittest import TestCase
@mock_autoscaling
class TestAutoScalingScheduledActions(TestCase):
def setUp(self) -> None:
self.client = boto3.client("autoscaling", region_name="us-east-1")
self.asg_name = "tester_group"
def test_list_many_scheduled_scaling_actions(self):
for i in range(30):
self._create_scheduled_action(name=f"my-scheduled-action-{i}", idx=i)
response = self.client.describe_scheduled_actions(
AutoScalingGroupName=self.asg_name
)
actions = response["ScheduledUpdateGroupActions"]
assert len(actions) == 30
def test_non_existing_group_name(self):
self._create_scheduled_action(name="my-scheduled-action", idx=1)
response = self.client.describe_scheduled_actions(
AutoScalingGroupName="wrong_group"
)
actions = response["ScheduledUpdateGroupActions"]
# since there is no such group name, no actions have been returned
assert len(actions) == 0
def test_describe_scheduled_actions_returns_all_actions_when_no_argument_is_passed(
self,
):
for i in range(30):
self._create_scheduled_action(name=f"my-scheduled-action-{i}", idx=i)
for i in range(10):
self._create_scheduled_action(
name=f"my-scheduled-action-4{i}", idx=i, asg_name="test_group-2"
)
response = self.client.describe_scheduled_actions()
actions = response["ScheduledUpdateGroupActions"]
# Since no argument is passed describe_scheduled_actions, all scheduled actions are returned
assert len(actions) == 40
def test_scheduled_action_delete(self):
for i in range(3):
self._create_scheduled_action(name=f"my-scheduled-action-{i}", idx=i)
response = self.client.describe_scheduled_actions(
AutoScalingGroupName=self.asg_name
)
actions = response["ScheduledUpdateGroupActions"]
assert len(actions) == 3
self.client.delete_scheduled_action(
AutoScalingGroupName=self.asg_name,
ScheduledActionName="my-scheduled-action-2",
)
self.client.delete_scheduled_action(
AutoScalingGroupName=self.asg_name,
ScheduledActionName="my-scheduled-action-1",
)
response = self.client.describe_scheduled_actions(
AutoScalingGroupName=self.asg_name
)
actions = response["ScheduledUpdateGroupActions"]
assert len(actions) == 1
def _create_scheduled_action(self, name, idx, asg_name=None):
self.client.put_scheduled_update_group_action(
AutoScalingGroupName=asg_name or self.asg_name,
ScheduledActionName=name,
StartTime=f"2022-07-01T00:00:{idx}Z",
EndTime=f"2022-09-01T00:00:{idx}Z",
Recurrence="* * * * *",
MinSize=idx + 1,
MaxSize=idx + 5,
DesiredCapacity=idx + 3,
)