This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch camel-3.18.x
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/camel-3.18.x by this push:
     new a97bfba6837 Backport CAMEL-18347 (#8118)
a97bfba6837 is described below

commit a97bfba68370d499888a2503c7900b5997a4464e
Author: Otavio Rodolfo Piske <orpi...@users.noreply.github.com>
AuthorDate: Fri Aug 5 12:38:51 2022 +0200

    Backport CAMEL-18347 (#8118)
    
    * CAMEL-18347: fix Kafka services in test infra not being singleton
    
    * CAMEL-18347: fix ArangoDB services in test infra not being singleton
    
    * CAMEL-18347: fix HBase services in test infra not being singleton
    
    * CAMEL-18347: fix MongoDB services in test infra not being singleton
    
    * CAMEL-18347: ArangoDB tests do not work well with singleton services
---
 .../arangodb/integration/BaseArangoDb.java         |  2 +-
 .../arangodb/services/ArangoDBServiceFactory.java  | 21 ++++++++++---
 .../infra/hbase/services/HBaseServiceFactory.java  | 17 +++++++++--
 .../infra/kafka/services/KafkaServiceFactory.java  | 34 +++++++++++++++-------
 .../test/infra/kafka/services/StrimziService.java  |  8 +++--
 .../mongodb/services/MongoDBServiceFactory.java    | 18 +++++++++---
 6 files changed, 75 insertions(+), 25 deletions(-)

diff --git 
a/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/BaseArangoDb.java
 
b/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/BaseArangoDb.java
index f9dec8ef815..01f295469d7 100644
--- 
a/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/BaseArangoDb.java
+++ 
b/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/BaseArangoDb.java
@@ -30,7 +30,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
 
 public class BaseArangoDb extends CamelTestSupport {
     @RegisterExtension
-    public static ArangoDBService service = 
ArangoDBServiceFactory.createSingletonService();
+    public static ArangoDBService service = 
ArangoDBServiceFactory.createService();
 
     protected static final String DATABASE_NAME = "dbTest";
     protected static final String COLLECTION_NAME = "camelTest";
diff --git 
a/test-infra/camel-test-infra-arangodb/src/test/java/org/apache/camel/test/infra/arangodb/services/ArangoDBServiceFactory.java
 
b/test-infra/camel-test-infra-arangodb/src/test/java/org/apache/camel/test/infra/arangodb/services/ArangoDBServiceFactory.java
index 2233912f73a..38fba488ee2 100644
--- 
a/test-infra/camel-test-infra-arangodb/src/test/java/org/apache/camel/test/infra/arangodb/services/ArangoDBServiceFactory.java
+++ 
b/test-infra/camel-test-infra-arangodb/src/test/java/org/apache/camel/test/infra/arangodb/services/ArangoDBServiceFactory.java
@@ -47,6 +47,9 @@ public final class ArangoDBServiceFactory {
         }
     }
 
+    private static SimpleTestServiceBuilder<ArangoDBService> instance;
+    private static ArangoDBService arangoDBService;
+
     private ArangoDBServiceFactory() {
 
     }
@@ -63,9 +66,19 @@ public final class ArangoDBServiceFactory {
     }
 
     public static ArangoDBService createSingletonService() {
-        return builder()
-                .addLocalMapping(() -> new SingletonArangoDBService(new 
ArangoDBLocalContainerService(), "arangoDB"))
-                .addRemoteMapping(ArangoDBRemoteService::new)
-                .build();
+        if (arangoDBService == null) {
+
+            if (instance == null) {
+                instance = builder();
+
+                instance.addLocalMapping(() -> new 
SingletonArangoDBService(new ArangoDBLocalContainerService(), "arangoDB"))
+                        .addRemoteMapping(ArangoDBRemoteService::new)
+                        .build();
+            }
+
+            arangoDBService = instance.build();
+        }
+
+        return arangoDBService;
     }
 }
diff --git 
a/test-infra/camel-test-infra-hbase/src/test/java/org/apache/camel/test/infra/hbase/services/HBaseServiceFactory.java
 
b/test-infra/camel-test-infra-hbase/src/test/java/org/apache/camel/test/infra/hbase/services/HBaseServiceFactory.java
index 0a9a6edfff4..eac5f30b921 100644
--- 
a/test-infra/camel-test-infra-hbase/src/test/java/org/apache/camel/test/infra/hbase/services/HBaseServiceFactory.java
+++ 
b/test-infra/camel-test-infra-hbase/src/test/java/org/apache/camel/test/infra/hbase/services/HBaseServiceFactory.java
@@ -43,6 +43,9 @@ public final class HBaseServiceFactory {
         }
     }
 
+    private static SimpleTestServiceBuilder<HBaseService> instance;
+    private static HBaseService service;
+
     private HBaseServiceFactory() {
 
     }
@@ -58,8 +61,16 @@ public final class HBaseServiceFactory {
     }
 
     public static HBaseService createSingletonService() {
-        return builder()
-                .addLocalMapping(() -> new SingletonHBaseService(new 
HBaseLocalContainerService(), "hbase"))
-                .build();
+        if (service == null) {
+            if (instance == null) {
+                instance = builder();
+
+                instance.addLocalMapping(() -> new SingletonHBaseService(new 
HBaseLocalContainerService(), "hbase"));
+            }
+
+            service = instance.build();
+        }
+
+        return service;
     }
 }
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);
     }
 
diff --git 
a/test-infra/camel-test-infra-mongodb/src/test/java/org/apache/camel/test/infra/mongodb/services/MongoDBServiceFactory.java
 
b/test-infra/camel-test-infra-mongodb/src/test/java/org/apache/camel/test/infra/mongodb/services/MongoDBServiceFactory.java
index 52762a95ac2..dfd97aece4e 100644
--- 
a/test-infra/camel-test-infra-mongodb/src/test/java/org/apache/camel/test/infra/mongodb/services/MongoDBServiceFactory.java
+++ 
b/test-infra/camel-test-infra-mongodb/src/test/java/org/apache/camel/test/infra/mongodb/services/MongoDBServiceFactory.java
@@ -48,6 +48,9 @@ public final class MongoDBServiceFactory {
         }
     }
 
+    private static SimpleTestServiceBuilder<MongoDBService> instance;
+    private static MongoDBService service;
+
     private MongoDBServiceFactory() {
 
     }
@@ -64,9 +67,16 @@ public final class MongoDBServiceFactory {
     }
 
     public static MongoDBService createSingletonService() {
-        return builder()
-                .addLocalMapping(() -> new SingletonMongoDBService(new 
MongoDBLocalContainerService(), "mongo-db"))
-                .addRemoteMapping(MongoDBRemoteService::new)
-                .build();
+        if (service == null) {
+            if (instance == null) {
+                instance = builder();
+                instance.addLocalMapping(() -> new SingletonMongoDBService(new 
MongoDBLocalContainerService(), "mongo-db"))
+                        .addRemoteMapping(MongoDBRemoteService::new);
+            }
+
+            service = instance.build();
+        }
+
+        return service;
     }
 }

Reply via email to