@@ -40,8 +40,53 @@ permissions:
4040 contents : read
4141
4242jobs :
43+ discover-tests :
44+ name : Discover E2E test classes
45+ runs-on : ubuntu-latest
46+ outputs :
47+ e2e-classes : ${{ steps.parse.outputs.e2e-classes }}
48+ e2e-graal-classes : ${{ steps.parse.outputs.e2e-graal-classes }}
49+ steps :
50+ - uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
51+ - name : Parse test classes from POM profiles
52+ id : parse
53+ run : |
54+ TEST_DIR="powertools-e2e-tests/src/test/java"
55+ POM="powertools-e2e-tests/pom.xml"
56+
57+ # e2e profile uses **/*E2ET.java — find all matching test files
58+ E2E_CLASSES=$(find "$TEST_DIR" -name '*E2ET.java' | xargs -n1 basename | sed 's/\.java$//' | sort | jq -R . | jq -s .)
59+
60+ # Extract include patterns from e2e-graal profile, then match against test files
61+ GRAAL_CLASSES=$(
62+ awk '/<id>e2e-graal<\/id>/,/<\/profile>/' "$POM" \
63+ | grep '<include>' \
64+ | sed 's/.*<include>\(.*\)<\/include>.*/\1/' \
65+ | while read -r pattern; do
66+ filename="${pattern##*/}"
67+ find "$TEST_DIR" -name "$filename" | xargs -n1 basename | sed 's/\.java$//'
68+ done \
69+ | sort | jq -R . | jq -s .
70+ )
71+
72+ echo "e2e test classes: $E2E_CLASSES"
73+ echo "e2e-graal test classes: $GRAAL_CLASSES"
74+
75+ if [ "$E2E_CLASSES" = "[]" ] || [ -z "$E2E_CLASSES" ]; then
76+ echo "::error::No e2e test classes found — check POM includes and test directory"
77+ exit 1
78+ fi
79+ if [ "$GRAAL_CLASSES" = "[]" ] || [ -z "$GRAAL_CLASSES" ]; then
80+ echo "::error::No e2e-graal test classes found — check POM includes and test directory"
81+ exit 1
82+ fi
83+
84+ echo "e2e-classes=$E2E_CLASSES" >> "$GITHUB_OUTPUT"
85+ echo "e2e-graal-classes=$GRAAL_CLASSES" >> "$GITHUB_OUTPUT"
86+
4387 e2e :
4488 name : E2E ${{ matrix.test-class }} (Java ${{ matrix.java }})
89+ needs : discover-tests
4590 runs-on : ubuntu-latest
4691 permissions :
4792 id-token : write
@@ -55,17 +100,7 @@ jobs:
55100 - 17
56101 - 21
57102 - 25
58- test-class :
59- - BatchE2ET
60- - IdempotencyE2ET
61- - LargeMessageE2ET
62- - LargeMessageIdempotentE2ET
63- - LoggingE2ET
64- - MetricsE2ET
65- - ParametersE2ET
66- - TracingE2ET
67- - ValidationALBE2ET
68- - ValidationApiGWE2ET
103+ test-class : ${{ fromJSON(needs.discover-tests.outputs.e2e-classes) }}
69104
70105 steps :
71106 - uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
92127
93128 e2e-graal :
94129 name : E2E GraalVM ${{ matrix.test-class }} (Java ${{ matrix.java }})
130+ needs : discover-tests
95131 runs-on : ubuntu-latest
96132 permissions :
97133 id-token : write
@@ -102,12 +138,7 @@ jobs:
102138 matrix :
103139 java :
104140 - 25
105- test-class :
106- - MetricsE2ET
107- - LoggingE2ET
108- - ParametersE2ET
109- - TracingE2ET
110- - IdempotencyE2ET
141+ test-class : ${{ fromJSON(needs.discover-tests.outputs.e2e-graal-classes) }}
111142
112143 steps :
113144 - uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
0 commit comments