Repository navigation
Conversation
Port the JavaScript SDK's extras/e2e to Python. The runner builds the core SDK, this package, and the MicroVM worker from the repository, deploys a MicroVM image and a durable function, and checks each scenario's outcome, its operation history, and that every MicroVM was terminated. - The scenarios and the function's events are the JavaScript ones, so both SDKs are checked against one list. - Scenarios that need delivery over HTTP, microvm_session, or the worker's terminate action are pending until those land. - The runner starts a scenario only when its MicroVMs fit the account's memory quota. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Vivek0712
force-pushed
the
test/microvm-e2e
branch
from
October 14, 2026 18:55
e82d576 to
693e9f3
Compare
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.
Stacked on #769: this PR targets
feat/microvm-operation, so the diff shows only the e2e commit. It moves tomainwhen #769 merges.This ports the JavaScript SDK's
extras/e2eto Python, aspackages/aws-durable-execution-sdk-python-extras/e2e/run_e2e.py. It runs themicrovmoperation and the MicroVM worker against a real account. Both are built from the branch, so a run tests the change under review.What it does
dex-microvm-e2e-py-*.e2e/microvm/with the worker. The image name carries a hash of the sources, so an unchanged worker reuses the image.e2e/function/index.pyas a durable function, Python 3.13 on arm64, and publishes a version.The scenarios and the function's events are copied from the JavaScript runner. So a case added on one side can be added on the other with the same event.
Scenarios
Default run:
succeed,fail,crash,too-large-for-the-run-hook,run-hook-cjk,run-hook-emoji,parallel. Optional:long-job.Pending, skipped unless named in
E2E_SCENARIOS:terminated: needs the worker's terminate action.request-succeed,request-fail,auto-http,auto-http-cjk: need delivery over HTTP.too-large-for-the-run-hookchecks today's behaviour and goes away then.session,suspend-session,idle-probe: needmicrovm_session.Each pending scenario already has the JavaScript expectations. Turning one on means removing
pendingand adding its branch to the function.Differences from the JavaScript runner
RunInChildContext,Callback,Step), since custom subtypes wait for [Feature]: Custom subtype for step, callback, and child context operations #749.E2E_SUB_TYPES=customswitches to the JavaScript ones.E2E_MAX_MICROVMS, 4 by default. A new account may allocate 8 GB of MicroVM memory, and each MicroVM has 2 GB. Without the budget,parallelhitServiceQuotaExceededExceptionon one item, and the other item's MicroVM kept running.E2E_IMAGE_ARNandE2E_FUNCTION_ARNreuse an existing image or function. With the JavaScript e2e image,terminatedpasses, which checks the operation against both workers.Testing
Run in us-east-1 from this branch:
E2E_IMAGE_ARNset to the JavaScript e2e image:succeedandterminatedpassed, the latter withMicrovmJobFailedError (MicrovmTerminatedError)20 s in.ruff check,ruff format --check, andmypypass on the new files.Wiring it into
cloud-tests.ymlneeds the test account's image build role, so I left that out.🤖 Generated with Claude Code