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() {