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/12/08 11:59:51 UTC

[camel] 01/03: (chores) camel-test-infra-kafka: add support for static Kafka containers with authentication

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 030fa614957aa1fef9cfc985c09df96e9d3fea0c
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Wed Dec 7 15:51:59 2022 +0100

    (chores) camel-test-infra-kafka: add support for static Kafka containers with authentication
---
 .../services/ContainerLocalAuthKafkaService.java   | 55 ++++++++++++++--------
 1 file changed, 35 insertions(+), 20 deletions(-)

diff --git a/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/ContainerLocalAuthKafkaService.java b/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/ContainerLocalAuthKafkaService.java
index 17003028747..bfad1359bc0 100644
--- a/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/ContainerLocalAuthKafkaService.java
+++ b/test-infra/camel-test-infra-kafka/src/test/java/org/apache/camel/test/infra/kafka/services/ContainerLocalAuthKafkaService.java
@@ -31,33 +31,48 @@ import org.testcontainers.utility.MountableFile;
 public class ContainerLocalAuthKafkaService implements KafkaService, ContainerService<KafkaContainer> {
     private static final Logger LOG = LoggerFactory.getLogger(ContainerLocalAuthKafkaService.class);
     private final KafkaContainer kafka;
-    private final String jaasConfigFile;
 
-    public ContainerLocalAuthKafkaService(String jaasConfigFile) {
-        this.jaasConfigFile = jaasConfigFile;
-        kafka = initContainer();
-    }
+    public static class TransientAuthenticatedKafkaContainer extends KafkaContainer {
+        public TransientAuthenticatedKafkaContainer(String jaasConfigFile) {
+            super(DockerImageName.parse(ContainerLocalKafkaService.KAFKA3_IMAGE_NAME));
 
-    public ContainerLocalAuthKafkaService(KafkaContainer kafka, String jaasConfigFile) {
-        this.kafka = kafka;
-        this.jaasConfigFile = jaasConfigFile;
+            withEmbeddedZookeeper();
+
+            final MountableFile mountableFile = MountableFile.forClasspathResource(jaasConfigFile);
+            LOG.debug("Using mountable file at: {}", mountableFile.getFilesystemPath());
+            withCopyFileToContainer(mountableFile, "/tmp/kafka-jaas.config");
+
+            withEnv("KAFKA_OPTS", "-Djava.security.auth.login.config=/tmp/kafka-jaas.config")
+                    .withEnv("KAFKA_LISTENERS", "PLAINTEXT://0.0.0.0:9093,BROKER://0.0.0.0:9092")
+                    .withEnv("KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL", "PLAIN")
+                    .withEnv("KAFKA_LISTENER_SECURITY_PROTOCOL_MAP", "PLAINTEXT:SASL_PLAINTEXT,BROKER:PLAINTEXT")
+                    .withEnv("KAFKA_SASL_ENABLED_MECHANISMS", "PLAIN");
+        }
     }
 
-    protected KafkaContainer initContainer() {
-        final KafkaContainer container = new KafkaContainer(DockerImageName.parse(ContainerLocalKafkaService.KAFKA3_IMAGE_NAME))
-                .withEmbeddedZookeeper();
+    public static class StaticKafkaContainer extends TransientAuthenticatedKafkaContainer {
+        public StaticKafkaContainer(String jaasConfigFile) {
+            super(jaasConfigFile);
+
+            addFixedExposedPort(9093, 9093);
+        }
 
-        final MountableFile mountableFile = MountableFile.forClasspathResource(jaasConfigFile);
-        LOG.debug("Using mountable file at: {}", mountableFile.getFilesystemPath());
-        container.withCopyFileToContainer(mountableFile, "/tmp/kafka-jaas.config");
+        @Override
+        public String getBootstrapServers() {
+            return String.format("PLAINTEXT://%s:9093", this.getHost());
+        }
+    }
+
+    public ContainerLocalAuthKafkaService(String jaasConfigFile) {
+        kafka = initContainer(jaasConfigFile);
+    }
 
-        container.withEnv("KAFKA_OPTS", "-Djava.security.auth.login.config=/tmp/kafka-jaas.config")
-                .withEnv("KAFKA_LISTENERS", "PLAINTEXT://0.0.0.0:9093,BROKER://0.0.0.0:9092")
-                .withEnv("KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL", "PLAIN")
-                .withEnv("KAFKA_LISTENER_SECURITY_PROTOCOL_MAP", "PLAINTEXT:SASL_PLAINTEXT,BROKER:PLAINTEXT")
-                .withEnv("KAFKA_SASL_ENABLED_MECHANISMS", "PLAIN");
+    public ContainerLocalAuthKafkaService(KafkaContainer kafka) {
+        this.kafka = kafka;
+    }
 
-        return container;
+    protected KafkaContainer initContainer(String jaasConfigFile) {
+        return new TransientAuthenticatedKafkaContainer(jaasConfigFile);
     }
 
     public String getBootstrapServers() {