From 62d773b58a4218fd02a192d5ec39637a93538c0c Mon Sep 17 00:00:00 2001 From: ChungNT Date: Fri, 25 Jan 2019 11:15:11 +0700 Subject: [PATCH 1/8] add example for singleton container --- examples/singleton-container/pom.xml | 59 +++++++++++++++++++ .../singleton_container/Cache.java | 10 ++++ .../singleton_container/RedisBackedCache.java | 34 +++++++++++ .../AbstractIntegrationTest.java | 13 ++++ .../BarConcreteTestClass.java | 33 +++++++++++ .../FooConcreteTestClass.java | 31 ++++++++++ 6 files changed, 180 insertions(+) create mode 100644 examples/singleton-container/pom.xml create mode 100644 examples/singleton-container/src/main/java/testcontainer/singleton_container/Cache.java create mode 100644 examples/singleton-container/src/main/java/testcontainer/singleton_container/RedisBackedCache.java create mode 100644 examples/singleton-container/src/test/java/testcontainer/singleton_container/AbstractIntegrationTest.java create mode 100644 examples/singleton-container/src/test/java/testcontainer/singleton_container/BarConcreteTestClass.java create mode 100644 examples/singleton-container/src/test/java/testcontainer/singleton_container/FooConcreteTestClass.java diff --git a/examples/singleton-container/pom.xml b/examples/singleton-container/pom.xml new file mode 100644 index 00000000000..b2d47ce5fd1 --- /dev/null +++ b/examples/singleton-container/pom.xml @@ -0,0 +1,59 @@ + + 4.0.0 + + testcontainer + singleton-container + 0.0.1-SNAPSHOT + jar + + singleton-container + http://maven.apache.org + + + UTF-8 + + + + + redis.clients + jedis + 3.0.1 + + + com.google.code.gson + gson + 2.8.5 + + + com.google.guava + guava + 23.0 + + + org.slf4j + slf4j-api + 1.7.25 + provided + + + ch.qos.logback + logback-classic + 1.2.3 + test + + + junit + junit + 4.12 + test + + + + org.testcontainers + testcontainers + 1.10.5 + test + + + diff --git a/examples/singleton-container/src/main/java/testcontainer/singleton_container/Cache.java b/examples/singleton-container/src/main/java/testcontainer/singleton_container/Cache.java new file mode 100644 index 00000000000..fa9d01345bc --- /dev/null +++ b/examples/singleton-container/src/main/java/testcontainer/singleton_container/Cache.java @@ -0,0 +1,10 @@ +package testcontainer.singleton_container; + +import java.util.Optional; + +public interface Cache { + + void put(String key, Object value); + + Optional get(String key, Class expectedClass); +} \ No newline at end of file diff --git a/examples/singleton-container/src/main/java/testcontainer/singleton_container/RedisBackedCache.java b/examples/singleton-container/src/main/java/testcontainer/singleton_container/RedisBackedCache.java new file mode 100644 index 00000000000..f455ac539c1 --- /dev/null +++ b/examples/singleton-container/src/main/java/testcontainer/singleton_container/RedisBackedCache.java @@ -0,0 +1,34 @@ +package testcontainer.singleton_container; + +import com.google.gson.Gson; +import redis.clients.jedis.Jedis; + +import java.util.Optional; + +public class RedisBackedCache implements Cache { + + private final Jedis jedis; + private final String cacheName; + private final Gson gson; + + public RedisBackedCache(Jedis jedis, String cacheName) { + this.jedis = jedis; + this.cacheName = cacheName; + this.gson = new Gson(); + } + + public void put(String key, Object value) { + String jsonValue = gson.toJson(value); + this.jedis.hset(this.cacheName, key, jsonValue); + } + + public Optional get(String key, Class expectedClass) { + String foundJson = this.jedis.hget(this.cacheName, key); + + if (foundJson == null) { + return Optional.empty(); + } + + return Optional.of(gson.fromJson(foundJson, expectedClass)); + } +} diff --git a/examples/singleton-container/src/test/java/testcontainer/singleton_container/AbstractIntegrationTest.java b/examples/singleton-container/src/test/java/testcontainer/singleton_container/AbstractIntegrationTest.java new file mode 100644 index 00000000000..29bc8e6061f --- /dev/null +++ b/examples/singleton-container/src/test/java/testcontainer/singleton_container/AbstractIntegrationTest.java @@ -0,0 +1,13 @@ +package testcontainer.singleton_container; + +import org.testcontainers.containers.GenericContainer; + +public abstract class AbstractIntegrationTest { + + public static final GenericContainer redis = new GenericContainer("redis:3.0.6") + .withExposedPorts(6379); + + static { + redis.start(); + } +} diff --git a/examples/singleton-container/src/test/java/testcontainer/singleton_container/BarConcreteTestClass.java b/examples/singleton-container/src/test/java/testcontainer/singleton_container/BarConcreteTestClass.java new file mode 100644 index 00000000000..c9e892bf33a --- /dev/null +++ b/examples/singleton-container/src/test/java/testcontainer/singleton_container/BarConcreteTestClass.java @@ -0,0 +1,33 @@ +package testcontainer.singleton_container; + +import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals; +import static org.rnorth.visibleassertions.VisibleAssertions.assertTrue; + +import java.util.Optional; + +import org.junit.Before; +import org.junit.Test; + +import redis.clients.jedis.Jedis; + +public class BarConcreteTestClass extends AbstractIntegrationTest { + + private Cache cache; + + @Before + public void Setup() { + Jedis jedis = new Jedis(redis.getContainerIpAddress(), redis.getMappedPort(6379)); + + cache = new RedisBackedCache(jedis, "bar"); + } + + @Test + public void testInsertValue() { + cache.put("bar", "BAR"); + Optional foundObject = cache.get("bar", String.class); + + assertTrue("When inserted a object in the cache, it can be found", foundObject.isPresent()); + assertEquals("When we get value of an inserted object, the value must be the same", "BAR", foundObject.get()); + } + +} diff --git a/examples/singleton-container/src/test/java/testcontainer/singleton_container/FooConcreteTestClass.java b/examples/singleton-container/src/test/java/testcontainer/singleton_container/FooConcreteTestClass.java new file mode 100644 index 00000000000..d1885ff91ab --- /dev/null +++ b/examples/singleton-container/src/test/java/testcontainer/singleton_container/FooConcreteTestClass.java @@ -0,0 +1,31 @@ +package testcontainer.singleton_container; + +import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals; +import static org.rnorth.visibleassertions.VisibleAssertions.assertTrue; + +import java.util.Optional; + +import org.junit.Before; +import org.junit.Test; + +import redis.clients.jedis.Jedis; +public class FooConcreteTestClass extends AbstractIntegrationTest{ + + private Cache cache; + + @Before + public void setUp() throws Exception { + Jedis jedis = new Jedis(redis.getContainerIpAddress(), redis.getMappedPort(6379)); + + cache = new RedisBackedCache(jedis, "foo"); + } + + @Test + public void testInsertValue() { + cache.put("foo", "FOO"); + Optional foundObject = cache.get("foo", String.class); + + assertTrue("When inserted a object in the cache, it can be found", foundObject.isPresent()); + assertEquals("When we get value of an inserted object, the value must be the same", "FOO", foundObject.get()); + } +} From 73c4c7ffa53d9e712364d81acc99d81c817b3f7f Mon Sep 17 00:00:00 2001 From: ChungNT Date: Mon, 28 Jan 2019 17:25:05 +0700 Subject: [PATCH 2/8] address review comment. --- examples/singleton-container/pom.xml | 38 ++++++------------- .../example/cache}/Cache.java | 2 +- .../example/cache}/RedisBackedCache.java | 2 +- .../example}/AbstractIntegrationTest.java | 2 +- .../example}/BarConcreteTestClass.java | 5 ++- .../example}/FooConcreteTestClass.java | 5 ++- 6 files changed, 20 insertions(+), 34 deletions(-) rename examples/singleton-container/src/main/java/{testcontainer/singleton_container => com/example/cache}/Cache.java (77%) rename examples/singleton-container/src/main/java/{testcontainer/singleton_container => com/example/cache}/RedisBackedCache.java (94%) rename examples/singleton-container/src/test/java/{testcontainer/singleton_container => com/example}/AbstractIntegrationTest.java (87%) rename examples/singleton-container/src/test/java/{testcontainer/singleton_container => com/example}/BarConcreteTestClass.java (90%) rename examples/singleton-container/src/test/java/{testcontainer/singleton_container => com/example}/FooConcreteTestClass.java (90%) diff --git a/examples/singleton-container/pom.xml b/examples/singleton-container/pom.xml index b2d47ce5fd1..710c32d6b80 100644 --- a/examples/singleton-container/pom.xml +++ b/examples/singleton-container/pom.xml @@ -1,18 +1,15 @@ - - 4.0.0 + + + + testcontainers-java-examples + org.testcontainers.examples + NOVERSION + + 4.0.0 - testcontainer - singleton-container - 0.0.1-SNAPSHOT - jar - - singleton-container - http://maven.apache.org - - - UTF-8 - + singleton-container @@ -42,18 +39,5 @@ 1.2.3 test - - junit - junit - 4.12 - test - - - - org.testcontainers - testcontainers - 1.10.5 - test - diff --git a/examples/singleton-container/src/main/java/testcontainer/singleton_container/Cache.java b/examples/singleton-container/src/main/java/com/example/cache/Cache.java similarity index 77% rename from examples/singleton-container/src/main/java/testcontainer/singleton_container/Cache.java rename to examples/singleton-container/src/main/java/com/example/cache/Cache.java index fa9d01345bc..5c5ba253d6e 100644 --- a/examples/singleton-container/src/main/java/testcontainer/singleton_container/Cache.java +++ b/examples/singleton-container/src/main/java/com/example/cache/Cache.java @@ -1,4 +1,4 @@ -package testcontainer.singleton_container; +package com.example.cache; import java.util.Optional; diff --git a/examples/singleton-container/src/main/java/testcontainer/singleton_container/RedisBackedCache.java b/examples/singleton-container/src/main/java/com/example/cache/RedisBackedCache.java similarity index 94% rename from examples/singleton-container/src/main/java/testcontainer/singleton_container/RedisBackedCache.java rename to examples/singleton-container/src/main/java/com/example/cache/RedisBackedCache.java index f455ac539c1..12585cafe16 100644 --- a/examples/singleton-container/src/main/java/testcontainer/singleton_container/RedisBackedCache.java +++ b/examples/singleton-container/src/main/java/com/example/cache/RedisBackedCache.java @@ -1,4 +1,4 @@ -package testcontainer.singleton_container; +package com.example.cache; import com.google.gson.Gson; import redis.clients.jedis.Jedis; diff --git a/examples/singleton-container/src/test/java/testcontainer/singleton_container/AbstractIntegrationTest.java b/examples/singleton-container/src/test/java/com/example/AbstractIntegrationTest.java similarity index 87% rename from examples/singleton-container/src/test/java/testcontainer/singleton_container/AbstractIntegrationTest.java rename to examples/singleton-container/src/test/java/com/example/AbstractIntegrationTest.java index 29bc8e6061f..6daff319753 100644 --- a/examples/singleton-container/src/test/java/testcontainer/singleton_container/AbstractIntegrationTest.java +++ b/examples/singleton-container/src/test/java/com/example/AbstractIntegrationTest.java @@ -1,4 +1,4 @@ -package testcontainer.singleton_container; +package com.example; import org.testcontainers.containers.GenericContainer; diff --git a/examples/singleton-container/src/test/java/testcontainer/singleton_container/BarConcreteTestClass.java b/examples/singleton-container/src/test/java/com/example/BarConcreteTestClass.java similarity index 90% rename from examples/singleton-container/src/test/java/testcontainer/singleton_container/BarConcreteTestClass.java rename to examples/singleton-container/src/test/java/com/example/BarConcreteTestClass.java index c9e892bf33a..b3ab3ccb6d2 100644 --- a/examples/singleton-container/src/test/java/testcontainer/singleton_container/BarConcreteTestClass.java +++ b/examples/singleton-container/src/test/java/com/example/BarConcreteTestClass.java @@ -1,8 +1,9 @@ -package testcontainer.singleton_container; +package com.example; import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals; import static org.rnorth.visibleassertions.VisibleAssertions.assertTrue; - +import com.example.cache.Cache; +import com.example.cache.RedisBackedCache; import java.util.Optional; import org.junit.Before; diff --git a/examples/singleton-container/src/test/java/testcontainer/singleton_container/FooConcreteTestClass.java b/examples/singleton-container/src/test/java/com/example/FooConcreteTestClass.java similarity index 90% rename from examples/singleton-container/src/test/java/testcontainer/singleton_container/FooConcreteTestClass.java rename to examples/singleton-container/src/test/java/com/example/FooConcreteTestClass.java index d1885ff91ab..50035eeae9a 100644 --- a/examples/singleton-container/src/test/java/testcontainer/singleton_container/FooConcreteTestClass.java +++ b/examples/singleton-container/src/test/java/com/example/FooConcreteTestClass.java @@ -1,8 +1,9 @@ -package testcontainer.singleton_container; +package com.example; import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals; import static org.rnorth.visibleassertions.VisibleAssertions.assertTrue; - +import com.example.cache.Cache; +import com.example.cache.RedisBackedCache; import java.util.Optional; import org.junit.Before; From ef10dcaffeeb41268290fb6514dd78c0b42a926a Mon Sep 17 00:00:00 2001 From: ChungNT Date: Mon, 28 Jan 2019 17:28:39 +0700 Subject: [PATCH 3/8] change method name to not starts with capital letter --- .../src/test/java/com/example/BarConcreteTestClass.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/singleton-container/src/test/java/com/example/BarConcreteTestClass.java b/examples/singleton-container/src/test/java/com/example/BarConcreteTestClass.java index b3ab3ccb6d2..1efc7061c6d 100644 --- a/examples/singleton-container/src/test/java/com/example/BarConcreteTestClass.java +++ b/examples/singleton-container/src/test/java/com/example/BarConcreteTestClass.java @@ -16,7 +16,7 @@ public class BarConcreteTestClass extends AbstractIntegrationTest { private Cache cache; @Before - public void Setup() { + public void setUp() { Jedis jedis = new Jedis(redis.getContainerIpAddress(), redis.getMappedPort(6379)); cache = new RedisBackedCache(jedis, "bar"); From 07165501ff0a5fc07b28bf906d985f7dd3853cd0 Mon Sep 17 00:00:00 2001 From: Kevin Wittek Date: Mon, 28 Jan 2019 23:36:48 +0700 Subject: [PATCH 4/8] Update examples/singleton-container/src/test/java/com/example/FooConcreteTestClass.java Co-Authored-By: chungngoops --- .../src/test/java/com/example/FooConcreteTestClass.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/singleton-container/src/test/java/com/example/FooConcreteTestClass.java b/examples/singleton-container/src/test/java/com/example/FooConcreteTestClass.java index 50035eeae9a..6580cb365a3 100644 --- a/examples/singleton-container/src/test/java/com/example/FooConcreteTestClass.java +++ b/examples/singleton-container/src/test/java/com/example/FooConcreteTestClass.java @@ -10,7 +10,7 @@ import org.junit.Test; import redis.clients.jedis.Jedis; -public class FooConcreteTestClass extends AbstractIntegrationTest{ +public class FooConcreteTestClass extends AbstractIntegrationTest { private Cache cache; From 3dae50bb5fd40ecc065c5fba31d9a959be3d1103 Mon Sep 17 00:00:00 2001 From: Sergei Egorov Date: Mon, 28 Jan 2019 18:53:28 +0100 Subject: [PATCH 5/8] Update FooConcreteTestClass.java --- .../test/java/com/example/FooConcreteTestClass.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/examples/singleton-container/src/test/java/com/example/FooConcreteTestClass.java b/examples/singleton-container/src/test/java/com/example/FooConcreteTestClass.java index 6580cb365a3..0a10306be0d 100644 --- a/examples/singleton-container/src/test/java/com/example/FooConcreteTestClass.java +++ b/examples/singleton-container/src/test/java/com/example/FooConcreteTestClass.java @@ -1,15 +1,16 @@ package com.example; -import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals; -import static org.rnorth.visibleassertions.VisibleAssertions.assertTrue; import com.example.cache.Cache; import com.example.cache.RedisBackedCache; -import java.util.Optional; - import org.junit.Before; import org.junit.Test; - import redis.clients.jedis.Jedis; + +import java.util.Optional; + +import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals; +import static org.rnorth.visibleassertions.VisibleAssertions.assertTrue; + public class FooConcreteTestClass extends AbstractIntegrationTest { private Cache cache; From b74b183a8e38feedaa62820c15bf6d3c0a2d8c95 Mon Sep 17 00:00:00 2001 From: Sergei Egorov Date: Mon, 28 Jan 2019 18:53:52 +0100 Subject: [PATCH 6/8] Update BarConcreteTestClass.java --- .../test/java/com/example/BarConcreteTestClass.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/singleton-container/src/test/java/com/example/BarConcreteTestClass.java b/examples/singleton-container/src/test/java/com/example/BarConcreteTestClass.java index 1efc7061c6d..8e9da5fe677 100644 --- a/examples/singleton-container/src/test/java/com/example/BarConcreteTestClass.java +++ b/examples/singleton-container/src/test/java/com/example/BarConcreteTestClass.java @@ -1,16 +1,16 @@ package com.example; -import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals; -import static org.rnorth.visibleassertions.VisibleAssertions.assertTrue; import com.example.cache.Cache; import com.example.cache.RedisBackedCache; -import java.util.Optional; - import org.junit.Before; import org.junit.Test; - import redis.clients.jedis.Jedis; +import java.util.Optional; + +import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals; +import static org.rnorth.visibleassertions.VisibleAssertions.assertTrue; + public class BarConcreteTestClass extends AbstractIntegrationTest { private Cache cache; From 5d6d073f4b22743e4f162956125659c92d8e724f Mon Sep 17 00:00:00 2001 From: Kevin Wittek Date: Mon, 28 Jan 2019 19:10:35 +0100 Subject: [PATCH 7/8] Update assert texts --- .../src/test/java/com/example/BarConcreteTestClass.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/singleton-container/src/test/java/com/example/BarConcreteTestClass.java b/examples/singleton-container/src/test/java/com/example/BarConcreteTestClass.java index 8e9da5fe677..08a5ebfe2f5 100644 --- a/examples/singleton-container/src/test/java/com/example/BarConcreteTestClass.java +++ b/examples/singleton-container/src/test/java/com/example/BarConcreteTestClass.java @@ -27,8 +27,8 @@ public void testInsertValue() { cache.put("bar", "BAR"); Optional foundObject = cache.get("bar", String.class); - assertTrue("When inserted a object in the cache, it can be found", foundObject.isPresent()); - assertEquals("When we get value of an inserted object, the value must be the same", "BAR", foundObject.get()); + assertTrue("When inserting an object into the cache, it can be retrieved", foundObject.isPresent()); + assertEquals("When accessing the value of a retrieved object, the value must be the same", "BAR", foundObject.get()); } } From 8b4d077528cc6894a2dc529ad393b97193b0a294 Mon Sep 17 00:00:00 2001 From: Kevin Wittek Date: Mon, 28 Jan 2019 19:11:21 +0100 Subject: [PATCH 8/8] Update FooConcreteTestClass.java --- .../src/test/java/com/example/FooConcreteTestClass.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/singleton-container/src/test/java/com/example/FooConcreteTestClass.java b/examples/singleton-container/src/test/java/com/example/FooConcreteTestClass.java index 0a10306be0d..1196348b258 100644 --- a/examples/singleton-container/src/test/java/com/example/FooConcreteTestClass.java +++ b/examples/singleton-container/src/test/java/com/example/FooConcreteTestClass.java @@ -27,7 +27,7 @@ public void testInsertValue() { cache.put("foo", "FOO"); Optional foundObject = cache.get("foo", String.class); - assertTrue("When inserted a object in the cache, it can be found", foundObject.isPresent()); - assertEquals("When we get value of an inserted object, the value must be the same", "FOO", foundObject.get()); + assertTrue("When inserting an object into the cache, it can be retrieved", foundObject.isPresent()); + assertEquals("When accessing the value of a retrieved object, the value must be the same", "FOO", foundObject.get()); } }