From 00afbf0441d2650edae3f828a0718b2d3d3d0a29 Mon Sep 17 00:00:00 2001 From: Kabir Khan Date: Mon, 1 Jun 2026 16:27:52 +0200 Subject: [PATCH 1/4] chore: Rerun flaky tests on CI if they failed Use the @Tag("flaky") annotation to mark flaky tests --- .github/workflows/build-and-test.yml | 2 +- examples/cloud-deployment/server/pom.xml | 10 +++++ pom.xml | 38 +++++++++++++++++++ .../apps/common/AbstractA2AServerTest.java | 4 ++ 4 files changed, 53 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 8854ad9eb..3a8fc1a6e 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -30,7 +30,7 @@ jobs: distribution: 'temurin' cache: maven - name: Build with Maven and run tests - run: mvn -B package --file pom.xml -fae ${{ matrix.os == 'windows-latest' && '-DskipDockerTests=true' || '' }} + run: mvn -B install --file pom.xml -fae ${{ matrix.os == 'windows-latest' && '-DskipDockerTests=true' || '' }} - name: Upload Test Reports if: failure() uses: actions/upload-artifact@v7 diff --git a/examples/cloud-deployment/server/pom.xml b/examples/cloud-deployment/server/pom.xml index b584e70da..2ff4a2fba 100644 --- a/examples/cloud-deployment/server/pom.xml +++ b/examples/cloud-deployment/server/pom.xml @@ -83,6 +83,16 @@ a2a-java-sdk-client test + + + org.junit.jupiter + junit-jupiter-api + test + diff --git a/pom.xml b/pom.xml index 214264a17..56cadf4e2 100644 --- a/pom.xml +++ b/pom.xml @@ -662,6 +662,44 @@ + + flaky-test-retry + + + + src/test/java + + + + + + maven-surefire-plugin + + + default-test + + flaky + + + + flaky-tests + + test + + + flaky + 3 + + + + + + + diff --git a/tests/server-common/src/test/java/org/a2aproject/sdk/server/apps/common/AbstractA2AServerTest.java b/tests/server-common/src/test/java/org/a2aproject/sdk/server/apps/common/AbstractA2AServerTest.java index c5ab7de4b..fa69f0624 100644 --- a/tests/server-common/src/test/java/org/a2aproject/sdk/server/apps/common/AbstractA2AServerTest.java +++ b/tests/server-common/src/test/java/org/a2aproject/sdk/server/apps/common/AbstractA2AServerTest.java @@ -88,6 +88,7 @@ import org.a2aproject.sdk.spec.UnsupportedOperationError; import org.a2aproject.sdk.spec.UpdateEvent; import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Timeout; @@ -782,6 +783,7 @@ public void testSendMessageStreamExistingTaskSuccess() throws Exception { } @Test + @Tag("flaky") @Timeout(value = 3, unit = TimeUnit.MINUTES) public void testSubscribeExistingTaskSuccess() throws Exception { saveTaskInTaskStore(MINIMAL_TASK); @@ -1711,6 +1713,7 @@ public void testDeletePushNotificationConfigSetWithoutConfigId() throws Exceptio } @Test + @Tag("flaky") @Timeout(value = 1, unit = TimeUnit.MINUTES) public void testNonBlockingWithMultipleMessages() throws Exception { AtomicReference generatedTaskIdRef = new AtomicReference<>(); @@ -3076,6 +3079,7 @@ public void testAgentToAgentDelegation() throws Exception { * */ @Test + @Tag("flaky") public void testAgentToAgentLocalHandling() throws Exception { // No taskId - server generates one; routing is by message content prefix "a2a-local:" Message localMessage = Message.builder() From 4e861f9feca4a9562424ce1687c6951c1438c025 Mon Sep 17 00:00:00 2001 From: Kabir Khan Date: Mon, 1 Jun 2026 18:06:07 +0200 Subject: [PATCH 2/4] Fix typo --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 56cadf4e2..e48d21b05 100644 --- a/pom.xml +++ b/pom.xml @@ -668,7 +668,7 @@ src/test/java From 4a691286f1e8f156d68e2aef19032c8f705291b6 Mon Sep 17 00:00:00 2001 From: Kabir Khan Date: Mon, 1 Jun 2026 18:12:00 +0200 Subject: [PATCH 3/4] Change activation of profile to be explicit, so we don't need the junit-jupiter-api dependency where not needed --- examples/cloud-deployment/server/pom.xml | 10 ---------- pom.xml | 12 ++++++------ reference/grpc/pom.xml | 5 +++++ reference/jsonrpc/pom.xml | 5 +++++ reference/rest/pom.xml | 5 +++++ tests/multiversion/grpc/pom.xml | 5 +++++ tests/multiversion/jsonrpc/pom.xml | 5 +++++ tests/multiversion/rest/pom.xml | 5 +++++ 8 files changed, 36 insertions(+), 16 deletions(-) diff --git a/examples/cloud-deployment/server/pom.xml b/examples/cloud-deployment/server/pom.xml index 2ff4a2fba..b584e70da 100644 --- a/examples/cloud-deployment/server/pom.xml +++ b/examples/cloud-deployment/server/pom.xml @@ -83,16 +83,6 @@ a2a-java-sdk-client test - - - org.junit.jupiter - junit-jupiter-api - test - diff --git a/pom.xml b/pom.xml index e48d21b05..73a056f05 100644 --- a/pom.xml +++ b/pom.xml @@ -665,14 +665,14 @@ flaky-test-retry - + - src/test/java - + contains.flaky.tests + true + diff --git a/reference/grpc/pom.xml b/reference/grpc/pom.xml index 2d479b555..65b7fe0e3 100644 --- a/reference/grpc/pom.xml +++ b/reference/grpc/pom.xml @@ -14,6 +14,11 @@ Java A2A Reference Server: gRPC Java SDK for the Agent2Agent Protocol (A2A) - A2A gRPC Reference Server (based on Quarkus) + + + true + + ${project.groupId} diff --git a/reference/jsonrpc/pom.xml b/reference/jsonrpc/pom.xml index 3a5abc472..1dbf3afb3 100644 --- a/reference/jsonrpc/pom.xml +++ b/reference/jsonrpc/pom.xml @@ -17,6 +17,11 @@ Java A2A Reference Server: JSONRPC Java SDK for the Agent2Agent Protocol (A2A) - A2A JSONRPC Reference Server (based on Quarkus) + + + true + + ${project.groupId} diff --git a/reference/rest/pom.xml b/reference/rest/pom.xml index 4673d3f12..0bc4adff8 100644 --- a/reference/rest/pom.xml +++ b/reference/rest/pom.xml @@ -17,6 +17,11 @@ Java A2A Reference Server: JSON+HTTP/REST Java SDK for the Agent2Agent Protocol (A2A) - A2A JSON+HTTP/REST Reference Server (based on Quarkus) + + + true + + ${project.groupId} diff --git a/tests/multiversion/grpc/pom.xml b/tests/multiversion/grpc/pom.xml index b3ae01059..ce7018fee 100644 --- a/tests/multiversion/grpc/pom.xml +++ b/tests/multiversion/grpc/pom.xml @@ -17,6 +17,11 @@ Java A2A SDK Tests Multi-Version gRPC Tests for multi-version v1.0/v0.3 gRPC deployment + + + true + + diff --git a/tests/multiversion/jsonrpc/pom.xml b/tests/multiversion/jsonrpc/pom.xml index d440be044..30f115588 100644 --- a/tests/multiversion/jsonrpc/pom.xml +++ b/tests/multiversion/jsonrpc/pom.xml @@ -17,6 +17,11 @@ Java A2A SDK Tests Multi-Version JSON-RPC Tests for multi-version v1.0/v0.3 JSON-RPC deployment + + + true + + diff --git a/tests/multiversion/rest/pom.xml b/tests/multiversion/rest/pom.xml index 2f8b0ee24..4c5424d9a 100644 --- a/tests/multiversion/rest/pom.xml +++ b/tests/multiversion/rest/pom.xml @@ -17,6 +17,11 @@ Java A2A SDK Tests Multi-Version REST Tests for multi-version v1.0/v0.3 REST deployment + + + true + + From 53ed9b2d56e3ada5e01f1d1d07ee65cfbf46d901 Mon Sep 17 00:00:00 2001 From: Kabir Khan Date: Mon, 1 Jun 2026 21:08:24 +0200 Subject: [PATCH 4/4] Use a marker file rather than pom properties --- pom.xml | 11 +++++------ reference/grpc/.flaky-tests-marker | 3 +++ reference/grpc/pom.xml | 5 ----- reference/jsonrpc/.flaky-tests-marker | 3 +++ reference/jsonrpc/pom.xml | 5 ----- reference/rest/.flaky-tests-marker | 3 +++ reference/rest/pom.xml | 5 ----- tests/multiversion/grpc/.flaky-tests-marker | 3 +++ tests/multiversion/grpc/pom.xml | 5 ----- tests/multiversion/jsonrpc/.flaky-tests-marker | 3 +++ tests/multiversion/jsonrpc/pom.xml | 5 ----- tests/multiversion/rest/.flaky-tests-marker | 3 +++ tests/multiversion/rest/pom.xml | 5 ----- 13 files changed, 23 insertions(+), 36 deletions(-) create mode 100644 reference/grpc/.flaky-tests-marker create mode 100644 reference/jsonrpc/.flaky-tests-marker create mode 100644 reference/rest/.flaky-tests-marker create mode 100644 tests/multiversion/grpc/.flaky-tests-marker create mode 100644 tests/multiversion/jsonrpc/.flaky-tests-marker create mode 100644 tests/multiversion/rest/.flaky-tests-marker diff --git a/pom.xml b/pom.xml index 73a056f05..59f77ff4c 100644 --- a/pom.xml +++ b/pom.xml @@ -665,14 +665,13 @@ flaky-test-retry - + - contains.flaky.tests - true - + .flaky-tests-marker + diff --git a/reference/grpc/.flaky-tests-marker b/reference/grpc/.flaky-tests-marker new file mode 100644 index 000000000..ade08c042 --- /dev/null +++ b/reference/grpc/.flaky-tests-marker @@ -0,0 +1,3 @@ +This marker file activates the "flaky-test-retry" profile defined in the root pom.xml. +When present, tests annotated with @Tag("flaky") are excluded from the default surefire +execution and run in a separate execution with up to 3 retries on failure. diff --git a/reference/grpc/pom.xml b/reference/grpc/pom.xml index 65b7fe0e3..2d479b555 100644 --- a/reference/grpc/pom.xml +++ b/reference/grpc/pom.xml @@ -14,11 +14,6 @@ Java A2A Reference Server: gRPC Java SDK for the Agent2Agent Protocol (A2A) - A2A gRPC Reference Server (based on Quarkus) - - - true - - ${project.groupId} diff --git a/reference/jsonrpc/.flaky-tests-marker b/reference/jsonrpc/.flaky-tests-marker new file mode 100644 index 000000000..ade08c042 --- /dev/null +++ b/reference/jsonrpc/.flaky-tests-marker @@ -0,0 +1,3 @@ +This marker file activates the "flaky-test-retry" profile defined in the root pom.xml. +When present, tests annotated with @Tag("flaky") are excluded from the default surefire +execution and run in a separate execution with up to 3 retries on failure. diff --git a/reference/jsonrpc/pom.xml b/reference/jsonrpc/pom.xml index 1dbf3afb3..3a5abc472 100644 --- a/reference/jsonrpc/pom.xml +++ b/reference/jsonrpc/pom.xml @@ -17,11 +17,6 @@ Java A2A Reference Server: JSONRPC Java SDK for the Agent2Agent Protocol (A2A) - A2A JSONRPC Reference Server (based on Quarkus) - - - true - - ${project.groupId} diff --git a/reference/rest/.flaky-tests-marker b/reference/rest/.flaky-tests-marker new file mode 100644 index 000000000..ade08c042 --- /dev/null +++ b/reference/rest/.flaky-tests-marker @@ -0,0 +1,3 @@ +This marker file activates the "flaky-test-retry" profile defined in the root pom.xml. +When present, tests annotated with @Tag("flaky") are excluded from the default surefire +execution and run in a separate execution with up to 3 retries on failure. diff --git a/reference/rest/pom.xml b/reference/rest/pom.xml index 0bc4adff8..4673d3f12 100644 --- a/reference/rest/pom.xml +++ b/reference/rest/pom.xml @@ -17,11 +17,6 @@ Java A2A Reference Server: JSON+HTTP/REST Java SDK for the Agent2Agent Protocol (A2A) - A2A JSON+HTTP/REST Reference Server (based on Quarkus) - - - true - - ${project.groupId} diff --git a/tests/multiversion/grpc/.flaky-tests-marker b/tests/multiversion/grpc/.flaky-tests-marker new file mode 100644 index 000000000..ade08c042 --- /dev/null +++ b/tests/multiversion/grpc/.flaky-tests-marker @@ -0,0 +1,3 @@ +This marker file activates the "flaky-test-retry" profile defined in the root pom.xml. +When present, tests annotated with @Tag("flaky") are excluded from the default surefire +execution and run in a separate execution with up to 3 retries on failure. diff --git a/tests/multiversion/grpc/pom.xml b/tests/multiversion/grpc/pom.xml index ce7018fee..b3ae01059 100644 --- a/tests/multiversion/grpc/pom.xml +++ b/tests/multiversion/grpc/pom.xml @@ -17,11 +17,6 @@ Java A2A SDK Tests Multi-Version gRPC Tests for multi-version v1.0/v0.3 gRPC deployment - - - true - - diff --git a/tests/multiversion/jsonrpc/.flaky-tests-marker b/tests/multiversion/jsonrpc/.flaky-tests-marker new file mode 100644 index 000000000..ade08c042 --- /dev/null +++ b/tests/multiversion/jsonrpc/.flaky-tests-marker @@ -0,0 +1,3 @@ +This marker file activates the "flaky-test-retry" profile defined in the root pom.xml. +When present, tests annotated with @Tag("flaky") are excluded from the default surefire +execution and run in a separate execution with up to 3 retries on failure. diff --git a/tests/multiversion/jsonrpc/pom.xml b/tests/multiversion/jsonrpc/pom.xml index 30f115588..d440be044 100644 --- a/tests/multiversion/jsonrpc/pom.xml +++ b/tests/multiversion/jsonrpc/pom.xml @@ -17,11 +17,6 @@ Java A2A SDK Tests Multi-Version JSON-RPC Tests for multi-version v1.0/v0.3 JSON-RPC deployment - - - true - - diff --git a/tests/multiversion/rest/.flaky-tests-marker b/tests/multiversion/rest/.flaky-tests-marker new file mode 100644 index 000000000..ade08c042 --- /dev/null +++ b/tests/multiversion/rest/.flaky-tests-marker @@ -0,0 +1,3 @@ +This marker file activates the "flaky-test-retry" profile defined in the root pom.xml. +When present, tests annotated with @Tag("flaky") are excluded from the default surefire +execution and run in a separate execution with up to 3 retries on failure. diff --git a/tests/multiversion/rest/pom.xml b/tests/multiversion/rest/pom.xml index 4c5424d9a..2f8b0ee24 100644 --- a/tests/multiversion/rest/pom.xml +++ b/tests/multiversion/rest/pom.xml @@ -17,11 +17,6 @@ Java A2A SDK Tests Multi-Version REST Tests for multi-version v1.0/v0.3 REST deployment - - - true - -