From 246a82b4f3949760ed4cf5f9a3c0a37933c70ae8 Mon Sep 17 00:00:00 2001 From: Pavel Popov Date: Sun, 19 Nov 2017 17:06:53 +0300 Subject: [PATCH 01/12] Add cockroach db support --- modules/cockroach/pom.xml | 48 +++++++++++ .../containers/CockroachContainer.java | 86 +++++++++++++++++++ .../CockroachContainerProvider.java | 13 +++ ...s.containers.JdbcDatabaseContainerProvider | 1 + modules/jdbc-test/pom.xml | 5 ++ .../testcontainers/jdbc/JDBCDriverTest.java | 1 + pom.xml | 1 + 7 files changed, 155 insertions(+) create mode 100644 modules/cockroach/pom.xml create mode 100644 modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java create mode 100644 modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainerProvider.java create mode 100644 modules/cockroach/src/main/resources/META-INF/services/org.testcontainers.containers.JdbcDatabaseContainerProvider diff --git a/modules/cockroach/pom.xml b/modules/cockroach/pom.xml new file mode 100644 index 00000000000..eb88de92868 --- /dev/null +++ b/modules/cockroach/pom.xml @@ -0,0 +1,48 @@ + + + 4.0.0 + + + org.testcontainers + testcontainers-parent + 0-SNAPSHOT + ../../pom.xml + + + cockroach + TestContainers :: JDBC :: CockroachDB + + + + ${project.groupId} + jdbc + ${project.version} + + + + + org.postgresql + postgresql + 9.3-1101-jdbc41 + test + + + + + com.zaxxer + HikariCP-java6 + 2.3.8 + test + + + commons-dbutils + commons-dbutils + 1.6 + test + + + + + \ No newline at end of file diff --git a/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java b/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java new file mode 100644 index 00000000000..dfdbf4d2811 --- /dev/null +++ b/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java @@ -0,0 +1,86 @@ +package org.testcontainers.containers; + +import org.testcontainers.containers.wait.HttpWaitStrategy; + +import java.time.Duration; + +public class CockroachContainer> extends JdbcDatabaseContainer { + public static final String NAME = "cockroach"; + public static final String IMAGE = "cockroachdb/cockroach"; + public static final int REST_API_PORT = 8080; + public static final int DB_PORT = 26257; + + private String databaseName = "test"; + private String username = "root"; + private String password = ""; + + public CockroachContainer() { + this(IMAGE + ":v1.1.2"); + } + + public CockroachContainer(final String dockerImageName) { + super(dockerImageName); + } + + @Override + protected Integer getLivenessCheckPort() { + return getMappedPort(REST_API_PORT); + } + + @Override + protected void configure() { + withExposedPorts(REST_API_PORT, DB_PORT); + withEnv("COCKROACH_USER", username); + withEnv("COCKROACH_DATABASE", databaseName); + withExposedPorts(REST_API_PORT, DB_PORT); + waitingFor( + new HttpWaitStrategy() + .forPath("/health") + .forStatusCode(200) + .withStartupTimeout(Duration.ofMinutes(1)) + ); + withCommand("start --insecure"); + } + + @Override + public String getDriverClassName() { + return "org.postgresql.Driver"; + } + + @Override + public String getJdbcUrl() { + return "jdbc:postgresql://" + getContainerIpAddress() + ":" + getMappedPort(DB_PORT) + "/" + databaseName; + } + + @Override + public String getUsername() { + return username; + } + + @Override + public String getPassword() { + return password; + } + + @Override + public String getTestQueryString() { + return "SELECT 1"; + } + + @Override + public SELF withDatabaseName(final String databaseName) { + this.databaseName = databaseName; + return self(); + } + + @Override + public SELF withUsername(String username) { + this.username = username; + return self(); + } + + @Override + protected void waitUntilContainerStarted() { + getWaitStrategy().waitUntilReady(this); + } +} diff --git a/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainerProvider.java b/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainerProvider.java new file mode 100644 index 00000000000..78df9f4164d --- /dev/null +++ b/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainerProvider.java @@ -0,0 +1,13 @@ +package org.testcontainers.containers; + +public class CockroachContainerProvider extends JdbcDatabaseContainerProvider { + @Override + public boolean supports(String databaseType) { + return databaseType.equals(CockroachContainer.NAME); + } + + @Override + public JdbcDatabaseContainer newInstance(String tag) { + return new CockroachContainer(CockroachContainer.IMAGE + ":" + tag); + } +} diff --git a/modules/cockroach/src/main/resources/META-INF/services/org.testcontainers.containers.JdbcDatabaseContainerProvider b/modules/cockroach/src/main/resources/META-INF/services/org.testcontainers.containers.JdbcDatabaseContainerProvider new file mode 100644 index 00000000000..3b58b4c6799 --- /dev/null +++ b/modules/cockroach/src/main/resources/META-INF/services/org.testcontainers.containers.JdbcDatabaseContainerProvider @@ -0,0 +1 @@ +org.testcontainers.containers.CockroachContainerProvider \ No newline at end of file diff --git a/modules/jdbc-test/pom.xml b/modules/jdbc-test/pom.xml index 3a311119187..6c4a860b7f4 100644 --- a/modules/jdbc-test/pom.xml +++ b/modules/jdbc-test/pom.xml @@ -24,6 +24,11 @@ postgresql ${project.version} + + ${project.groupId} + cockroach + ${project.version} + com.google.guava diff --git a/modules/jdbc-test/src/test/java/org/testcontainers/jdbc/JDBCDriverTest.java b/modules/jdbc-test/src/test/java/org/testcontainers/jdbc/JDBCDriverTest.java index 8e663df8a45..54dd72c3e70 100644 --- a/modules/jdbc-test/src/test/java/org/testcontainers/jdbc/JDBCDriverTest.java +++ b/modules/jdbc-test/src/test/java/org/testcontainers/jdbc/JDBCDriverTest.java @@ -43,6 +43,7 @@ public static Iterable data() { {"jdbc:tc:mysql://hostname/databasename", false, false, false}, {"jdbc:tc:postgresql://hostname/databasename", false, false, false}, {"jdbc:tc:mysql:5.6://hostname/databasename?TC_MY_CNF=somepath/mysql_conf_override", false, false, true}, + {"jdbc:tc:cockroach://hostname/databasename", false, false, false}, }); } diff --git a/pom.xml b/pom.xml index bf158718386..90d98ab0db6 100644 --- a/pom.xml +++ b/pom.xml @@ -163,6 +163,7 @@ modules/jdbc modules/mysql modules/postgresql + modules/cockroach modules/selenium modules/nginx modules/jdbc-test From 33a0ece5b80226486e600b1edcfd14479a256b7c Mon Sep 17 00:00:00 2001 From: Pavel Popov Date: Mon, 26 Feb 2018 17:14:42 +0300 Subject: [PATCH 02/12] Add cockroach dep in jdbc-test --- modules/jdbc-test/build.gradle | 1 + modules/jdbc-test/pom.xml | 140 --------------------------------- 2 files changed, 1 insertion(+), 140 deletions(-) delete mode 100644 modules/jdbc-test/pom.xml diff --git a/modules/jdbc-test/build.gradle b/modules/jdbc-test/build.gradle index 262035ce027..d24edbedda4 100644 --- a/modules/jdbc-test/build.gradle +++ b/modules/jdbc-test/build.gradle @@ -1,6 +1,7 @@ dependencies { compile project(':mysql') compile project(':postgresql') + compile project(':cockroach') testCompile 'com.google.guava:guava:18.0' testCompile 'org.postgresql:postgresql:42.0.0' diff --git a/modules/jdbc-test/pom.xml b/modules/jdbc-test/pom.xml deleted file mode 100644 index 6c4a860b7f4..00000000000 --- a/modules/jdbc-test/pom.xml +++ /dev/null @@ -1,140 +0,0 @@ - - - 4.0.0 - - - org.testcontainers - testcontainers-parent - 0-SNAPSHOT - ../../pom.xml - - - jdbc-test - TestContainers :: JDBC :: Tests - - - - ${project.groupId} - mysql - ${project.version} - - - ${project.groupId} - postgresql - ${project.version} - - - ${project.groupId} - cockroach - ${project.version} - - - - com.google.guava - guava - 18.0 - test - - - - - org.postgresql - postgresql - 42.0.0 - test - - - mysql - mysql-connector-java - 5.1.35 - test - - - org.mariadb.jdbc - mariadb-java-client - 1.4.6 - test - - - - - com.zaxxer - HikariCP-java6 - 2.3.8 - test - - - org.apache.tomcat - tomcat-jdbc - 8.5.4 - test - - - org.vibur - vibur-dbcp - 9.0 - test - - - - commons-dbutils - commons-dbutils - 1.6 - test - - - - - - - org.apache.maven.plugins - maven-deploy-plugin - 2.7 - - true - - - - - - - - proprietary-deps - - - ${project.groupId} - oracle-xe - ${project.version} - - - - - com.oracle - ojdbc6 - 11.2.0.4 - provided - - - - - - maven-surefire-plugin - 2.19.1 - - - test-proprietary-deps - - test - - - src/testProprietary/java - - - - - - - - - From 1ec9fedf06277e53f89bfe225a12c7ff4cf2d13d Mon Sep 17 00:00:00 2001 From: Pavel Popov Date: Mon, 26 Feb 2018 19:12:06 +0300 Subject: [PATCH 03/12] Review fixes --- .../containers/CockroachContainer.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java b/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java index dfdbf4d2811..e5105a08efc 100644 --- a/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java +++ b/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java @@ -1,12 +1,20 @@ package org.testcontainers.containers; +import org.jetbrains.annotations.NotNull; import org.testcontainers.containers.wait.HttpWaitStrategy; import java.time.Duration; +import java.util.Arrays; +import java.util.Collections; +import java.util.Set; public class CockroachContainer> extends JdbcDatabaseContainer { public static final String NAME = "cockroach"; public static final String IMAGE = "cockroachdb/cockroach"; + public static final String IMAGE_TAG = "v1.1.2"; + public static final String JDBC_DRIVER_CLASS_NAME = "org.postgresql.Driver"; + public static final String JDBC_URL_PREFIX = "jdbc:postgresql"; + public static final String TEST_QUERY_STRING = "SELECT 1"; public static final int REST_API_PORT = 8080; public static final int DB_PORT = 26257; @@ -15,7 +23,7 @@ public class CockroachContainer> extends J private String password = ""; public CockroachContainer() { - this(IMAGE + ":v1.1.2"); + this(IMAGE + ":" + IMAGE_TAG); } public CockroachContainer(final String dockerImageName) { @@ -44,12 +52,12 @@ protected void configure() { @Override public String getDriverClassName() { - return "org.postgresql.Driver"; + return JDBC_DRIVER_CLASS_NAME; } @Override public String getJdbcUrl() { - return "jdbc:postgresql://" + getContainerIpAddress() + ":" + getMappedPort(DB_PORT) + "/" + databaseName; + return JDBC_URL_PREFIX + "://" + getContainerIpAddress() + ":" + getMappedPort(DB_PORT) + "/" + databaseName; } @Override @@ -57,6 +65,11 @@ public String getUsername() { return username; } + @Override + public SELF withPassword(String password) { + throw new UnsupportedOperationException(); + } + @Override public String getPassword() { return password; @@ -64,7 +77,7 @@ public String getPassword() { @Override public String getTestQueryString() { - return "SELECT 1"; + return TEST_QUERY_STRING; } @Override From 1babef3b145c70a9ad28ef0659251e8cb6e35e67 Mon Sep 17 00:00:00 2001 From: Pavel Popov Date: Tue, 27 Feb 2018 11:59:41 +0300 Subject: [PATCH 04/12] Remove unused imports --- .../containers/CockroachContainer.java | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java b/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java index e5105a08efc..c4b4bb5a148 100644 --- a/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java +++ b/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java @@ -1,12 +1,8 @@ package org.testcontainers.containers; -import org.jetbrains.annotations.NotNull; import org.testcontainers.containers.wait.HttpWaitStrategy; import java.time.Duration; -import java.util.Arrays; -import java.util.Collections; -import java.util.Set; public class CockroachContainer> extends JdbcDatabaseContainer { public static final String NAME = "cockroach"; @@ -42,10 +38,10 @@ protected void configure() { withEnv("COCKROACH_DATABASE", databaseName); withExposedPorts(REST_API_PORT, DB_PORT); waitingFor( - new HttpWaitStrategy() - .forPath("/health") - .forStatusCode(200) - .withStartupTimeout(Duration.ofMinutes(1)) + new HttpWaitStrategy() + .forPath("/health") + .forStatusCode(200) + .withStartupTimeout(Duration.ofMinutes(1)) ); withCommand("start --insecure"); } From 246f1e33a8d361d5d24b72988c0669dd76d427ab Mon Sep 17 00:00:00 2001 From: Pavel Popov Date: Sun, 10 Feb 2019 04:55:44 +0300 Subject: [PATCH 05/12] Another review fixes --- .../containers/CockroachContainer.java | 23 ++++++------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java b/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java index c4b4bb5a148..662af35adf6 100644 --- a/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java +++ b/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java @@ -1,13 +1,13 @@ package org.testcontainers.containers; -import org.testcontainers.containers.wait.HttpWaitStrategy; +import org.testcontainers.containers.wait.strategy.HttpWaitStrategy; import java.time.Duration; -public class CockroachContainer> extends JdbcDatabaseContainer { +public class CockroachContainer extends JdbcDatabaseContainer { public static final String NAME = "cockroach"; public static final String IMAGE = "cockroachdb/cockroach"; - public static final String IMAGE_TAG = "v1.1.2"; + public static final String IMAGE_TAG = "v2.1.4"; public static final String JDBC_DRIVER_CLASS_NAME = "org.postgresql.Driver"; public static final String JDBC_URL_PREFIX = "jdbc:postgresql"; public static final String TEST_QUERY_STRING = "SELECT 1"; @@ -26,20 +26,15 @@ public CockroachContainer(final String dockerImageName) { super(dockerImageName); } - @Override - protected Integer getLivenessCheckPort() { - return getMappedPort(REST_API_PORT); - } - @Override protected void configure() { withExposedPorts(REST_API_PORT, DB_PORT); withEnv("COCKROACH_USER", username); withEnv("COCKROACH_DATABASE", databaseName); - withExposedPorts(REST_API_PORT, DB_PORT); waitingFor( new HttpWaitStrategy() .forPath("/health") + .forPort(REST_API_PORT) .forStatusCode(200) .withStartupTimeout(Duration.ofMinutes(1)) ); @@ -62,7 +57,7 @@ public String getUsername() { } @Override - public SELF withPassword(String password) { + public CockroachContainer withPassword(String password) { throw new UnsupportedOperationException(); } @@ -77,19 +72,15 @@ public String getTestQueryString() { } @Override - public SELF withDatabaseName(final String databaseName) { + public CockroachContainer withDatabaseName(final String databaseName) { this.databaseName = databaseName; return self(); } @Override - public SELF withUsername(String username) { + public CockroachContainer withUsername(String username) { this.username = username; return self(); } - @Override - protected void waitUntilContainerStarted() { - getWaitStrategy().waitUntilReady(this); - } } From 88e763b172c5251aeb67d626ad539fae52afcf8f Mon Sep 17 00:00:00 2001 From: Pavel Popov Date: Sun, 10 Feb 2019 15:50:33 +0300 Subject: [PATCH 06/12] Decrease cockroach version --- .../org/testcontainers/containers/CockroachContainer.java | 2 +- .../containers/CockroachContainerProvider.java | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java b/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java index 662af35adf6..dd81a6bfd7c 100644 --- a/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java +++ b/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java @@ -7,7 +7,7 @@ public class CockroachContainer extends JdbcDatabaseContainer { public static final String NAME = "cockroach"; public static final String IMAGE = "cockroachdb/cockroach"; - public static final String IMAGE_TAG = "v2.1.4"; + public static final String IMAGE_TAG = "v1.1.2"; public static final String JDBC_DRIVER_CLASS_NAME = "org.postgresql.Driver"; public static final String JDBC_URL_PREFIX = "jdbc:postgresql"; public static final String TEST_QUERY_STRING = "SELECT 1"; diff --git a/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainerProvider.java b/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainerProvider.java index 78df9f4164d..96cafd54f31 100644 --- a/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainerProvider.java +++ b/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainerProvider.java @@ -6,6 +6,11 @@ public boolean supports(String databaseType) { return databaseType.equals(CockroachContainer.NAME); } + @Override + public JdbcDatabaseContainer newInstance() { + return newInstance(CockroachContainer.IMAGE_TAG); + } + @Override public JdbcDatabaseContainer newInstance(String tag) { return new CockroachContainer(CockroachContainer.IMAGE + ":" + tag); From 996706685957f0c79914d9d1ee2e037548ffd2b5 Mon Sep 17 00:00:00 2001 From: Richard North Date: Mon, 27 May 2019 20:50:04 +0100 Subject: [PATCH 07/12] Remove redundant test dependencies (tests are in jdbc-test) --- modules/cockroach/build.gradle | 4 ---- modules/mariadb/build.gradle | 6 ------ modules/mysql/build.gradle | 6 ------ modules/postgresql/build.gradle | 4 ---- 4 files changed, 20 deletions(-) diff --git a/modules/cockroach/build.gradle b/modules/cockroach/build.gradle index fecee60ebd4..e52f9f3729c 100644 --- a/modules/cockroach/build.gradle +++ b/modules/cockroach/build.gradle @@ -2,8 +2,4 @@ description = "Testcontainers :: JDBC :: CockroachDB" dependencies { compile project(':jdbc') - - testCompile 'org.postgresql:postgresql:9.3-1101-jdbc41' - testCompile 'com.zaxxer:HikariCP-java6:2.3.8' - testCompile 'commons-dbutils:commons-dbutils:1.6' } diff --git a/modules/mariadb/build.gradle b/modules/mariadb/build.gradle index 84c5ce667d4..26bfcd22589 100644 --- a/modules/mariadb/build.gradle +++ b/modules/mariadb/build.gradle @@ -2,10 +2,4 @@ description = "Testcontainers :: JDBC :: MariaDB" dependencies { compile project(':jdbc') - - testCompile 'org.mariadb.jdbc:mariadb-java-client:2.4.1' - testCompile 'com.zaxxer:HikariCP-java6:2.3.13' - testCompile 'commons-dbutils:commons-dbutils:1.7' - testCompile 'org.apache.tomcat:tomcat-jdbc:9.0.19' - testCompile 'org.vibur:vibur-dbcp:22.2' } diff --git a/modules/mysql/build.gradle b/modules/mysql/build.gradle index e48c71734ae..3e16c3c3ff3 100644 --- a/modules/mysql/build.gradle +++ b/modules/mysql/build.gradle @@ -2,10 +2,4 @@ description = "Testcontainers :: JDBC :: MySQL" dependencies { compile project(':jdbc') - - testCompile 'mysql:mysql-connector-java:8.0.16' - testCompile 'com.zaxxer:HikariCP-java6:2.3.13' - testCompile 'org.apache.tomcat:tomcat-jdbc:9.0.20' - testCompile 'commons-dbutils:commons-dbutils:1.7' - testCompile 'org.vibur:vibur-dbcp:22.2' } diff --git a/modules/postgresql/build.gradle b/modules/postgresql/build.gradle index 0ef6df998e3..b63ec0ccb68 100644 --- a/modules/postgresql/build.gradle +++ b/modules/postgresql/build.gradle @@ -2,8 +2,4 @@ description = "Testcontainers :: JDBC :: PostgreSQL" dependencies { compile project(':jdbc') - - testCompile 'org.postgresql:postgresql:42.2.5' - testCompile 'commons-dbutils:commons-dbutils:1.7' - testCompile 'com.zaxxer:HikariCP-java6:2.3.13' } From 4fa19008ba401e6576b92119fc6b2c049ecc1ac3 Mon Sep 17 00:00:00 2001 From: Richard North Date: Mon, 27 May 2019 20:56:36 +0100 Subject: [PATCH 08/12] Move container configuration to constructor --- .../org/testcontainers/containers/CockroachContainer.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java b/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java index dd81a6bfd7c..229e324b87d 100644 --- a/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java +++ b/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java @@ -24,10 +24,7 @@ public CockroachContainer() { public CockroachContainer(final String dockerImageName) { super(dockerImageName); - } - @Override - protected void configure() { withExposedPorts(REST_API_PORT, DB_PORT); withEnv("COCKROACH_USER", username); withEnv("COCKROACH_DATABASE", databaseName); @@ -41,6 +38,10 @@ protected void configure() { withCommand("start --insecure"); } + @Override + protected void configure() { + } + @Override public String getDriverClassName() { return JDBC_DRIVER_CLASS_NAME; From be73c917c9a5b1b862cb84eb10322a4b2d999a3f Mon Sep 17 00:00:00 2001 From: Richard North Date: Mon, 27 May 2019 21:23:27 +0100 Subject: [PATCH 09/12] Add simple JUnit test for CockroachDB Use an appropriate default test database (see https://github.com/cockroachdb/cockroach/issues/19826#issuecomment-480293299) --- .../containers/CockroachContainer.java | 8 +--- .../junit/SimpleCockroachDBTest.java | 37 +++++++++++++++++++ 2 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 modules/jdbc-test/src/test/java/org/testcontainers/junit/SimpleCockroachDBTest.java diff --git a/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java b/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java index 229e324b87d..210d2074d58 100644 --- a/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java +++ b/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java @@ -7,14 +7,14 @@ public class CockroachContainer extends JdbcDatabaseContainer { public static final String NAME = "cockroach"; public static final String IMAGE = "cockroachdb/cockroach"; - public static final String IMAGE_TAG = "v1.1.2"; + public static final String IMAGE_TAG = "v19.1.1"; public static final String JDBC_DRIVER_CLASS_NAME = "org.postgresql.Driver"; public static final String JDBC_URL_PREFIX = "jdbc:postgresql"; public static final String TEST_QUERY_STRING = "SELECT 1"; public static final int REST_API_PORT = 8080; public static final int DB_PORT = 26257; - private String databaseName = "test"; + private String databaseName = "postgres"; private String username = "root"; private String password = ""; @@ -38,10 +38,6 @@ public CockroachContainer(final String dockerImageName) { withCommand("start --insecure"); } - @Override - protected void configure() { - } - @Override public String getDriverClassName() { return JDBC_DRIVER_CLASS_NAME; diff --git a/modules/jdbc-test/src/test/java/org/testcontainers/junit/SimpleCockroachDBTest.java b/modules/jdbc-test/src/test/java/org/testcontainers/junit/SimpleCockroachDBTest.java new file mode 100644 index 00000000000..22efc8f2118 --- /dev/null +++ b/modules/jdbc-test/src/test/java/org/testcontainers/junit/SimpleCockroachDBTest.java @@ -0,0 +1,37 @@ +package org.testcontainers.junit; + +import org.junit.Test; +import org.testcontainers.containers.CockroachContainer; + +import java.sql.ResultSet; +import java.sql.SQLException; + +import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals; + +public class SimpleCockroachDBTest extends AbstractContainerDatabaseTest { + + @Test + public void testSimple() throws SQLException { + try (CockroachContainer cockroach = new CockroachContainer()) { + cockroach.start(); + + ResultSet resultSet = performQuery(cockroach, "SELECT 1"); + + int resultSetInt = resultSet.getInt(1); + assertEquals("A basic SELECT query succeeds", 1, resultSetInt); + } + } + + @Test + public void testExplicitInitScript() throws SQLException { + try (CockroachContainer cockroach = new CockroachContainer() + .withInitScript("somepath/init_postgresql.sql")) { + cockroach.start(); + + ResultSet resultSet = performQuery(cockroach, "SELECT foo FROM bar"); + + String firstColumnValue = resultSet.getString(1); + assertEquals("Value from init script should equal real value", "hello world", firstColumnValue); + } + } +} From b408f536aa35458be4da008a2583cc84bf18f217 Mon Sep 17 00:00:00 2001 From: Richard North Date: Mon, 27 May 2019 21:37:31 +0100 Subject: [PATCH 10/12] Disable noisy JUL logs from Postgres Driver --- .../testcontainers/junit/SimpleCockroachDBTest.java | 9 ++++++++- .../org/testcontainers/junit/SimplePostgreSQLTest.java | 10 +++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/modules/jdbc-test/src/test/java/org/testcontainers/junit/SimpleCockroachDBTest.java b/modules/jdbc-test/src/test/java/org/testcontainers/junit/SimpleCockroachDBTest.java index 22efc8f2118..c21a5ddfaf1 100644 --- a/modules/jdbc-test/src/test/java/org/testcontainers/junit/SimpleCockroachDBTest.java +++ b/modules/jdbc-test/src/test/java/org/testcontainers/junit/SimpleCockroachDBTest.java @@ -5,11 +5,18 @@ import java.sql.ResultSet; import java.sql.SQLException; +import java.util.logging.Level; +import java.util.logging.LogManager; import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals; public class SimpleCockroachDBTest extends AbstractContainerDatabaseTest { + static { + // Postgres JDBC driver uses JUL; disable it to avoid annoying, irrelevant, stderr logs during connection testing + LogManager.getLogManager().getLogger("").setLevel(Level.OFF); + } + @Test public void testSimple() throws SQLException { try (CockroachContainer cockroach = new CockroachContainer()) { @@ -25,7 +32,7 @@ public void testSimple() throws SQLException { @Test public void testExplicitInitScript() throws SQLException { try (CockroachContainer cockroach = new CockroachContainer() - .withInitScript("somepath/init_postgresql.sql")) { + .withInitScript("somepath/init_postgresql.sql")) { // CockroachDB is expected to be compatible with Postgres cockroach.start(); ResultSet resultSet = performQuery(cockroach, "SELECT foo FROM bar"); diff --git a/modules/jdbc-test/src/test/java/org/testcontainers/junit/SimplePostgreSQLTest.java b/modules/jdbc-test/src/test/java/org/testcontainers/junit/SimplePostgreSQLTest.java index c6685343c29..148aaa66dd8 100644 --- a/modules/jdbc-test/src/test/java/org/testcontainers/junit/SimplePostgreSQLTest.java +++ b/modules/jdbc-test/src/test/java/org/testcontainers/junit/SimplePostgreSQLTest.java @@ -5,14 +5,18 @@ import java.sql.ResultSet; import java.sql.SQLException; +import java.util.logging.Level; +import java.util.logging.LogManager; import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals; -/** - * @author richardnorth - */ public class SimplePostgreSQLTest extends AbstractContainerDatabaseTest { + static { + // Postgres JDBC driver uses JUL; disable it to avoid annoying, irrelevant, stderr logs during connection testing + LogManager.getLogManager().getLogger("").setLevel(Level.OFF); + } + @Test public void testSimple() throws SQLException { try (PostgreSQLContainer postgres = new PostgreSQLContainer<>()) { From dbe6069a6d6ecd2ec00ca396adc365172ab955cd Mon Sep 17 00:00:00 2001 From: Richard North Date: Sat, 28 Sep 2019 20:59:41 +0100 Subject: [PATCH 11/12] Add minimal docs for CockroachDB module Rename module to `cockroachdb` --- docs/modules/databases/cockroachdb.md | 26 +++++++++++++++++++ mkdocs.yml | 1 + .../{cockroach => cockroachdb}/build.gradle | 0 .../containers/CockroachContainer.java | 0 .../CockroachContainerProvider.java | 0 ...s.containers.JdbcDatabaseContainerProvider | 0 modules/jdbc-test/build.gradle | 2 +- 7 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 docs/modules/databases/cockroachdb.md rename modules/{cockroach => cockroachdb}/build.gradle (100%) rename modules/{cockroach => cockroachdb}/src/main/java/org/testcontainers/containers/CockroachContainer.java (100%) rename modules/{cockroach => cockroachdb}/src/main/java/org/testcontainers/containers/CockroachContainerProvider.java (100%) rename modules/{cockroach => cockroachdb}/src/main/resources/META-INF/services/org.testcontainers.containers.JdbcDatabaseContainerProvider (100%) diff --git a/docs/modules/databases/cockroachdb.md b/docs/modules/databases/cockroachdb.md new file mode 100644 index 00000000000..d9e6def4e48 --- /dev/null +++ b/docs/modules/databases/cockroachdb.md @@ -0,0 +1,26 @@ +# CockroachDB Module + +!!! note + This module is INCUBATING. While it is ready for use and operational in the current version of Testcontainers, it is possible that it may receive breaking changes in the future. See [our contributing guidelines](/contributing/#incubating-modules) for more information on our incubating modules policy. + +See [Database containers](./index.md) for documentation and usage that is common to all relational database container types. + +## Adding this module to your project dependencies + +Add the following dependency to your `pom.xml`/`build.gradle` file: + +```groovy tab='Gradle' +testCompile "org.testcontainers:cockroachdb:{{latest_version}}" +``` + +```xml tab='Maven' + + org.testcontainers + cockroachdb + {{latest_version}} + test + +``` + +!!! hint + Adding this Testcontainers library JAR will not automatically add a database driver JAR to your project. You should ensure that your project also has a suitable database driver as a dependency. diff --git a/mkdocs.yml b/mkdocs.yml index 39d2c8d8164..dffe4810bd3 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -40,6 +40,7 @@ nav: - Databases: - modules/databases/index.md - modules/databases/cassandra.md + - modules/databases/cockroachdb.md - modules/databases/couchbase.md - modules/databases/clickhouse.md - modules/databases/db2.md diff --git a/modules/cockroach/build.gradle b/modules/cockroachdb/build.gradle similarity index 100% rename from modules/cockroach/build.gradle rename to modules/cockroachdb/build.gradle diff --git a/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java b/modules/cockroachdb/src/main/java/org/testcontainers/containers/CockroachContainer.java similarity index 100% rename from modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainer.java rename to modules/cockroachdb/src/main/java/org/testcontainers/containers/CockroachContainer.java diff --git a/modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainerProvider.java b/modules/cockroachdb/src/main/java/org/testcontainers/containers/CockroachContainerProvider.java similarity index 100% rename from modules/cockroach/src/main/java/org/testcontainers/containers/CockroachContainerProvider.java rename to modules/cockroachdb/src/main/java/org/testcontainers/containers/CockroachContainerProvider.java diff --git a/modules/cockroach/src/main/resources/META-INF/services/org.testcontainers.containers.JdbcDatabaseContainerProvider b/modules/cockroachdb/src/main/resources/META-INF/services/org.testcontainers.containers.JdbcDatabaseContainerProvider similarity index 100% rename from modules/cockroach/src/main/resources/META-INF/services/org.testcontainers.containers.JdbcDatabaseContainerProvider rename to modules/cockroachdb/src/main/resources/META-INF/services/org.testcontainers.containers.JdbcDatabaseContainerProvider diff --git a/modules/jdbc-test/build.gradle b/modules/jdbc-test/build.gradle index 5ddbd9df166..842f2a761eb 100644 --- a/modules/jdbc-test/build.gradle +++ b/modules/jdbc-test/build.gradle @@ -7,7 +7,7 @@ repositories { dependencies { compile project(':mysql') compile project(':postgresql') - compile project(':cockroach') + compile project(':cockroachdb') compile project(':mariadb') compile project(':oracle-xe') compile project(':mssqlserver') From 17a77289ade8269deb5f3d21a3a1dde16d0a2af6 Mon Sep 17 00:00:00 2001 From: Richard North Date: Thu, 3 Oct 2019 12:47:46 +0100 Subject: [PATCH 12/12] Disable use of withUsername/withPassword/withDatabaseName methods Since there is no current way to make them do what we want --- .../containers/CockroachContainer.java | 31 ++++++++----------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/modules/cockroachdb/src/main/java/org/testcontainers/containers/CockroachContainer.java b/modules/cockroachdb/src/main/java/org/testcontainers/containers/CockroachContainer.java index 210d2074d58..fb13ced60d7 100644 --- a/modules/cockroachdb/src/main/java/org/testcontainers/containers/CockroachContainer.java +++ b/modules/cockroachdb/src/main/java/org/testcontainers/containers/CockroachContainer.java @@ -8,11 +8,11 @@ public class CockroachContainer extends JdbcDatabaseContainer