From 382f60b8d78469a71f8b255ffc81e160810dcb59 Mon Sep 17 00:00:00 2001 From: Simon Schneider <10846939+raynigon@users.noreply.github.com> Date: Tue, 23 Jun 2020 15:42:32 +0200 Subject: [PATCH] Convert Docs for Kafka Module #1158 Convert inline example code to use codeinclude macro for the kafka module documentation. --- docs/modules/kafka.md | 36 ++++++++++--------- .../containers/KafkaContainerTest.java | 33 ++++++++++++++++- 2 files changed, 52 insertions(+), 17 deletions(-) diff --git a/docs/modules/kafka.md b/docs/modules/kafka.md index a96a0a0b43a..35ac37b6906 100644 --- a/docs/modules/kafka.md +++ b/docs/modules/kafka.md @@ -11,41 +11,45 @@ More precisely Testcontainers uses the official Docker images for [Confluent OSS ## Example The following field in your JUnit test class will prepare a container running Kafka: -```java -@Rule -public KafkaContainer kafka = new KafkaContainer(); -``` + +[JUnit Rule](../../modules/kafka/src/test/java/org/testcontainers/containers/KafkaContainerTest.java) inside_block:junitRule + Now your tests or any other process running on your machine can get access to running Kafka broker by using the following bootstrap server location: -```java -kafka.getBootstrapServers() -``` + + +[Bootstrap Servers](../../modules/kafka/src/test/java/org/testcontainers/containers/KafkaContainerTest.java) inside_block:getBootstrapServers + + ## Options ### Selecting Kafka version You can select a version of Confluent Platform by passing it to the container's constructor: -```java -new KafkaContainer("4.1.2") -``` + +[Version Constructor](../../modules/kafka/src/test/java/org/testcontainers/containers/KafkaContainerTest.java) inside_block:constructorWithVersion + + + The correspondence between Confluent Platform versions and Kafka versions can be seen [in Confluent documentation](https://docs.confluent.io/current/installation/versions-interoperability.html#cp-and-apache-kafka-compatibility) ### Using external Zookeeper If for some reason you want to use an externally running Zookeeper, then just pass its location during construction: -```java -new KafkaContainer().withExternalZookeeper("localhost:2181") -``` + +[External Zookeeper](../../modules/kafka/src/test/java/org/testcontainers/containers/KafkaContainerTest.java) inside_block:withExternalZookeeper + + ## Multi-container usage If your test needs to run some other Docker container which needs access to the Kafka, do the following: * Run your other container on the same network as Kafka container, e.g.: -```java -new GenericContainer("myImage").withNetwork(kafka.getNetwork()) -``` + +[Network](../../modules/kafka/src/test/java/org/testcontainers/containers/KafkaContainerTest.java) inside_block:withKafkaNetwork + * Use `kafka.getNetworkAliases().get(0)+":9092"` as bootstrap server location. Or just give your Kafka container a network alias of your liking. diff --git a/modules/kafka/src/test/java/org/testcontainers/containers/KafkaContainerTest.java b/modules/kafka/src/test/java/org/testcontainers/containers/KafkaContainerTest.java index 1490caa3328..7977a762661 100644 --- a/modules/kafka/src/test/java/org/testcontainers/containers/KafkaContainerTest.java +++ b/modules/kafka/src/test/java/org/testcontainers/containers/KafkaContainerTest.java @@ -10,6 +10,7 @@ import org.apache.kafka.clients.producer.ProducerRecord; import org.apache.kafka.common.serialization.StringDeserializer; import org.apache.kafka.common.serialization.StringSerializer; +import org.junit.Rule; import org.junit.Test; import org.rnorth.ducttape.unreliables.Unreliables; @@ -23,6 +24,11 @@ public class KafkaContainerTest { + // junitRule { + @Rule + public KafkaContainer kafka = new KafkaContainer(); + // } + @Test public void testUsage() throws Exception { try (KafkaContainer kafka = new KafkaContainer()) { @@ -31,6 +37,18 @@ public void testUsage() throws Exception { } } + @Test + public void testUsageWithVersion() throws Exception { + try ( + // constructorWithVersion { + KafkaContainer kafka = new KafkaContainer("4.1.2") + // } + ) { + kafka.start(); + testKafkaFunctionality(kafka.getBootstrapServers()); + } + } + /** * @deprecated the {@link Network} should be set explicitly with {@link KafkaContainer#withNetwork(Network)}. */ @@ -49,7 +67,11 @@ public void testExternalZookeeperWithKafkaNetwork() throws Exception { zookeeper.start(); kafka.start(); - testKafkaFunctionality(kafka.getBootstrapServers()); + testKafkaFunctionality( + // getBootstrapServers { + kafka.getBootstrapServers() + // } + ); } } @@ -58,17 +80,26 @@ public void testExternalZookeeperWithExternalNetwork() throws Exception { try ( Network network = Network.newNetwork(); + // withExternalZookeeper { KafkaContainer kafka = new KafkaContainer() .withNetwork(network) .withExternalZookeeper("zookeeper:2181"); + // } GenericContainer zookeeper = new GenericContainer("confluentinc/cp-zookeeper:4.0.0") .withNetwork(network) .withNetworkAliases("zookeeper") .withEnv("ZOOKEEPER_CLIENT_PORT", "2181"); + + // withKafkaNetwork { + GenericContainer application = new GenericContainer("alpine").withNetwork(kafka.getNetwork()) + // } + .withNetworkAliases("dummy") + .withCommand("sleep 10000") ) { zookeeper.start(); kafka.start(); + application.start(); testKafkaFunctionality(kafka.getBootstrapServers()); }