This is an automated email from the ASF dual-hosted git repository. apupier pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
commit c0fb4815cbbe77b094eb077c9566f4eb734191ac Author: Aurélien Pupier <[email protected]> AuthorDate: Thu Oct 8 11:46:25 2026 +0200 CAMEL-25342 - Fix NATS IT topic collisions under parallel test execution When maven-failsafe runs tests concurrently (camel.failsafe.parallel=true), multiple test classes sharing the same topic name on the same NATS server would receive each other's messages, causing spurious failures. Rename the generic 'test' topic in every consumer integration test to a unique, class-specific name so no two tests compete for the same subscription: NatsConsumerIT -> consumer NatsConsumerLoadIT -> consumer-load NatsConsumerWithRedeliveryIT -> consumer-redelivery NatsConsumerMaxMessagesIT -> consumer-maxmessages NatsConsumerMaxMessagesQueueIT -> consumer-maxmessages-queue (queue group renamed too) NatsConsumerHeadersSupportIT -> consumer-headers (subject in published NatsMessage updated too) NatsConsumerWithConnectionLoadIT -> consumer-connection-load / consumer-connection-load1 NatsConsumerReplyToIT -> consumer-replyto / consumer-replyto-reply (NATS_SUBJECT header assertions updated accordingly) Tests that use 'test' and are already collision-free are left unchanged: NatsAuth*IT / NatsAuthToken*IT run against dedicated Docker containers NatsProducerIT and its auth variants publish only, no subscriber route Co-authored-by: IBM Bob 2.2.1 Signed-off-by: Aurélien Pupier <[email protected]> --- .../nats/integration/NatsConsumerHeadersSupportIT.java | 4 ++-- .../camel/component/nats/integration/NatsConsumerIT.java | 6 +++--- .../camel/component/nats/integration/NatsConsumerLoadIT.java | 4 ++-- .../component/nats/integration/NatsConsumerMaxMessagesIT.java | 4 ++-- .../nats/integration/NatsConsumerMaxMessagesQueueIT.java | 8 +++++--- .../component/nats/integration/NatsConsumerReplyToIT.java | 10 +++++----- .../nats/integration/NatsConsumerWithConnectionLoadIT.java | 6 +++--- .../nats/integration/NatsConsumerWithRedeliveryIT.java | 4 ++-- 8 files changed, 24 insertions(+), 22 deletions(-) diff --git a/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerHeadersSupportIT.java b/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerHeadersSupportIT.java index 25b1f85155e4..0e6fa350e5d0 100644 --- a/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerHeadersSupportIT.java +++ b/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerHeadersSupportIT.java @@ -65,7 +65,7 @@ class NatsConsumerHeadersSupportIT extends NatsITSupport { final NatsMessage message = NatsMessage.builder() .data("Hello World".getBytes()) - .subject("test") + .subject("consumer-headers") .headers(headers) .build(); @@ -80,7 +80,7 @@ class NatsConsumerHeadersSupportIT extends NatsITSupport { return new RouteBuilder() { @Override public void configure() { - this.from("nats:test").to(NatsConsumerHeadersSupportIT.this.mockResultEndpoint); + this.from("nats:consumer-headers").to(NatsConsumerHeadersSupportIT.this.mockResultEndpoint); } }; } diff --git a/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerIT.java b/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerIT.java index 2c53f6f39541..2466fad69c7a 100644 --- a/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerIT.java +++ b/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerIT.java @@ -30,7 +30,7 @@ public class NatsConsumerIT extends NatsITSupport { @Test public void testConsumer() throws Exception { mockResultEndpoint.expectedBodiesReceived("Hello World"); - mockResultEndpoint.expectedHeaderReceived(NatsConstants.NATS_SUBJECT, "test"); + mockResultEndpoint.expectedHeaderReceived(NatsConstants.NATS_SUBJECT, "consumer"); waitForNatsConsumers(1); @@ -44,9 +44,9 @@ public class NatsConsumerIT extends NatsITSupport { return new RouteBuilder() { @Override public void configure() { - from("direct:send").to("nats:test?flushConnection=true"); + from("direct:send").to("nats:consumer?flushConnection=true"); - from("nats:test?flushConnection=true").to(mockResultEndpoint); + from("nats:consumer?flushConnection=true").to(mockResultEndpoint); } }; } diff --git a/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerLoadIT.java b/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerLoadIT.java index e6006828a541..5fdcd5b30969 100644 --- a/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerLoadIT.java +++ b/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerLoadIT.java @@ -38,7 +38,7 @@ public class NatsConsumerLoadIT extends NatsITSupport { waitForNatsConsumers(1); for (int i = 0; i < 10000; i++) { - connection.publish("test", ("test" + i).getBytes()); + connection.publish("consumer-load", ("test" + i).getBytes()); } mockResultEndpoint.assertIsSatisfied(); @@ -49,7 +49,7 @@ public class NatsConsumerLoadIT extends NatsITSupport { return new RouteBuilder() { @Override public void configure() { - from("nats:test").to(mockResultEndpoint); + from("nats:consumer-load").to(mockResultEndpoint); } }; } diff --git a/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerMaxMessagesIT.java b/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerMaxMessagesIT.java index 145988ccb883..29c0e2086aab 100644 --- a/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerMaxMessagesIT.java +++ b/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerMaxMessagesIT.java @@ -53,9 +53,9 @@ public class NatsConsumerMaxMessagesIT extends NatsITSupport { return new RouteBuilder() { @Override public void configure() { - from("direct:send").to("nats:test"); + from("direct:send").to("nats:consumer-maxmessages"); - from("nats:test?maxMessages=5").to(mockResultEndpoint); + from("nats:consumer-maxmessages?maxMessages=5").to(mockResultEndpoint); } }; } diff --git a/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerMaxMessagesQueueIT.java b/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerMaxMessagesQueueIT.java index 54fc2b581a5d..ae605e2ad3d6 100644 --- a/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerMaxMessagesQueueIT.java +++ b/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerMaxMessagesQueueIT.java @@ -43,11 +43,13 @@ public class NatsConsumerMaxMessagesQueueIT extends NatsITSupport { return new RouteBuilder() { @Override public void configure() { - from("direct:send").to("nats:test"); + from("direct:send").to("nats:consumer-maxmessages-queue"); - from("nats:test?maxMessages=5&queueName=test").routeId("cons1").to(mockResultEndpoint); + from("nats:consumer-maxmessages-queue?maxMessages=5&queueName=consumer-maxmessages-queue").routeId("cons1") + .to(mockResultEndpoint); - from("nats:test?maxMessages=6&queueName=test").routeId("cons2").to(mockResultEndpoint); + from("nats:consumer-maxmessages-queue?maxMessages=6&queueName=consumer-maxmessages-queue").routeId("cons2") + .to(mockResultEndpoint); } }; } diff --git a/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerReplyToIT.java b/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerReplyToIT.java index f1ae931dde13..2fc51d01d06f 100644 --- a/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerReplyToIT.java +++ b/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerReplyToIT.java @@ -33,9 +33,9 @@ public class NatsConsumerReplyToIT extends NatsITSupport { @Test public void testReplyTo() throws Exception { mockResultEndpoint.expectedBodiesReceived("World"); - mockResultEndpoint.expectedHeaderReceived(NatsConstants.NATS_SUBJECT, "test"); + mockResultEndpoint.expectedHeaderReceived(NatsConstants.NATS_SUBJECT, "consumer-replyto"); mockReplyEndpoint.expectedBodiesReceived("Bye World"); - mockReplyEndpoint.expectedHeaderReceived(NatsConstants.NATS_SUBJECT, "myReplyQueue"); + mockReplyEndpoint.expectedHeaderReceived(NatsConstants.NATS_SUBJECT, "consumer-replyto-reply"); waitForNatsConsumers(2); @@ -53,14 +53,14 @@ public class NatsConsumerReplyToIT extends NatsITSupport { @Override public void configure() { from("direct:send") - .to("nats:test?replySubject=myReplyQueue&flushConnection=true"); + .to("nats:consumer-replyto?replySubject=consumer-replyto-reply&flushConnection=true"); - from("nats:test?flushConnection=true&exchangePattern=InOut") + from("nats:consumer-replyto?flushConnection=true&exchangePattern=InOut") .to(mockResultEndpoint) .convertBodyTo(String.class) .setBody().simple("Bye ${body}"); - from("nats:myReplyQueue") + from("nats:consumer-replyto-reply") .to("mock:reply"); } }; diff --git a/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerWithConnectionLoadIT.java b/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerWithConnectionLoadIT.java index c2e480d01458..19fe91307ee1 100644 --- a/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerWithConnectionLoadIT.java +++ b/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerWithConnectionLoadIT.java @@ -54,7 +54,7 @@ public class NatsConsumerWithConnectionLoadIT extends NatsITSupport { waitForNatsConsumers(1); for (int i = 0; i < 100; i++) { - connection.publish("test", ("test" + i).getBytes()); + connection.publish("consumer-connection-load", ("test" + i).getBytes()); } mockResultEndpoint.assertIsSatisfied(); @@ -66,8 +66,8 @@ public class NatsConsumerWithConnectionLoadIT extends NatsITSupport { return new RouteBuilder() { @Override public void configure() { - from("nats:test?connection=#connection").to(mockResultEndpoint); - from("nats:test1?connection=#connection").to(mockResultEndpoint1); + from("nats:consumer-connection-load?connection=#connection").to(mockResultEndpoint); + from("nats:consumer-connection-load1?connection=#connection").to(mockResultEndpoint1); } }; } diff --git a/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerWithRedeliveryIT.java b/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerWithRedeliveryIT.java index ed68bf26b321..7ba281bbde5b 100644 --- a/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerWithRedeliveryIT.java +++ b/components/camel-nats/src/test/java/org/apache/camel/component/nats/integration/NatsConsumerWithRedeliveryIT.java @@ -57,9 +57,9 @@ public class NatsConsumerWithRedeliveryIT extends NatsITSupport { .retriesExhaustedLogLevel(LoggingLevel.ERROR) .redeliveryDelay(10).to("mock:exception").handled(true); - from("direct:send").to("nats:test?flushConnection=true"); + from("direct:send").to("nats:consumer-redelivery?flushConnection=true"); - from("nats:test?flushConnection=true").choice().when(exchange -> { + from("nats:consumer-redelivery?flushConnection=true").choice().when(exchange -> { String s = exchange.getMessage().getBody(String.class); if (s.contains("test")) { return true;
