From fadf93a7883cb721196a9212e078bd444e886182 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez?= Date: Mon, 24 Oct 2022 18:10:57 -0500 Subject: [PATCH 1/2] Add zookeeper example Demostrate how to use Apache Zookeeper along with `GenericContainer`. Fixes #1514 --- docs/examples.md | 1 + examples/settings.gradle | 1 + examples/zookeeper/build.gradle | 14 +++++++ .../com/example/ZookeeperContainerTest.java | 39 +++++++++++++++++++ .../src/test/resources/logback-test.xml | 16 ++++++++ 5 files changed, 71 insertions(+) create mode 100644 examples/zookeeper/build.gradle create mode 100644 examples/zookeeper/src/test/java/com/example/ZookeeperContainerTest.java create mode 100644 examples/zookeeper/src/test/resources/logback-test.xml diff --git a/docs/examples.md b/docs/examples.md index e7578c8b375..b7b96ee52bb 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -14,3 +14,4 @@ Examples of different use cases provided by Testcontainers can be found below: - [Spring Boot with Kotlin](https://github.com/testcontainers/testcontainers-java/tree/main/examples/spring-boot-kotlin-redis) - [TestNG](https://github.com/testcontainers/testcontainers-java/tree/main/examples/redis-backed-cache-testng) - [ImmuDb](https://github.com/testcontainers/testcontainers-java/tree/main/examples/immudb) +- [Zookeeper](https://github.com/testcontainers/testcontainers-java/tree/main/examples/zookeper) diff --git a/examples/settings.gradle b/examples/settings.gradle index d26ecef5a98..35b79454204 100644 --- a/examples/settings.gradle +++ b/examples/settings.gradle @@ -31,6 +31,7 @@ include 'spring-boot' include 'cucumber' include 'spring-boot-kotlin-redis' include 'immudb' +include 'zookeeper' ext.isCI = System.getenv("CI") != null diff --git a/examples/zookeeper/build.gradle b/examples/zookeeper/build.gradle new file mode 100644 index 00000000000..f2c92eb3b1d --- /dev/null +++ b/examples/zookeeper/build.gradle @@ -0,0 +1,14 @@ +plugins { + id 'java' +} + +repositories { + mavenCentral() +} + +dependencies { + testImplementation 'org.apache.curator:curator-framework:5.3.0' + testImplementation 'org.testcontainers:testcontainers' + testImplementation 'org.assertj:assertj-core:3.23.1' + testImplementation 'ch.qos.logback:logback-classic:1.2.11' +} diff --git a/examples/zookeeper/src/test/java/com/example/ZookeeperContainerTest.java b/examples/zookeeper/src/test/java/com/example/ZookeeperContainerTest.java new file mode 100644 index 00000000000..7bb54acd71e --- /dev/null +++ b/examples/zookeeper/src/test/java/com/example/ZookeeperContainerTest.java @@ -0,0 +1,39 @@ +package com.example; + +import org.apache.curator.framework.CuratorFramework; +import org.apache.curator.framework.CuratorFrameworkFactory; +import org.apache.curator.retry.RetryOneTime; +import org.junit.Test; +import org.testcontainers.containers.GenericContainer; + +import java.nio.charset.StandardCharsets; + +import static org.assertj.core.api.Assertions.assertThat; + +public class ZookeeperContainerTest { + + private static final int ZOOKEEPER_PORT = 2181; + + @Test + public void test() throws Exception { + String path = "/messages/zk-tc"; + String content = "Running Zookeeper with Testcontainers"; + try(GenericContainer zookeeper = new GenericContainer<>("zookeeper:3.8.0") + .withExposedPorts(ZOOKEEPER_PORT)) { + zookeeper.start(); + + String connectionString = zookeeper.getHost() + ":" + zookeeper.getMappedPort(ZOOKEEPER_PORT); + CuratorFramework curatorFramework = CuratorFrameworkFactory.builder().connectString(connectionString) + .retryPolicy(new RetryOneTime(100)).build(); + curatorFramework.start(); + curatorFramework.create().creatingParentsIfNeeded().forPath(path, + content.getBytes()); + + byte[] bytes = curatorFramework.getData().forPath(path); + curatorFramework.close(); + + assertThat(new String(bytes, StandardCharsets.UTF_8)).isEqualTo(content); + } + } + +} diff --git a/examples/zookeeper/src/test/resources/logback-test.xml b/examples/zookeeper/src/test/resources/logback-test.xml new file mode 100644 index 00000000000..83ef7a1a3ef --- /dev/null +++ b/examples/zookeeper/src/test/resources/logback-test.xml @@ -0,0 +1,16 @@ + + + + + + %d{HH:mm:ss.SSS} %-5level %logger - %msg%n + + + + + + + + + From 2e8e8ce233c21d93fa5c02155c98c6ee676108e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez?= Date: Tue, 25 Oct 2022 08:54:08 -0500 Subject: [PATCH 2/2] Apply spotless --- .../java/com/example/ZookeeperContainerTest.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/examples/zookeeper/src/test/java/com/example/ZookeeperContainerTest.java b/examples/zookeeper/src/test/java/com/example/ZookeeperContainerTest.java index 7bb54acd71e..a8aad36d201 100644 --- a/examples/zookeeper/src/test/java/com/example/ZookeeperContainerTest.java +++ b/examples/zookeeper/src/test/java/com/example/ZookeeperContainerTest.java @@ -18,16 +18,19 @@ public class ZookeeperContainerTest { public void test() throws Exception { String path = "/messages/zk-tc"; String content = "Running Zookeeper with Testcontainers"; - try(GenericContainer zookeeper = new GenericContainer<>("zookeeper:3.8.0") - .withExposedPorts(ZOOKEEPER_PORT)) { + try ( + GenericContainer zookeeper = new GenericContainer<>("zookeeper:3.8.0").withExposedPorts(ZOOKEEPER_PORT) + ) { zookeeper.start(); String connectionString = zookeeper.getHost() + ":" + zookeeper.getMappedPort(ZOOKEEPER_PORT); - CuratorFramework curatorFramework = CuratorFrameworkFactory.builder().connectString(connectionString) - .retryPolicy(new RetryOneTime(100)).build(); + CuratorFramework curatorFramework = CuratorFrameworkFactory + .builder() + .connectString(connectionString) + .retryPolicy(new RetryOneTime(100)) + .build(); curatorFramework.start(); - curatorFramework.create().creatingParentsIfNeeded().forPath(path, - content.getBytes()); + curatorFramework.create().creatingParentsIfNeeded().forPath(path, content.getBytes()); byte[] bytes = curatorFramework.getData().forPath(path); curatorFramework.close(); @@ -35,5 +38,4 @@ public void test() throws Exception { assertThat(new String(bytes, StandardCharsets.UTF_8)).isEqualTo(content); } } - }