test: add plugin conformance suite handlers (10-1..10-7) - #559
Open
wangyb-A wants to merge 7 commits into
Open
Conversation
wangyb-A
force-pushed
the
conformance-plugin-suite
branch
from
July 27, 2026 21:43
f251831 to
1dd85c8
Compare
added 7 commits
July 27, 2026 23:48
7 handlers + shared ConformanceLoggingPlugin/FaultyConformancePlugin exercising DurableExecutionPlugin lifecycle hooks via DurableConfig withPlugins, plus template_plugin.yaml. Validated live: 6/7 PASS; 10-3 OPTIONAL_FAILED surfaces a tracked SDK bug (UserFunctionEndInfo succeeded=true for failed attempts).
The exact-match ExpectedLogs schema exposed that this handler reused the general ConformanceLoggingPlugin, emitting 'CONFPLUGIN-A invocation-start first=true' where the requirement documents 'CONFPLUGIN-A invocation-start' (as JS/Python emit). Use a minimal purpose-built plugin matching the requirement byte-for-byte.
One JSON object per hook ({plugin, hook, first|status|n|outcome|op}),
values from the real hook info parameters; replaces packed text lines so
specs assert typed fields directly.
Records carry the execution ARN received via the invocation-start hook (captured in a volatile field for operation/user-function hooks) so the runner's execution-scoped CloudWatch JSON filter retrieves them.
Adopt upstream's LoggingConfig LogFormat JSON + log4j2.xml (Lambda appender with JsonTemplateLayout resolving MDC executionArn into durableExecutionArn) so SDK-logger lines are execution-scoped retrievable; drop the obsolete JAVA_TOOL_OPTIONS level hack.
… matrix Mirrors the Python repo: a discover_suites job runs conformance-tests/scripts/discover_suites.py (validating each template_<suite>.yaml has a non-empty src/main/java/<suite>/ package) and feeds strategy.matrix.suite, so a new suite runs in CI as soon as its template + handlers ship.
wangyb-A
force-pushed
the
conformance-plugin-suite
branch
from
July 27, 2026 23:51
cb685ee to
bda11b7
Compare
wangyb-A
marked this pull request as ready for review
July 27, 2026 23:53
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.
What
7 handlers + shared
ConformanceLoggingPlugin/FaultyConformancePluginfor thepluginconformance suite inconformance-tests/src/main/java/plugin/, plustemplate_plugin.yaml.DurableConfig.builder().withPlugins(...)API; all values from realDurableExecutionPluginhook info records.{plugin, hook, first|status|n|outcome|op}— viaSystem.out.println(single-line JSON).durableExecutionArn(received viaonInvocationStart, carried in a volatile field for operation/user-function hooks) so the runner's execution-scoped log retrieval locates plugin records.template_plugin.yamladoptsLoggingConfig: LogFormat: JSON(with the module'slog4j2.xmlLambda appender) so SDK-logger lines carry structured fields includingdurableExecutionArn— same as the other suites' templates.opfields carry the hook-received operation id, asserted against the history-bound${ID1}.Validation (live, us-west-2, 2026-07-27): 7/7 PASSED (10-1..10-7)
Notably, 10-3 validates the fix from #558: this suite discovered on Jul 23 that
UserFunctionEndInfo.succeeded()was alwaystruefor failed step attempts (the step's throwable was swallowed before the plugin boundary, while JS/Python reported the failure correctly); #558 restructured the hook boundary and 10-3 now passes — completing the find → fix → regression-proof loop.Depends on
Requirements + ExpectedLogs structured-matcher runner: aws/aws-durable-execution-conformance-tests#26 (land first).