Add Durable Execution Testing Library#2447
Open
GarrettBeatty wants to merge 5 commits into
Open
Conversation
GarrettBeatty
commented
Jun 26, 2026
| <AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleToAttribute"> | ||
| <_Parameter1>Amazon.Lambda.DurableExecution.Tests, PublicKey="0024000004800000940000000602000000240000525341310004000001000100db5f59f098d27276c7833875a6263a3cc74ab17ba9a9df0b52aedbe7252745db7274d5271fd79c1f08f668ecfa8eaab5626fa76adc811d3c8fc55859b0d09d3bc0a84eecd0ba891f2b8a2fc55141cdcc37c2053d53491e650a479967c3622762977900eddbf1252ed08a2413f00a28f3a0752a81203f03ccb7f684db373518b4"</_Parameter1> | ||
| </AssemblyAttribute> | ||
| <AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleToAttribute"> |
Contributor
Author
There was a problem hiding this comment.
i dont think this change requires a new version to be released in order for the durableexecution.testing package to build since testing package uses a project refrerence right
Update durable-execution-testing-cloud-runner-history.json Add InternalsVisibleTo for Amazon.Lambda.DurableExecution.Testing Remove MIGRATION_PLAN.md
c0f82c9 to
5eb21ea
Compare
GarrettBeatty
commented
Jun 26, 2026
| <TargetFrameworks>$(DefaultPackageTargets)</TargetFrameworks> | ||
| <Description>Testing utilities for Amazon Lambda Durable Execution - test durable workflows locally without deploying to AWS.</Description> | ||
| <AssemblyTitle>Amazon.Lambda.DurableExecution.Testing</AssemblyTitle> | ||
| <Version>0.0.1-preview</Version> |
Contributor
Author
There was a problem hiding this comment.
had to manually set as -preview here as well. i will also do an override when doing the first release to make it be preview.
without setting it here, build fails because a non preview package would reference a preview package (durable execution)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue #, if available:
Description of changes:
Adds
Amazon.Lambda.DurableExecution.Testing(preview) — test durable workflows without deploying to AWS. You code againstIDurableTestRunner<TInput, TOutput>and the same test runs unchanged against the in-memoryDurableTestRunner(fast, no AWS) or theCloudDurableTestRunner(a deployed function).Basic workflow
Construct a runner with your handler, call
RunAsync, and assert on theTestResult— including individual steps:Time-skipping
By default waits and retry backoffs complete immediately, so a 30-day wait runs in milliseconds — and is still recorded as a step you can assert on:
Set
TestRunnerOptions.SkipTime = falseto assert on real durations.Callbacks
For workflows that suspend on a callback, use the two-call pattern:
StartAsyncruns until suspension,WaitForCallbackAsyncreturns the pending callback id, you send a result, thenWaitForResultAsyncdrives it to completion:SendCallbackFailureAsyncandSendCallbackHeartbeatAsyncare also available.Sibling functions
When a workflow calls
ctx.InvokeAsync, register the target on the runner so it resolves in-process:Testing against a deployed function
CloudDurableTestRunnerimplements the sameIDurableTestRunnerinterface against a real deployed durable function, so portable tests run unchanged on either backend:By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.