73 lines
2.8 KiB
Python
73 lines
2.8 KiB
Python
import json
|
|
from unittest import SkipTest
|
|
|
|
from moto import mock_aws, settings
|
|
|
|
from . import verify_execution_result
|
|
|
|
|
|
@mock_aws(config={"stepfunctions": {"execute_state_machine": True}})
|
|
def test_state_machine_with_parallel_states():
|
|
if settings.TEST_SERVER_MODE:
|
|
raise SkipTest("Don't need to test this in ServerMode")
|
|
tmpl_name = "parallel_states"
|
|
|
|
def _verify_result(client, execution, execution_arn):
|
|
assert "stopDate" in execution
|
|
assert execution["output"] == "[[1,2,3,4],[1,2,3,4],[1,2,3,4]]"
|
|
|
|
history = client.get_execution_history(executionArn=execution_arn)
|
|
assert len(history["events"]) == 20
|
|
assert "ParallelStateEntered" in [e["type"] for e in history["events"]]
|
|
assert "ParallelStateStarted" in [e["type"] for e in history["events"]]
|
|
assert "PassStateExited" in [e["type"] for e in history["events"]]
|
|
|
|
verify_execution_result(_verify_result, "SUCCEEDED", tmpl_name)
|
|
|
|
|
|
@mock_aws(config={"stepfunctions": {"execute_state_machine": True}})
|
|
def test_state_machine_with_parallel_states_catch_error():
|
|
if settings.TEST_SERVER_MODE:
|
|
raise SkipTest("Don't need to test this in ServerMode")
|
|
expected_status = "SUCCEEDED"
|
|
tmpl_name = "parallel_states_catch"
|
|
|
|
def _verify_result(client, execution, execution_arn):
|
|
assert "stopDate" in execution
|
|
assert json.loads(execution["output"])["Cause"] == "Cause description"
|
|
history = client.get_execution_history(executionArn=execution_arn)
|
|
assert len(history["events"]) == 9
|
|
assert "ParallelStateEntered" in [e["type"] for e in history["events"]]
|
|
assert "ParallelStateStarted" in [e["type"] for e in history["events"]]
|
|
assert "ParallelStateFailed" in [e["type"] for e in history["events"]]
|
|
|
|
verify_execution_result(_verify_result, expected_status, tmpl_name)
|
|
|
|
|
|
@mock_aws(config={"stepfunctions": {"execute_state_machine": True}})
|
|
def test_state_machine_with_parallel_states_error():
|
|
if settings.TEST_SERVER_MODE:
|
|
raise SkipTest("Don't need to test this in ServerMode")
|
|
|
|
def _verify_result(client, execution, execution_arn):
|
|
assert "stopDate" in execution
|
|
assert execution["error"] == "FailureType"
|
|
|
|
verify_execution_result(_verify_result, "FAILED", "parallel_fail")
|
|
|
|
|
|
@mock_aws(config={"stepfunctions": {"execute_state_machine": True}})
|
|
def test_state_machine_with_parallel_states_order():
|
|
if settings.TEST_SERVER_MODE:
|
|
raise SkipTest("Don't need to test this in ServerMode")
|
|
|
|
def _verify_result(client, execution, execution_arn):
|
|
assert json.loads(execution["output"]) == [
|
|
{"branch": 0},
|
|
{"branch": 1},
|
|
{"branch": 2},
|
|
{"branch": 3},
|
|
]
|
|
|
|
verify_execution_result(_verify_result, "SUCCEEDED", "parallel_states_order")
|