Skip to content

Commit 2b7b8e8

Browse files
committed
Run NATS tests in GitHub Actions
Adds @tag("nats") meta-annotations (@NatsIntegrationTest and @NatsUnitTest) in rqueue-nats and applies them to the JetStream test files; tags RqueueNatsAutoConfigTest, RqueueNatsListenerConfigTest, and NatsBackendEndToEndIT directly. NatsUnitTest deliberately omits the MockitoExtension because the existing tests use Mockito.mock() directly and adding the extension would activate strict-stubbing. Adds a nats_integration_test job to java-ci.yaml that runs :rqueue-nats:test :rqueue-spring-boot-starter:test :rqueue-spring:test with -DincludeTags=nats. Docker is preinstalled on ubuntu-latest, so Testcontainers picks it up automatically and the JetStream ITs run against nats:2.10-alpine -js. Coverage from this job is fed into the existing coverage_report job. Local verification: the same gradle invocation reports 13 tests run, 9 skipped (Docker-gated ITs without local Docker), 0 failures. Assisted-By: Claude Code
1 parent dd1cd8c commit 2b7b8e8

16 files changed

Lines changed: 131 additions & 0 deletions

.github/workflows/java-ci.yaml

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,13 +336,63 @@ jobs:
336336
rqueue-core/build/reports/junit/xml
337337
if-no-files-found: ignore
338338

339+
nats_integration_test:
340+
needs: build
341+
runs-on: ubuntu-latest
342+
steps:
343+
- name: Checkout
344+
uses: actions/checkout@v4
345+
346+
- name: Set up Java 21
347+
uses: actions/setup-java@v4
348+
with:
349+
distribution: temurin
350+
java-version: "21"
351+
cache: gradle
352+
353+
- name: Expose Java 21 to Gradle toolchains
354+
run: |
355+
echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
356+
echo "ORG_GRADLE_JAVA_INSTALLATIONS_PATHS=$JAVA_HOME" >> "$GITHUB_ENV"
357+
java -version
358+
javac -version
359+
360+
- name: Set up Gradle
361+
uses: gradle/actions/setup-gradle@v4
362+
363+
# Docker is preinstalled on ubuntu-latest runners; Testcontainers picks it up
364+
# automatically. No Redis is needed for this job — every test under @Tag("nats")
365+
# talks to a JetStream container via Testcontainers (or runs as a pure unit test).
366+
- name: Run NATS tests
367+
run: ./gradlew :rqueue-nats:test :rqueue-spring-boot-starter:test :rqueue-spring:test -DincludeTags=nats
368+
369+
- name: Upload JaCoCo exec data
370+
if: always()
371+
uses: actions/upload-artifact@v4
372+
with:
373+
name: coverage-nats
374+
path: "**/build/reports/jacoco/*.exec"
375+
if-no-files-found: error
376+
377+
- name: Upload JUnit reports
378+
if: always()
379+
uses: actions/upload-artifact@v4
380+
with:
381+
name: nats-test-results
382+
path: |
383+
rqueue-nats/build/reports/junit/xml
384+
rqueue-spring-boot-starter/build/reports/junit/xml
385+
rqueue-spring/build/reports/junit/xml
386+
if-no-files-found: ignore
387+
339388
coverage_report:
340389
needs:
341390
- unit_test
342391
- producer_only_test
343392
- integration_test
344393
- redis_cluster_test
345394
- reactive_integration_test
395+
- nats_integration_test
346396
runs-on: ubuntu-latest
347397
steps:
348398
- name: Checkout

rqueue-nats/src/test/java/com/github/sonus21/rqueue/nats/AbstractJetStreamIT.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
* skips these tests automatically.
3030
*/
3131
@Testcontainers(disabledWithoutDocker = true)
32+
@NatsIntegrationTest
3233
abstract class AbstractJetStreamIT {
3334

3435
@Container

rqueue-nats/src/test/java/com/github/sonus21/rqueue/nats/JetStreamMessageBrokerCompetingConsumersIT.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.concurrent.Executors;
2222
import org.junit.jupiter.api.Test;
2323

24+
@NatsIntegrationTest
2425
class JetStreamMessageBrokerCompetingConsumersIT extends AbstractJetStreamIT {
2526

2627
@Test

rqueue-nats/src/test/java/com/github/sonus21/rqueue/nats/JetStreamMessageBrokerDedupIT.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import com.github.sonus21.rqueue.listener.QueueDetail;
1616
import org.junit.jupiter.api.Test;
1717

18+
@NatsIntegrationTest
1819
class JetStreamMessageBrokerDedupIT extends AbstractJetStreamIT {
1920

2021
@Test

rqueue-nats/src/test/java/com/github/sonus21/rqueue/nats/JetStreamMessageBrokerDelayThrowsTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import tools.jackson.databind.ObjectMapper;
2626

2727
/** Unit tests that exercise pure-Java code paths (no docker container needed). */
28+
@NatsUnitTest
2829
class JetStreamMessageBrokerDelayThrowsTest {
2930

3031
private JetStreamMessageBroker newBroker() {

rqueue-nats/src/test/java/com/github/sonus21/rqueue/nats/JetStreamMessageBrokerEnqueueAckIT.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.List;
2020
import org.junit.jupiter.api.Test;
2121

22+
@NatsIntegrationTest
2223
class JetStreamMessageBrokerEnqueueAckIT extends AbstractJetStreamIT {
2324

2425
@Test

rqueue-nats/src/test/java/com/github/sonus21/rqueue/nats/JetStreamMessageBrokerIndependentConsumersIT.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.Set;
2020
import org.junit.jupiter.api.Test;
2121

22+
@NatsIntegrationTest
2223
class JetStreamMessageBrokerIndependentConsumersIT extends AbstractJetStreamIT {
2324

2425
@Test

rqueue-nats/src/test/java/com/github/sonus21/rqueue/nats/JetStreamMessageBrokerPeekIT.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.util.List;
1818
import org.junit.jupiter.api.Test;
1919

20+
@NatsIntegrationTest
2021
class JetStreamMessageBrokerPeekIT extends AbstractJetStreamIT {
2122

2223
@Test

rqueue-nats/src/test/java/com/github/sonus21/rqueue/nats/JetStreamMessageBrokerPubSubIT.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import java.util.concurrent.TimeUnit;
1717
import org.junit.jupiter.api.Test;
1818

19+
@NatsIntegrationTest
1920
class JetStreamMessageBrokerPubSubIT extends AbstractJetStreamIT {
2021

2122
@Test

rqueue-nats/src/test/java/com/github/sonus21/rqueue/nats/JetStreamMessageBrokerReactiveEnqueueIT.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import reactor.core.publisher.Mono;
1919
import reactor.test.StepVerifier;
2020

21+
@NatsIntegrationTest
2122
class JetStreamMessageBrokerReactiveEnqueueIT extends AbstractJetStreamIT {
2223

2324
@Test

0 commit comments

Comments
 (0)