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
The following commit(s) were added to refs/heads/main by this push:
new b21e302 camel-test-infra-kafka: enable singleton services for Strimzi
b21e302 is described below
commit b21e302e6c553b5fb5f57f1bb2f2b6099844ec97
Author: Otavio Rodolfo Piske <[email protected]>
AuthorDate: Thu Mar 24 13:03:06 2022 +0100
camel-test-infra-kafka: enable singleton services for Strimzi
---
.../infra/common/services/SingletonService.java} | 53 +++++++++++++---------
.../infra/kafka/services/KafkaServiceFactory.java | 29 +++++++++++-
2 files changed, 58 insertions(+), 24 deletions(-)
diff --git
a/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/ContainerLocalSingletonKafkaService.java
b/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/services/SingletonService.java
similarity index 50%
rename from
test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/ContainerLocalSingletonKafkaService.java
rename to
test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/services/SingletonService.java
index b3b1f09..e30fc73 100644
---
a/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/ContainerLocalSingletonKafkaService.java
+++
b/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/services/SingletonService.java
@@ -15,45 +15,54 @@
* limitations under the License.
*/
-package org.apache.camel.test.infra.kafka.services;
+package org.apache.camel.test.infra.common.services;
import org.junit.jupiter.api.extension.ExtensionContext;
-import org.testcontainers.containers.KafkaContainer;
-import org.testcontainers.utility.DockerImageName;
+import org.slf4j.LoggerFactory;
-public class ContainerLocalSingletonKafkaService extends
ContainerLocalKafkaService
- implements ExtensionContext.Store.CloseableResource {
+/**
+ * This is a wrapper class for creating singleton services
+ *
+ * @param <T> The type of the service to be wrapped
+ */
+public class SingletonService<T extends TestService> implements
ExtensionContext.Store.CloseableResource, TestService {
+ private final T service;
+ private final String name;
- public ContainerLocalSingletonKafkaService(KafkaContainer container) {
- super(container);
+ public SingletonService(T service, String name) {
+ this.service = service;
+ this.name = name;
}
- public ContainerLocalSingletonKafkaService() {
- super();
+ protected void addToStore(ExtensionContext extensionContext) {
+
extensionContext.getRoot().getStore(ExtensionContext.Namespace.GLOBAL).getOrComputeIfAbsent(name,
s -> {
+ LoggerFactory.getLogger(SingletonService.class).debug("Registering
singleton service {}", name);
+ service.initialize();
+ return this;
+ });
}
@Override
- public void beforeAll(ExtensionContext extensionContext) {
-
extensionContext.getRoot().getStore(ExtensionContext.Namespace.GLOBAL).getOrComputeIfAbsent("kafka",
s -> {
- super.initialize();
- return this;
- });
+ public void registerProperties() {
+ service.registerProperties();
+ }
+
+ @Override
+ public void initialize() {
+ service.initialize();
}
@Override
- public void afterAll(ExtensionContext extensionContext) {
- // no op
+ public void shutdown() {
+ service.shutdown();
}
@Override
public void close() {
- super.shutdown();
+ service.shutdown();
}
- public static ContainerLocalSingletonKafkaService kafka3Container() {
- KafkaContainer container
- = new
KafkaContainer(DockerImageName.parse(ContainerLocalKafkaService.KAFKA3_IMAGE_NAME))
- .withEmbeddedZookeeper();
- return new ContainerLocalSingletonKafkaService(container);
+ protected T getService() {
+ 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 43ba6b3..ae15028 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
@@ -18,8 +18,31 @@
package org.apache.camel.test.infra.kafka.services;
import org.apache.camel.test.infra.common.services.SimpleTestServiceBuilder;
+import org.apache.camel.test.infra.common.services.SingletonService;
+import org.junit.jupiter.api.extension.ExtensionContext;
public final class KafkaServiceFactory {
+ static class SingletonKafkaService extends SingletonService<KafkaService>
implements KafkaService {
+ public SingletonKafkaService(KafkaService service, String name) {
+ super(service, name);
+ }
+
+ @Override
+ public String getBootstrapServers() {
+ return getService().getBootstrapServers();
+ }
+
+ @Override
+ public void beforeAll(ExtensionContext extensionContext) {
+ addToStore(extensionContext);
+ }
+
+ @Override
+ public void afterAll(ExtensionContext extensionContext) {
+ // NO-OP
+ }
+ }
+
private KafkaServiceFactory() {
}
@@ -39,9 +62,11 @@ public final class KafkaServiceFactory {
public static KafkaService createSingletonService() {
return builder()
- .addLocalMapping(() -> new
ContainerLocalSingletonKafkaService())
+ .addLocalMapping(() -> new SingletonKafkaService(new
ContainerLocalKafkaService(), "kafka"))
.addRemoteMapping(RemoteKafkaService::new)
- .addMapping("local-kafka3-container",
ContainerLocalSingletonKafkaService::kafka3Container)
+ .addMapping("local-kafka3-container",
+ () -> new
SingletonKafkaService(ContainerLocalKafkaService.kafka3Container(), "kafka3"))
+ .addMapping("local-strimzi-container", () -> new
SingletonKafkaService(new StrimziService(), "strimzi"))
.build();
}