Skip to content

[A2A] D2b: Testcontainers E2E for A2A gateway (issue #5340 follow-up) #5347

Description

@qqeasonchen

Part of #5296 (Architecture Review, Q4). Follow-up to #5340 / PR #5346 (D2a).

What this issue tracks

D2a (PR #5346) landed the in-process A2A readiness checks:

  • TaskExpirer reaper + unit test
  • MetaAgentCardRegistry (cluster-shared) + unit test
  • A2AGatewayService.createTask try/catch (future-based failure surfacing) + integration test
  • docs/a2a-readiness-decision.md (keep A2A Experimental)

D2a pin the contract at the user-facing API. D2b is the Testcontainers-based end-to-end suite that exercises the same scenarios against a live Meta + broker + multi-instance EM deployment. D2b is the gate for promoting A2A from Experimental to Beta (per docs/a2a-readiness-decision.md).

What needs to land

  1. **A new module ** under the runtime test sources, gated on a Testcontainers profile (so the default test task stays fast and green).
  2. Container composition:
    • Nacos 2.x for the MetaStore (NacosMetaStore is the production wiring)
    • One RocketMQ 5.x broker (or Kafka, depending on what the suite wants to exercise)
    • 3 EventMesh Runtime instances sharing the Nacos Meta
  3. Test scenarios (mirror D2a's in-process tests, but end-to-end):
    • Happy path: A2A client on EM-1 submits a task to agent-A registered on EM-2; agent-A completes the task; client receives the response.
    • Failure mode: kill the Nacos container mid-task-submit; the A2A gateway surfaces the failure to the client within a bounded timeout (not hung, not silently dropped).
    • Recovery: restart Nacos; subsequent submits succeed.
    • Multi-instance fence: two EM instances both believe they own agent-A; the Meta CAS + epoch fencing rejects the stale writer.
  4. CI: a separate workflow that runs the suite on PRs that touch or . The suite must be green for at least one full release cycle before A2A can be promoted to Beta.

Acceptance

  • module exists and is built by Gradle.
  • The four scenarios above pass in CI.
  • workflow exists and is wired to the correct path filters.
  • docs/a2a-protocol/README.md is updated with the post-D2b wire contract and SLOs.
  • docs/a2a-readiness-decision.md is updated to record that A2A is promoted from Experimental to Beta.

Depends on / Blocks

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    discussionThis issue requires further discussionimprovementImprove the mechanism or performance

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions