Skip to content

Add Amazon.Lambda.DurableExecution.Testing design doc#2412

Draft
GarrettBeatty wants to merge 2 commits into
feature/durablefunctionfrom
durabletesting
Draft

Add Amazon.Lambda.DurableExecution.Testing design doc#2412
GarrettBeatty wants to merge 2 commits into
feature/durablefunctionfrom
durabletesting

Conversation

@GarrettBeatty

@GarrettBeatty GarrettBeatty commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Spec for a testing SDK companion to Amazon.Lambda.DurableExecution: local DurableTestRunner with in-memory orchestration, CloudDurableTestRunner for integration tests, step inspection API, sibling-function registration, and safety limits. Adopts the IDurableServiceClient seam (Approach B) that Python and JavaScript reference SDKs converged on.

Issue #, if available:
#2216
Description of changes:

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Spec for a testing SDK companion to Amazon.Lambda.DurableExecution:
local DurableTestRunner with in-memory orchestration, CloudDurableTestRunner
for integration tests, step inspection API, sibling-function registration,
and safety limits. Adopts the IDurableServiceClient seam (Approach B) that
Python and JavaScript reference SDKs converged on.
The "Approach A vs B vs C" framing only made sense in the brainstorming
chat where the alternatives had been spelled out earlier. The committed
spec should present the chosen design directly and explain why the
service-client interface is right on its own merits.
- `Amazon.Lambda.TestUtilities` (project reference) — `TestLambdaContext`, `TestLambdaLogger` for the runner's `ILambdaContext` substitute.
- `Amazon.Lambda.Serialization.SystemTextJson` (package reference) — `DefaultLambdaJsonSerializer` is the fallback when `TestRunnerOptions.Serializer` is null.

### Interception strategy: `IDurableServiceClient` seam

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

injecting this interface seemed like the best way. the other option was to override/implement some custom ILambdaServiceClient (because we already have an overload to pass that in) but this seemed better

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant