You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2022/08/04 11:48:04 UTC

[camel] 03/03: CAMEL-18347: fix Kafka services in test infra not being singleton

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 <an...@gmail.com>
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);
     }