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; } }