Techdebt: Replace sure with regular asserts in ApplicationAutoscaling tests (#6378)
This commit is contained in:
parent
7c702ee33f
commit
08e509506a
@ -1,6 +1,7 @@
|
|||||||
|
import re
|
||||||
|
|
||||||
import boto3
|
import boto3
|
||||||
import pytest
|
import pytest
|
||||||
import sure # noqa # pylint: disable=unused-import
|
|
||||||
from moto import mock_applicationautoscaling, mock_ecs
|
from moto import mock_applicationautoscaling, mock_ecs
|
||||||
from moto.core import DEFAULT_ACCOUNT_ID as ACCOUNT_ID
|
from moto.core import DEFAULT_ACCOUNT_ID as ACCOUNT_ID
|
||||||
|
|
||||||
@ -62,15 +63,13 @@ def test_describe_scalable_targets_one_basic_ecs_success():
|
|||||||
response = client.describe_scalable_targets(
|
response = client.describe_scalable_targets(
|
||||||
ServiceNamespace=DEFAULT_SERVICE_NAMESPACE
|
ServiceNamespace=DEFAULT_SERVICE_NAMESPACE
|
||||||
)
|
)
|
||||||
response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200)
|
assert response["ResponseMetadata"]["HTTPStatusCode"] == 200
|
||||||
len(response["ScalableTargets"]).should.equal(1)
|
assert len(response["ScalableTargets"]) == 1
|
||||||
t = response["ScalableTargets"][0]
|
t = response["ScalableTargets"][0]
|
||||||
t.should.have.key("ServiceNamespace").which.should.equal(DEFAULT_SERVICE_NAMESPACE)
|
assert t["ServiceNamespace"] == DEFAULT_SERVICE_NAMESPACE
|
||||||
t.should.have.key("ResourceId").which.should.equal(DEFAULT_RESOURCE_ID)
|
assert t["ResourceId"] == DEFAULT_RESOURCE_ID
|
||||||
t.should.have.key("ScalableDimension").which.should.equal(
|
assert t["ScalableDimension"] == DEFAULT_SCALABLE_DIMENSION
|
||||||
DEFAULT_SCALABLE_DIMENSION
|
assert "CreationTime" in t
|
||||||
)
|
|
||||||
t.should.have.key("CreationTime").which.should.be.a("datetime.datetime")
|
|
||||||
|
|
||||||
|
|
||||||
@mock_ecs
|
@mock_ecs
|
||||||
@ -83,21 +82,19 @@ def test_describe_scalable_targets_one_full_ecs_success():
|
|||||||
response = client.describe_scalable_targets(
|
response = client.describe_scalable_targets(
|
||||||
ServiceNamespace=DEFAULT_SERVICE_NAMESPACE
|
ServiceNamespace=DEFAULT_SERVICE_NAMESPACE
|
||||||
)
|
)
|
||||||
response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200)
|
assert response["ResponseMetadata"]["HTTPStatusCode"] == 200
|
||||||
len(response["ScalableTargets"]).should.equal(1)
|
assert len(response["ScalableTargets"]) == 1
|
||||||
t = response["ScalableTargets"][0]
|
t = response["ScalableTargets"][0]
|
||||||
t.should.have.key("ServiceNamespace").which.should.equal(DEFAULT_SERVICE_NAMESPACE)
|
assert t["ServiceNamespace"] == DEFAULT_SERVICE_NAMESPACE
|
||||||
t.should.have.key("ResourceId").which.should.equal(DEFAULT_RESOURCE_ID)
|
assert t["ResourceId"] == DEFAULT_RESOURCE_ID
|
||||||
t.should.have.key("ScalableDimension").which.should.equal(
|
assert t["ScalableDimension"] == DEFAULT_SCALABLE_DIMENSION
|
||||||
DEFAULT_SCALABLE_DIMENSION
|
assert t["MinCapacity"] == DEFAULT_MIN_CAPACITY
|
||||||
)
|
assert t["MaxCapacity"] == DEFAULT_MAX_CAPACITY
|
||||||
t.should.have.key("MinCapacity").which.should.equal(DEFAULT_MIN_CAPACITY)
|
assert t["RoleARN"] == DEFAULT_ROLE_ARN
|
||||||
t.should.have.key("MaxCapacity").which.should.equal(DEFAULT_MAX_CAPACITY)
|
assert "CreationTime" in t
|
||||||
t.should.have.key("RoleARN").which.should.equal(DEFAULT_ROLE_ARN)
|
assert (
|
||||||
t.should.have.key("CreationTime").which.should.be.a("datetime.datetime")
|
t["SuspendedState"]["DynamicScalingInSuspended"]
|
||||||
t.should.have.key("SuspendedState")
|
== DEFAULT_SUSPENDED_STATE["DynamicScalingInSuspended"]
|
||||||
t["SuspendedState"]["DynamicScalingInSuspended"].should.equal(
|
|
||||||
DEFAULT_SUSPENDED_STATE["DynamicScalingInSuspended"]
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -138,8 +135,8 @@ def test_describe_scalable_targets_only_return_ecs_targets():
|
|||||||
response = client.describe_scalable_targets(
|
response = client.describe_scalable_targets(
|
||||||
ServiceNamespace=DEFAULT_SERVICE_NAMESPACE
|
ServiceNamespace=DEFAULT_SERVICE_NAMESPACE
|
||||||
)
|
)
|
||||||
response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200)
|
assert response["ResponseMetadata"]["HTTPStatusCode"] == 200
|
||||||
len(response["ScalableTargets"]).should.equal(2)
|
assert len(response["ScalableTargets"]) == 2
|
||||||
|
|
||||||
|
|
||||||
@mock_ecs
|
@mock_ecs
|
||||||
@ -163,17 +160,17 @@ def test_describe_scalable_targets_next_token_success():
|
|||||||
response = client.describe_scalable_targets(
|
response = client.describe_scalable_targets(
|
||||||
ServiceNamespace=DEFAULT_SERVICE_NAMESPACE
|
ServiceNamespace=DEFAULT_SERVICE_NAMESPACE
|
||||||
)
|
)
|
||||||
response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200)
|
assert response["ResponseMetadata"]["HTTPStatusCode"] == 200
|
||||||
len(response["ScalableTargets"]).should.equal(50)
|
assert len(response["ScalableTargets"]) == 50
|
||||||
response["ScalableTargets"][0]["ResourceId"].should.equal("service/default/0")
|
assert response["ScalableTargets"][0]["ResourceId"] == "service/default/0"
|
||||||
response.should.have.key("NextToken").which.should.equal("49")
|
assert response["NextToken"] == "49"
|
||||||
response = client.describe_scalable_targets(
|
response = client.describe_scalable_targets(
|
||||||
ServiceNamespace=DEFAULT_SERVICE_NAMESPACE, NextToken=str(response["NextToken"])
|
ServiceNamespace=DEFAULT_SERVICE_NAMESPACE, NextToken=str(response["NextToken"])
|
||||||
)
|
)
|
||||||
response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200)
|
assert response["ResponseMetadata"]["HTTPStatusCode"] == 200
|
||||||
len(response["ScalableTargets"]).should.equal(50)
|
assert len(response["ScalableTargets"]) == 50
|
||||||
response["ScalableTargets"][0]["ResourceId"].should.equal("service/default/50")
|
assert response["ScalableTargets"][0]["ResourceId"] == "service/default/50"
|
||||||
response.should_not.have.key("NextToken")
|
assert "NextToken" not in response
|
||||||
|
|
||||||
|
|
||||||
def register_scalable_target(client, **kwargs):
|
def register_scalable_target(client, **kwargs):
|
||||||
@ -192,7 +189,6 @@ def register_scalable_target(client, **kwargs):
|
|||||||
@mock_ecs
|
@mock_ecs
|
||||||
@mock_applicationautoscaling
|
@mock_applicationautoscaling
|
||||||
def test_register_scalable_target_resource_id_variations():
|
def test_register_scalable_target_resource_id_variations():
|
||||||
|
|
||||||
# Required to register an ECS target in moto
|
# Required to register an ECS target in moto
|
||||||
ecs = boto3.client("ecs", region_name=DEFAULT_REGION)
|
ecs = boto3.client("ecs", region_name=DEFAULT_REGION)
|
||||||
_create_ecs_defaults(ecs)
|
_create_ecs_defaults(ecs)
|
||||||
@ -259,14 +255,14 @@ def test_register_scalable_target_resource_id_variations():
|
|||||||
MaxCapacity=8,
|
MaxCapacity=8,
|
||||||
)
|
)
|
||||||
response = client.describe_scalable_targets(ServiceNamespace=namespace)
|
response = client.describe_scalable_targets(ServiceNamespace=namespace)
|
||||||
response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200)
|
assert response["ResponseMetadata"]["HTTPStatusCode"] == 200
|
||||||
num_targets = 2 if namespace == "dynamodb" and "index" in resource_id else 1
|
num_targets = 2 if namespace == "dynamodb" and "index" in resource_id else 1
|
||||||
len(response["ScalableTargets"]).should.equal(num_targets)
|
assert len(response["ScalableTargets"]) == num_targets
|
||||||
t = response["ScalableTargets"][-1]
|
t = response["ScalableTargets"][-1]
|
||||||
t.should.have.key("ServiceNamespace").which.should.equal(namespace)
|
assert t["ServiceNamespace"] == namespace
|
||||||
t.should.have.key("ResourceId").which.should.equal(resource_id)
|
assert t["ResourceId"] == resource_id
|
||||||
t.should.have.key("ScalableDimension").which.should.equal(scalable_dimension)
|
assert t["ScalableDimension"] == scalable_dimension
|
||||||
t.should.have.key("CreationTime").which.should.be.a("datetime.datetime")
|
assert "CreationTime" in t
|
||||||
|
|
||||||
|
|
||||||
@mock_ecs
|
@mock_ecs
|
||||||
@ -297,19 +293,21 @@ def test_register_scalable_target_updates_existing_target():
|
|||||||
ServiceNamespace=DEFAULT_SERVICE_NAMESPACE
|
ServiceNamespace=DEFAULT_SERVICE_NAMESPACE
|
||||||
)
|
)
|
||||||
|
|
||||||
len(response["ScalableTargets"]).should.equal(1)
|
assert len(response["ScalableTargets"]) == 1
|
||||||
t = response["ScalableTargets"][0]
|
t = response["ScalableTargets"][0]
|
||||||
t.should.have.key("MinCapacity").which.should.equal(updated_min_capacity)
|
assert t["MinCapacity"] == updated_min_capacity
|
||||||
t.should.have.key("MaxCapacity").which.should.equal(updated_max_capacity)
|
assert t["MaxCapacity"] == updated_max_capacity
|
||||||
t.should.have.key("SuspendedState")
|
assert (
|
||||||
t["SuspendedState"]["DynamicScalingInSuspended"].should.equal(
|
t["SuspendedState"]["DynamicScalingInSuspended"]
|
||||||
updated_suspended_state["DynamicScalingInSuspended"]
|
== updated_suspended_state["DynamicScalingInSuspended"]
|
||||||
)
|
)
|
||||||
t["SuspendedState"]["DynamicScalingOutSuspended"].should.equal(
|
assert (
|
||||||
updated_suspended_state["DynamicScalingOutSuspended"]
|
t["SuspendedState"]["DynamicScalingOutSuspended"]
|
||||||
|
== updated_suspended_state["DynamicScalingOutSuspended"]
|
||||||
)
|
)
|
||||||
t["SuspendedState"]["ScheduledScalingSuspended"].should.equal(
|
assert (
|
||||||
updated_suspended_state["ScheduledScalingSuspended"]
|
t["SuspendedState"]["ScheduledScalingSuspended"]
|
||||||
|
== updated_suspended_state["ScheduledScalingSuspended"]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -365,8 +363,8 @@ def test_put_scaling_policy(policy_type, policy_body_kwargs):
|
|||||||
PolicyType="ABCDEFG",
|
PolicyType="ABCDEFG",
|
||||||
**policy_body_kwargs,
|
**policy_body_kwargs,
|
||||||
)
|
)
|
||||||
e.value.response["Error"]["Message"].should.match(
|
assert (
|
||||||
r"Unknown policy type .* specified."
|
e.value.response["Error"]["Message"] == "Unknown policy type ABCDEFG specified."
|
||||||
)
|
)
|
||||||
|
|
||||||
response = client.put_scaling_policy(
|
response = client.put_scaling_policy(
|
||||||
@ -377,9 +375,13 @@ def test_put_scaling_policy(policy_type, policy_body_kwargs):
|
|||||||
PolicyType=policy_type,
|
PolicyType=policy_type,
|
||||||
**policy_body_kwargs,
|
**policy_body_kwargs,
|
||||||
)
|
)
|
||||||
response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200)
|
assert response["ResponseMetadata"]["HTTPStatusCode"] == 200
|
||||||
response["PolicyARN"].should.match(
|
assert (
|
||||||
rf"arn:aws:autoscaling:.*1:{ACCOUNT_ID}:scalingPolicy:.*:resource/{namespace}/{resource_id}:policyName/{policy_name}"
|
re.match(
|
||||||
|
pattern=rf"arn:aws:autoscaling:{DEFAULT_REGION}:{ACCOUNT_ID}:scalingPolicy:.*:resource/{namespace}/{resource_id}:policyName/{policy_name}",
|
||||||
|
string=response["PolicyARN"],
|
||||||
|
)
|
||||||
|
is not None
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -415,7 +417,7 @@ def test_describe_scaling_policies():
|
|||||||
PolicyType=policy_type,
|
PolicyType=policy_type,
|
||||||
TargetTrackingScalingPolicyConfiguration=policy_body,
|
TargetTrackingScalingPolicyConfiguration=policy_body,
|
||||||
)
|
)
|
||||||
response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200)
|
assert response["ResponseMetadata"]["HTTPStatusCode"] == 200
|
||||||
|
|
||||||
response = client.describe_scaling_policies(
|
response = client.describe_scaling_policies(
|
||||||
PolicyNames=[policy_name],
|
PolicyNames=[policy_name],
|
||||||
@ -423,18 +425,22 @@ def test_describe_scaling_policies():
|
|||||||
ResourceId=resource_id,
|
ResourceId=resource_id,
|
||||||
ScalableDimension=scalable_dimension,
|
ScalableDimension=scalable_dimension,
|
||||||
)
|
)
|
||||||
response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200)
|
assert response["ResponseMetadata"]["HTTPStatusCode"] == 200
|
||||||
policy = response["ScalingPolicies"][0]
|
policy = response["ScalingPolicies"][0]
|
||||||
policy["PolicyName"].should.equal(policy_name)
|
assert policy["PolicyName"] == policy_name
|
||||||
policy["ServiceNamespace"].should.equal(namespace)
|
assert policy["ServiceNamespace"] == namespace
|
||||||
policy["ResourceId"].should.equal(resource_id)
|
assert policy["ResourceId"] == resource_id
|
||||||
policy["ScalableDimension"].should.equal(scalable_dimension)
|
assert policy["ScalableDimension"] == scalable_dimension
|
||||||
policy["PolicyType"].should.equal(policy_type)
|
assert policy["PolicyType"] == policy_type
|
||||||
policy["TargetTrackingScalingPolicyConfiguration"].should.equal(policy_body)
|
assert policy["TargetTrackingScalingPolicyConfiguration"] == policy_body
|
||||||
policy["PolicyARN"].should.match(
|
assert (
|
||||||
rf"arn:aws:autoscaling:.*1:{ACCOUNT_ID}:scalingPolicy:.*:resource/{namespace}/{resource_id}:policyName/{policy_name}"
|
re.match(
|
||||||
|
pattern=rf"arn:aws:autoscaling:{DEFAULT_REGION}:{ACCOUNT_ID}:scalingPolicy:.*:resource/{namespace}/{resource_id}:policyName/{policy_name}",
|
||||||
|
string=policy["PolicyARN"],
|
||||||
|
)
|
||||||
|
is not None
|
||||||
)
|
)
|
||||||
policy.should.have.key("CreationTime").which.should.be.a("datetime.datetime")
|
assert "CreationTime" in policy
|
||||||
|
|
||||||
|
|
||||||
@mock_applicationautoscaling
|
@mock_applicationautoscaling
|
||||||
@ -468,7 +474,7 @@ def test_delete_scaling_policies():
|
|||||||
ResourceId=resource_id,
|
ResourceId=resource_id,
|
||||||
ScalableDimension=scalable_dimension,
|
ScalableDimension=scalable_dimension,
|
||||||
)
|
)
|
||||||
e.value.response["Error"]["Message"].should.match(r"No scaling policy found .*")
|
assert "No scaling policy found" in e.value.response["Error"]["Message"]
|
||||||
|
|
||||||
response = client.put_scaling_policy(
|
response = client.put_scaling_policy(
|
||||||
PolicyName=policy_name,
|
PolicyName=policy_name,
|
||||||
@ -478,7 +484,7 @@ def test_delete_scaling_policies():
|
|||||||
PolicyType=policy_type,
|
PolicyType=policy_type,
|
||||||
TargetTrackingScalingPolicyConfiguration=policy_body,
|
TargetTrackingScalingPolicyConfiguration=policy_body,
|
||||||
)
|
)
|
||||||
response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200)
|
assert response["ResponseMetadata"]["HTTPStatusCode"] == 200
|
||||||
|
|
||||||
response = client.delete_scaling_policy(
|
response = client.delete_scaling_policy(
|
||||||
PolicyName=policy_name,
|
PolicyName=policy_name,
|
||||||
@ -486,7 +492,7 @@ def test_delete_scaling_policies():
|
|||||||
ResourceId=resource_id,
|
ResourceId=resource_id,
|
||||||
ScalableDimension=scalable_dimension,
|
ScalableDimension=scalable_dimension,
|
||||||
)
|
)
|
||||||
response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200)
|
assert response["ResponseMetadata"]["HTTPStatusCode"] == 200
|
||||||
|
|
||||||
response = client.describe_scaling_policies(
|
response = client.describe_scaling_policies(
|
||||||
PolicyNames=[policy_name],
|
PolicyNames=[policy_name],
|
||||||
@ -494,8 +500,8 @@ def test_delete_scaling_policies():
|
|||||||
ResourceId=resource_id,
|
ResourceId=resource_id,
|
||||||
ScalableDimension=scalable_dimension,
|
ScalableDimension=scalable_dimension,
|
||||||
)
|
)
|
||||||
response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200)
|
assert response["ResponseMetadata"]["HTTPStatusCode"] == 200
|
||||||
len(response["ScalingPolicies"]).should.equal(0)
|
assert len(response["ScalingPolicies"]) == 0
|
||||||
|
|
||||||
|
|
||||||
@mock_applicationautoscaling
|
@mock_applicationautoscaling
|
||||||
@ -514,7 +520,7 @@ def test_deregister_scalable_target():
|
|||||||
)
|
)
|
||||||
|
|
||||||
response = client.describe_scalable_targets(ServiceNamespace=namespace)
|
response = client.describe_scalable_targets(ServiceNamespace=namespace)
|
||||||
len(response["ScalableTargets"]).should.equal(1)
|
assert len(response["ScalableTargets"]) == 1
|
||||||
|
|
||||||
client.deregister_scalable_target(
|
client.deregister_scalable_target(
|
||||||
ServiceNamespace=namespace,
|
ServiceNamespace=namespace,
|
||||||
@ -523,7 +529,7 @@ def test_deregister_scalable_target():
|
|||||||
)
|
)
|
||||||
|
|
||||||
response = client.describe_scalable_targets(ServiceNamespace=namespace)
|
response = client.describe_scalable_targets(ServiceNamespace=namespace)
|
||||||
len(response["ScalableTargets"]).should.equal(0)
|
assert len(response["ScalableTargets"]) == 0
|
||||||
|
|
||||||
with pytest.raises(client.exceptions.ValidationException) as e:
|
with pytest.raises(client.exceptions.ValidationException) as e:
|
||||||
client.deregister_scalable_target(
|
client.deregister_scalable_target(
|
||||||
@ -531,14 +537,14 @@ def test_deregister_scalable_target():
|
|||||||
ResourceId=resource_id,
|
ResourceId=resource_id,
|
||||||
ScalableDimension=scalable_dimension,
|
ScalableDimension=scalable_dimension,
|
||||||
)
|
)
|
||||||
e.value.response["Error"]["Message"].should.match(r"No scalable target found .*")
|
assert "No scalable target found" in e.value.response["Error"]["Message"]
|
||||||
|
|
||||||
|
|
||||||
@mock_applicationautoscaling
|
@mock_applicationautoscaling
|
||||||
def test_delete_scheduled_action():
|
def test_delete_scheduled_action():
|
||||||
client = boto3.client("application-autoscaling", region_name="eu-west-1")
|
client = boto3.client("application-autoscaling", region_name="eu-west-1")
|
||||||
resp = client.describe_scheduled_actions(ServiceNamespace="ecs")
|
resp = client.describe_scheduled_actions(ServiceNamespace="ecs")
|
||||||
resp.should.have.key("ScheduledActions").length_of(0)
|
assert len(resp["ScheduledActions"]) == 0
|
||||||
|
|
||||||
for i in range(3):
|
for i in range(3):
|
||||||
client.put_scheduled_action(
|
client.put_scheduled_action(
|
||||||
@ -549,7 +555,7 @@ def test_delete_scheduled_action():
|
|||||||
)
|
)
|
||||||
|
|
||||||
resp = client.describe_scheduled_actions(ServiceNamespace="ecs")
|
resp = client.describe_scheduled_actions(ServiceNamespace="ecs")
|
||||||
resp.should.have.key("ScheduledActions").length_of(3)
|
assert len(resp["ScheduledActions"]) == 3
|
||||||
|
|
||||||
client.delete_scheduled_action(
|
client.delete_scheduled_action(
|
||||||
ServiceNamespace="ecs",
|
ServiceNamespace="ecs",
|
||||||
@ -559,14 +565,14 @@ def test_delete_scheduled_action():
|
|||||||
)
|
)
|
||||||
|
|
||||||
resp = client.describe_scheduled_actions(ServiceNamespace="ecs")
|
resp = client.describe_scheduled_actions(ServiceNamespace="ecs")
|
||||||
resp.should.have.key("ScheduledActions").length_of(2)
|
assert len(resp["ScheduledActions"]) == 2
|
||||||
|
|
||||||
|
|
||||||
@mock_applicationautoscaling
|
@mock_applicationautoscaling
|
||||||
def test_describe_scheduled_actions():
|
def test_describe_scheduled_actions():
|
||||||
client = boto3.client("application-autoscaling", region_name="eu-west-1")
|
client = boto3.client("application-autoscaling", region_name="eu-west-1")
|
||||||
resp = client.describe_scheduled_actions(ServiceNamespace="ecs")
|
resp = client.describe_scheduled_actions(ServiceNamespace="ecs")
|
||||||
resp.should.have.key("ScheduledActions").length_of(0)
|
assert len(resp["ScheduledActions"]) == 0
|
||||||
|
|
||||||
for i in range(3):
|
for i in range(3):
|
||||||
client.put_scheduled_action(
|
client.put_scheduled_action(
|
||||||
@ -583,29 +589,29 @@ def test_describe_scheduled_actions():
|
|||||||
)
|
)
|
||||||
|
|
||||||
resp = client.describe_scheduled_actions(ServiceNamespace="ecs")
|
resp = client.describe_scheduled_actions(ServiceNamespace="ecs")
|
||||||
resp.should.have.key("ScheduledActions").length_of(3)
|
assert len(resp["ScheduledActions"]) == 3
|
||||||
|
|
||||||
resp = client.describe_scheduled_actions(ServiceNamespace="ec2")
|
resp = client.describe_scheduled_actions(ServiceNamespace="ec2")
|
||||||
resp.should.have.key("ScheduledActions").length_of(0)
|
assert len(resp["ScheduledActions"]) == 0
|
||||||
|
|
||||||
resp = client.describe_scheduled_actions(
|
resp = client.describe_scheduled_actions(
|
||||||
ServiceNamespace="dynamodb", ScheduledActionNames=["ddb_action_0"]
|
ServiceNamespace="dynamodb", ScheduledActionNames=["ddb_action_0"]
|
||||||
)
|
)
|
||||||
resp.should.have.key("ScheduledActions").length_of(1)
|
assert len(resp["ScheduledActions"]) == 1
|
||||||
|
|
||||||
resp = client.describe_scheduled_actions(
|
resp = client.describe_scheduled_actions(
|
||||||
ServiceNamespace="dynamodb",
|
ServiceNamespace="dynamodb",
|
||||||
ResourceId="table/table_0",
|
ResourceId="table/table_0",
|
||||||
ScalableDimension="dynamodb:table:ReadCapacityUnits",
|
ScalableDimension="dynamodb:table:ReadCapacityUnits",
|
||||||
)
|
)
|
||||||
resp.should.have.key("ScheduledActions").length_of(1)
|
assert len(resp["ScheduledActions"]) == 1
|
||||||
|
|
||||||
resp = client.describe_scheduled_actions(
|
resp = client.describe_scheduled_actions(
|
||||||
ServiceNamespace="dynamodb",
|
ServiceNamespace="dynamodb",
|
||||||
ResourceId="table/table_0",
|
ResourceId="table/table_0",
|
||||||
ScalableDimension="dynamodb:table:WriteCapacityUnits",
|
ScalableDimension="dynamodb:table:WriteCapacityUnits",
|
||||||
)
|
)
|
||||||
resp.should.have.key("ScheduledActions").length_of(0)
|
assert len(resp["ScheduledActions"]) == 0
|
||||||
|
|
||||||
|
|
||||||
@mock_applicationautoscaling
|
@mock_applicationautoscaling
|
||||||
@ -619,18 +625,19 @@ def test_put_scheduled_action():
|
|||||||
)
|
)
|
||||||
|
|
||||||
resp = client.describe_scheduled_actions(ServiceNamespace="ecs")
|
resp = client.describe_scheduled_actions(ServiceNamespace="ecs")
|
||||||
resp.should.have.key("ScheduledActions").length_of(1)
|
assert len(resp["ScheduledActions"]) == 1
|
||||||
|
|
||||||
action = resp["ScheduledActions"][0]
|
action = resp["ScheduledActions"][0]
|
||||||
action.should.have.key("ScheduledActionName").equals("action_name")
|
assert action["ScheduledActionName"] == "action_name"
|
||||||
action.should.have.key("ScheduledActionARN").equals(
|
assert (
|
||||||
f"arn:aws:autoscaling:ap-southeast-1:{ACCOUNT_ID}:scheduledAction:ecs:scheduledActionName/action_name"
|
action["ScheduledActionARN"]
|
||||||
|
== f"arn:aws:autoscaling:ap-southeast-1:{ACCOUNT_ID}:scheduledAction:ecs:scheduledActionName/action_name"
|
||||||
)
|
)
|
||||||
action.should.have.key("ServiceNamespace").equals("ecs")
|
assert action["ServiceNamespace"] == "ecs"
|
||||||
action.should.have.key("ResourceId").equals("ecs:cluster:x")
|
assert action["ResourceId"] == "ecs:cluster:x"
|
||||||
action.should.have.key("ScalableDimension").equals("ecs:service:DesiredCount")
|
assert action["ScalableDimension"] == "ecs:service:DesiredCount"
|
||||||
action.should.have.key("CreationTime")
|
assert "CreationTime" in action
|
||||||
action.shouldnt.have.key("ScalableTargetAction")
|
assert "ScalableTargetAction" not in action
|
||||||
|
|
||||||
|
|
||||||
@mock_applicationautoscaling
|
@mock_applicationautoscaling
|
||||||
@ -654,17 +661,16 @@ def test_put_scheduled_action__use_update():
|
|||||||
)
|
)
|
||||||
|
|
||||||
resp = client.describe_scheduled_actions(ServiceNamespace="ecs")
|
resp = client.describe_scheduled_actions(ServiceNamespace="ecs")
|
||||||
resp.should.have.key("ScheduledActions").length_of(1)
|
assert len(resp["ScheduledActions"]) == 1
|
||||||
|
|
||||||
action = resp["ScheduledActions"][0]
|
action = resp["ScheduledActions"][0]
|
||||||
action.should.have.key("ScheduledActionName").equals("action_name_updated")
|
assert action["ScheduledActionName"] == "action_name_updated"
|
||||||
action.should.have.key("ScheduledActionARN").equals(
|
assert (
|
||||||
f"arn:aws:autoscaling:ap-southeast-1:{ACCOUNT_ID}:scheduledAction:ecs:scheduledActionName/action_name"
|
action["ScheduledActionARN"]
|
||||||
)
|
== f"arn:aws:autoscaling:ap-southeast-1:{ACCOUNT_ID}:scheduledAction:ecs:scheduledActionName/action_name"
|
||||||
action.should.have.key("ServiceNamespace").equals("ecs")
|
|
||||||
action.should.have.key("ResourceId").equals("ecs:cluster:x")
|
|
||||||
action.should.have.key("ScalableDimension").equals("ecs:service:DesiredCount")
|
|
||||||
action.should.have.key("CreationTime")
|
|
||||||
action.should.have.key("ScalableTargetAction").equals(
|
|
||||||
{"MaxCapacity": 23, "MinCapacity": 12}
|
|
||||||
)
|
)
|
||||||
|
assert action["ServiceNamespace"] == "ecs"
|
||||||
|
assert action["ResourceId"] == "ecs:cluster:x"
|
||||||
|
assert action["ScalableDimension"] == "ecs:service:DesiredCount"
|
||||||
|
assert "CreationTime" in action
|
||||||
|
assert action["ScalableTargetAction"] == {"MaxCapacity": 23, "MinCapacity": 12}
|
||||||
|
@ -3,7 +3,6 @@ from moto import mock_applicationautoscaling, mock_ecs
|
|||||||
from moto.applicationautoscaling import models
|
from moto.applicationautoscaling import models
|
||||||
from moto.applicationautoscaling.exceptions import AWSValidationException
|
from moto.applicationautoscaling.exceptions import AWSValidationException
|
||||||
import pytest
|
import pytest
|
||||||
import sure # noqa # pylint: disable=unused-import
|
|
||||||
from botocore.exceptions import ClientError
|
from botocore.exceptions import ClientError
|
||||||
from .test_applicationautoscaling import register_scalable_target
|
from .test_applicationautoscaling import register_scalable_target
|
||||||
|
|
||||||
@ -28,11 +27,9 @@ def test_describe_scalable_targets_with_invalid_scalable_dimension_should_return
|
|||||||
ServiceNamespace=DEFAULT_SERVICE_NAMESPACE, ScalableDimension="foo"
|
ServiceNamespace=DEFAULT_SERVICE_NAMESPACE, ScalableDimension="foo"
|
||||||
)
|
)
|
||||||
err = ex.value.response
|
err = ex.value.response
|
||||||
err["Error"]["Code"].should.equal("ValidationException")
|
assert err["Error"]["Code"] == "ValidationException"
|
||||||
err["Error"]["Message"].split(":")[0].should.look_like(
|
assert "1 validation error detected" in err["Error"]["Message"]
|
||||||
"1 validation error detected"
|
assert err["ResponseMetadata"]["HTTPStatusCode"] == 400
|
||||||
)
|
|
||||||
err["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
|
|
||||||
|
|
||||||
|
|
||||||
@mock_applicationautoscaling
|
@mock_applicationautoscaling
|
||||||
@ -44,11 +41,9 @@ def test_describe_scalable_targets_with_invalid_service_namespace_should_return_
|
|||||||
ServiceNamespace="foo", ScalableDimension=DEFAULT_SCALABLE_DIMENSION
|
ServiceNamespace="foo", ScalableDimension=DEFAULT_SCALABLE_DIMENSION
|
||||||
)
|
)
|
||||||
err = ex.value.response
|
err = ex.value.response
|
||||||
err["Error"]["Code"].should.equal("ValidationException")
|
assert err["Error"]["Code"] == "ValidationException"
|
||||||
err["Error"]["Message"].split(":")[0].should.look_like(
|
assert "1 validation error detected" in err["Error"]["Message"]
|
||||||
"1 validation error detected"
|
assert err["ResponseMetadata"]["HTTPStatusCode"] == 400
|
||||||
)
|
|
||||||
err["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
|
|
||||||
|
|
||||||
|
|
||||||
@mock_applicationautoscaling
|
@mock_applicationautoscaling
|
||||||
@ -60,11 +55,9 @@ def test_describe_scalable_targets_with_multiple_invalid_parameters_should_retur
|
|||||||
ServiceNamespace="foo", ScalableDimension="bar"
|
ServiceNamespace="foo", ScalableDimension="bar"
|
||||||
)
|
)
|
||||||
err = ex.value.response
|
err = ex.value.response
|
||||||
err["Error"]["Code"].should.equal("ValidationException")
|
assert err["Error"]["Code"] == "ValidationException"
|
||||||
err["Error"]["Message"].split(":")[0].should.look_like(
|
assert "2 validation errors detected" in err["Error"]["Message"]
|
||||||
"2 validation errors detected"
|
assert err["ResponseMetadata"]["HTTPStatusCode"] == 400
|
||||||
)
|
|
||||||
err["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
|
|
||||||
|
|
||||||
|
|
||||||
@mock_ecs
|
@mock_ecs
|
||||||
@ -76,9 +69,9 @@ def test_register_scalable_target_ecs_with_non_existent_service_should_return_cl
|
|||||||
with pytest.raises(ClientError) as ex:
|
with pytest.raises(ClientError) as ex:
|
||||||
register_scalable_target(client, ServiceNamespace="ecs", ResourceId=resource_id)
|
register_scalable_target(client, ServiceNamespace="ecs", ResourceId=resource_id)
|
||||||
err = ex.value.response
|
err = ex.value.response
|
||||||
err["Error"]["Code"].should.equal("ClusterNotFoundException")
|
assert err["Error"]["Code"] == "ClusterNotFoundException"
|
||||||
err["Error"]["Message"].should.equal("Cluster not found.")
|
assert err["Error"]["Message"] == "Cluster not found."
|
||||||
err["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
|
assert err["ResponseMetadata"]["HTTPStatusCode"] == 400
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
@ -91,9 +84,7 @@ def test_register_scalable_target_ecs_with_non_existent_service_should_return_cl
|
|||||||
)
|
)
|
||||||
def test_target_params_are_valid_success(namespace, r_id, dimension, expected):
|
def test_target_params_are_valid_success(namespace, r_id, dimension, expected):
|
||||||
if expected is True:
|
if expected is True:
|
||||||
models._target_params_are_valid(namespace, r_id, dimension).should.equal(
|
assert models._target_params_are_valid(namespace, r_id, dimension) == expected
|
||||||
expected
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
with pytest.raises(AWSValidationException):
|
with pytest.raises(AWSValidationException):
|
||||||
models._target_params_are_valid(namespace, r_id, dimension)
|
models._target_params_are_valid(namespace, r_id, dimension)
|
||||||
|
Loading…
Reference in New Issue
Block a user