Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion src/aws_durable_execution_sdk_python_testing/execution.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,11 @@ def new(input: StartDurableExecutionInput) -> Execution: # noqa: A002
# Pattern: arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}(-gov)?-[a-z]+-\d{1}:\d{12}:durable-execution:[a-zA-Z0-9-_\.]+:[a-zA-Z0-9-_\.]+:[a-zA-Z0-9-_\.]+
# Example: arn:aws:lambda:us-east-1:123456789012:durable-execution:myDurableFunction:myDurableExecutionName:ce67da72-3701-4f83-9174-f4189d27b0a5
return Execution(
durable_execution_arn=str(uuid4()), start_input=input, operations=[]
durable_execution_arn=str(uuid4())
+ "/"
+ (input.invocation_id or str(uuid4())),
start_input=input,
operations=[],
)

def to_json_dict(self) -> dict[str, Any]:
Expand Down
33 changes: 32 additions & 1 deletion tests/execution_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ def test_execution_init():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
operations = []

Expand Down Expand Up @@ -61,11 +62,14 @@ def test_execution_new(mock_uuid4):
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id-1234",
)

execution = Execution.new(start_input)

assert execution.durable_execution_arn == str(mock_uuid)
assert (
execution.durable_execution_arn == str(mock_uuid) + "/test-invocation-id-1234"
)
assert execution.start_input == start_input
assert execution.operations == []

Expand Down Expand Up @@ -130,6 +134,7 @@ def test_get_operation_execution_started_not_started():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
execution = Execution("test-arn", start_input, [])

Expand All @@ -146,6 +151,7 @@ def test_get_new_checkpoint_token():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="invocation-id",
)
execution = Execution("test-arn", start_input, [])

Expand All @@ -167,6 +173,7 @@ def test_get_navigable_operations():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
operations = [
Operation(
Expand Down Expand Up @@ -194,6 +201,7 @@ def test_get_assertable_operations():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
execution_op = Operation(
operation_id="exec-op",
Expand Down Expand Up @@ -229,6 +237,7 @@ def test_has_pending_operations_with_pending_step():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
operations = [
Operation(
Expand Down Expand Up @@ -256,6 +265,7 @@ def test_has_pending_operations_with_started_wait():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
operations = [
Operation(
Expand Down Expand Up @@ -283,6 +293,7 @@ def test_has_pending_operations_with_started_callback():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
operations = [
Operation(
Expand Down Expand Up @@ -310,6 +321,7 @@ def test_has_pending_operations_with_started_invoke():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
operations = [
Operation(
Expand Down Expand Up @@ -337,6 +349,7 @@ def test_has_pending_operations_no_pending():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
operations = [
Operation(
Expand Down Expand Up @@ -364,6 +377,7 @@ def test_complete_success_with_string_result():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
execution = Execution("test-arn", start_input, [Mock()])

Expand All @@ -383,6 +397,7 @@ def test_complete_success_with_none_result():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
execution = Execution("test-arn", start_input, [Mock()])

Expand All @@ -402,6 +417,7 @@ def test_complete_fail():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
execution = Execution("test-arn", start_input, [Mock()])
error = ErrorObject.from_message("Test error message")
Expand All @@ -422,6 +438,7 @@ def test_find_operation_exists():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
operation = Operation(
operation_id="test-op-id",
Expand All @@ -448,6 +465,7 @@ def test_find_operation_not_exists():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
execution = Execution("test-arn", start_input, [])

Expand All @@ -470,6 +488,7 @@ def test_complete_wait_success(mock_datetime):
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
operation = Operation(
operation_id="wait-op-id",
Expand Down Expand Up @@ -498,6 +517,7 @@ def test_complete_wait_wrong_status():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
operation = Operation(
operation_id="wait-op-id",
Expand All @@ -524,6 +544,7 @@ def test_complete_wait_wrong_type():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
operation = Operation(
operation_id="step-op-id",
Expand All @@ -548,6 +569,7 @@ def test_complete_retry_success():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
step_details = StepDetails(
next_attempt_timestamp=str(datetime.now(timezone.utc)),
Expand Down Expand Up @@ -581,6 +603,7 @@ def test_complete_retry_no_step_details():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
operation = Operation(
operation_id="step-op-id",
Expand Down Expand Up @@ -608,6 +631,7 @@ def test_complete_retry_wrong_status():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
operation = Operation(
operation_id="step-op-id",
Expand All @@ -634,6 +658,7 @@ def test_complete_retry_wrong_type():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
operation = Operation(
operation_id="wait-op-id",
Expand All @@ -658,6 +683,7 @@ def test_status_running():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
execution = Execution("test-arn", start_input, [])

Expand All @@ -673,6 +699,7 @@ def test_status_succeeded():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
execution = Execution("test-arn", start_input, [Mock()])
execution.complete_success("success result")
Expand All @@ -689,6 +716,7 @@ def test_status_failed():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
execution = Execution("test-arn", start_input, [Mock()])
error = ErrorObject.from_message("Test error")
Expand All @@ -706,6 +734,7 @@ def test_status_timed_out():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="invocation-id",
)
execution = Execution("test-arn", start_input, [Mock()])
error = ErrorObject(
Expand All @@ -725,6 +754,7 @@ def test_status_stopped():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="invocation-id",
)
execution = Execution("test-arn", start_input, [Mock()])
error = ErrorObject(
Expand All @@ -744,6 +774,7 @@ def test_status_no_result():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="invocation-id",
)
execution = Execution("test-arn", start_input, [])
execution.is_complete = True
Expand Down
2 changes: 2 additions & 0 deletions tests/invoker_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ def test_in_process_invoker_create_invocation_input():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation-id",
)
execution = Execution.new(input_data)

Expand Down Expand Up @@ -151,6 +152,7 @@ def test_lambda_invoker_create_invocation_input():
execution_name="test-execution",
execution_timeout_seconds=300,
execution_retention_period_days=7,
invocation_id="test-invocation",
)
execution = Execution.new(input_data)

Expand Down
Loading