This is an automated email from the ASF dual-hosted git repository. orpiske pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
commit 7b6319ae749f0a3c2f5e38c358e2c9a3c11acfc3 Author: Otavio Rodolfo Piske <[email protected]> AuthorDate: Thu Aug 4 11:22:56 2022 +0200 CAMEL-18347: fix Kafka services in test infra not being singleton --- .../infra/kafka/services/KafkaServiceFactory.java | 34 +++++++++++++++------- .../test/infra/kafka/services/StrimziService.java | 8 +++-- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/KafkaServiceFactory.java b/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/KafkaServiceFactory.java index ae150286a39..ceb5c6d42f9 100644 --- a/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/KafkaServiceFactory.java +++ b/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/KafkaServiceFactory.java @@ -43,6 +43,9 @@ public final class KafkaServiceFactory { } } + private static SimpleTestServiceBuilder<KafkaService> instance; + private static KafkaService kafkaService; + private KafkaServiceFactory() { } @@ -52,22 +55,33 @@ public final class KafkaServiceFactory { } public static KafkaService createService() { - return builder() - .addLocalMapping(ContainerLocalKafkaService::new) + SimpleTestServiceBuilder<KafkaService> builder = new SimpleTestServiceBuilder<>("kafka"); + + return builder.addLocalMapping(ContainerLocalKafkaService::new) .addMapping("local-strimzi-container", StrimziService::new) .addRemoteMapping(RemoteKafkaService::new) .addMapping("local-kafka3-container", ContainerLocalKafkaService::kafka3Container) .build(); } - public static KafkaService createSingletonService() { - return builder() - .addLocalMapping(() -> new SingletonKafkaService(new ContainerLocalKafkaService(), "kafka")) - .addRemoteMapping(RemoteKafkaService::new) - .addMapping("local-kafka3-container", - () -> new SingletonKafkaService(ContainerLocalKafkaService.kafka3Container(), "kafka3")) - .addMapping("local-strimzi-container", () -> new SingletonKafkaService(new StrimziService(), "strimzi")) - .build(); + public static synchronized KafkaService createSingletonService() { + if (kafkaService == null) { + if (instance == null) { + instance = builder(); + + instance.addLocalMapping(() -> new SingletonKafkaService(new ContainerLocalKafkaService(), "kafka")) + .addRemoteMapping(RemoteKafkaService::new) + .addMapping("local-kafka3-container", + () -> new SingletonKafkaService(ContainerLocalKafkaService.kafka3Container(), "kafka3")) + .addMapping("local-strimzi-container", + () -> new SingletonKafkaService(new StrimziService(), "strimzi")); + + } + + kafkaService = instance.build(); + } + + return kafkaService; } } diff --git a/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/StrimziService.java b/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/StrimziService.java index 2ce288e01a1..dae2076e82d 100644 --- a/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/StrimziService.java +++ b/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/StrimziService.java @@ -31,12 +31,14 @@ public class StrimziService implements KafkaService, ContainerService<StrimziCon private final StrimziContainer strimziContainer; public StrimziService() { + this("zookeeper-" + TestUtils.randomWithRange(1, 100), + "strimzi-" + TestUtils.randomWithRange(1, 100)); + } + + public StrimziService(String zookeeperInstanceName, String strimziInstanceName) { Network network = Network.newNetwork(); - String zookeeperInstanceName = "zookeeper-" + TestUtils.randomWithRange(1, 100); zookeeperContainer = initZookeeperContainer(network, zookeeperInstanceName); - - String strimziInstanceName = "strimzi-" + TestUtils.randomWithRange(1, 100); strimziContainer = initStrimziContainer(network, strimziInstanceName, zookeeperInstanceName); }
