Skip to content

async messaging plugin interface - #37

Open
YOU54F wants to merge 15 commits into
masterfrom
avro-async
Open

YOU54F wants to merge 15 commits into
masterfrom
avro-async

Conversation

@YOU54F

@YOU54F YOU54F commented Oct 12, 2026

Copy link
Copy Markdown
Owner

No description provided.

adamrodger and others added 15 commits September 14, 2026 11:48
This enables creating a nicer API to expose publicly for use by plugin
wrappers.

See: pact-foundation#492
…ilder

Setting the plugin contents completes a synchronous plugin interaction, so
WithContent now returns void instead of the same builder. The plugin splits
one contents document into the request and its responses itself: a second
call would replace the request but append another response, which is why the
builder no longer allows it. Provider states stay chainable via Given.

Adds unit tests for the plugin request and pact builders and a docs page for
the raw plugin API, linked from the README.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Add a public HTTP plugin pact/request/response API on top of the synchronous plugin prerequisite. Load content plugins through the existing factory, create HTTP rather than synchronous-message interactions, and route plugin contents independently to request and response parts.

Reuse HTTP drivers for methods, paths, headers, queries and status; retain mock-server verification, logging, pact writing and plugin cleanup inside PactNet. Keep native handles and drivers internal. Reject repeated contents and response-stage reuse, validate HTTP status, and preserve header/query indexing.

Add focused tests and HTTP plugin guidance. Asynchronous binary plugin message reification remains a separate contribution. Validation: 60 affected builder tests passed, including existing synchronous and HTTP behavior; the external Avro example passed native request/response and provider/mismatch verification with hominux avro 0.1.3 and FFI 0.4.27.
Add transport-free asynchronous plugin pact/message builders and configured consumer verification. Expose generated binary payloads, media type and cloned JSON metadata, write the pact only after successful consumption, and keep native reification and plugin cleanup internal.

Decode the native V4 base64 envelope and free its allocated string. Apply user metadata after plugin content configuration, which can replace native message metadata. Preserve the existing JSON message APIs and add ordering, terminal-content, callback success/failure and disposal tests.

Add an opt-in native Avro 0.1.3 synchronous capability check. With FFI 0.4.27, its unlabelled single-record configuration creates an empty sync request and no responses. Document the need for plugin request/response parts and a separate transport-free sync consumer matching API rather than presenting the transport-based gRPC builder as Avro sync support.

Validation: 109 affected plugin/message/HTTP builder tests passed with the capability check enabled. External Avro async consumer/provider and mismatch checks passed with binary records and metadata. HTTP and gRPC regressions remained green.
Upgrade the Avro async branch native package bootstrap from pact-ffi 0.4.27 to released 0.5.10. The extension's Avro provider verification returned HTTP 200 but plugin content comparison failed with a transport error on Windows under 0.4.27. Repacking the same PactNet source against 0.5.10 makes all five Avro sample tests pass locally, including provider matching and the expected provider mismatch.

All five supported runtime libraries download with published SHA-256 verification. Other legacy PactNet fixture tests may need fixture metadata updates before the general branch suite runs against 0.5.10; this branch change is the Avro async bootstrap prerequisite.
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.

3 participants