Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,4 @@ public String getTestQueryString() {
return TEST_QUERY;
}

@Override
public ClickHouseContainer withUrlParam(String paramName, String paramValue) {
throw new UnsupportedOperationException("The ClickHouse does not support this");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,7 @@ public String getDriverClassName() {

@Override
public String getJdbcUrl() {
String additionalUrlParams = constructUrlParameters("?", "&");
return JDBC_URL_PREFIX + "://" + getHost() + ":" + getMappedPort(DB_PORT) +
"/" + databaseName + additionalUrlParams;
return JDBC_URL_PREFIX + "://" + getHost() + ":" + getMappedPort(DB_PORT) + "/" + databaseName;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@
import java.util.logging.Level;
import java.util.logging.LogManager;

import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.assertThat;
import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals;

public class SimpleCockroachDBTest extends AbstractContainerDatabaseTest {
Expand Down Expand Up @@ -44,22 +42,4 @@ public void testExplicitInitScript() throws SQLException {
assertEquals("Value from init script should equal real value", "hello world", firstColumnValue);
}
}

@Test
public void testWithAdditionalUrlParamInJdbcUrl() {
CockroachContainer cockroach = new CockroachContainer()
.withUrlParam("sslmode", "disable")
.withUrlParam("application_name", "cockroach");

try {
cockroach.start();
String jdbcUrl = cockroach.getJdbcUrl();
assertThat(jdbcUrl, containsString("?"));
assertThat(jdbcUrl, containsString("&"));
assertThat(jdbcUrl, containsString("sslmode=disable"));
assertThat(jdbcUrl, containsString("application_name=cockroach"));
} finally {
cockroach.stop();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,7 @@ public String getDriverClassName() {

@Override
public String getJdbcUrl() {
String additionalUrlParams = constructUrlParameters(":", ";", ";");
return "jdbc:db2://" + getHost() + ":" + getMappedPort(DB2_PORT) +
"/" + databaseName + additionalUrlParams;
return "jdbc:db2://" + getHost() + ":" + getMappedPort(DB2_PORT) + "/" + databaseName;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@
import java.sql.ResultSet;
import java.sql.SQLException;

import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.assertThat;
import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals;

public class SimpleDb2Test extends AbstractContainerDatabaseTest {
Expand All @@ -26,17 +24,4 @@ public void testSimple() throws SQLException {
assertEquals("A basic SELECT query succeeds", 1, resultSetInt);
}
}

@Test
public void testWithAdditionalUrlParamInJdbcUrl() {
try (Db2Container db2 = new Db2Container()
.withUrlParam("sslConnection", "false")
.acceptLicense()) {

db2.start();

String jdbcUrl = db2.getJdbcUrl();
assertThat(jdbcUrl, containsString(":sslConnection=false;"));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.github.dockerjava.api.command.InspectContainerResponse;
import lombok.NonNull;
import org.apache.commons.lang.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.testcontainers.containers.traits.LinkableContainer;
import org.testcontainers.delegate.DatabaseDelegate;
Expand All @@ -18,8 +17,6 @@
import java.util.Properties;
import java.util.concurrent.Future;

import static java.util.stream.Collectors.joining;

/**
* Base class for containers that expose a JDBC connection
*
Expand All @@ -31,7 +28,6 @@ public abstract class JdbcDatabaseContainer<SELF extends JdbcDatabaseContainer<S
private Driver driver;
private String initScriptPath;
protected Map<String, String> parameters = new HashMap<>();
protected Map<String, String> urlParameters = new HashMap<>();

private int startupTimeoutSeconds = 120;
private int connectTimeoutSeconds = 120;
Expand Down Expand Up @@ -86,11 +82,7 @@ public SELF withPassword(String password) {

public SELF withDatabaseName(String dbName) {
throw new UnsupportedOperationException();
}

public SELF withUrlParam(String paramName, String paramValue) {
urlParameters.put(paramName, paramValue);
return self();
}

/**
Expand Down Expand Up @@ -231,21 +223,6 @@ protected String constructUrlForConnection(String queryString) {
return getJdbcUrl() + queryString;
}

protected String constructUrlParameters(String startCharacter, String delimiter) {
return constructUrlParameters(startCharacter, delimiter, StringUtils.EMPTY);
}

protected String constructUrlParameters(String startCharacter, String delimiter, String endCharacter) {
String urlParameters = "";
if (!this.urlParameters.isEmpty()) {
String additionalParameters = this.urlParameters.entrySet().stream()
.map(Object::toString)
.collect(joining(delimiter));
urlParameters = startCharacter + additionalParameters + endCharacter;
}
return urlParameters;
}

protected void optionallyMapResourceParameterAsVolume(@NotNull String paramName, @NotNull String pathNameInContainer, @NotNull String defaultResource) {
String resourceName = parameters.getOrDefault(paramName, defaultResource);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,7 @@ public String getDriverClassName() {

@Override
public String getJdbcUrl() {
String additionalUrlParams = constructUrlParameters("?", "&");
return "jdbc:mariadb://" + getHost() + ":" + getMappedPort(MARIADB_PORT) +
"/" + databaseName + additionalUrlParams;
return "jdbc:mariadb://" + getHost() + ":" + getMappedPort(MARIADB_PORT) + "/" + databaseName;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@
import java.sql.ResultSet;
import java.sql.SQLException;

import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.assertThat;
import static org.junit.Assume.assumeFalse;
import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals;
import static org.rnorth.visibleassertions.VisibleAssertions.assertTrue;
Expand Down Expand Up @@ -70,22 +68,4 @@ public void testMariaDBWithCommandOverride() throws SQLException {
assertEquals("Auto increment increment should be overriden by command line", "10", result);
}
}

@Test
public void testWithAdditionalUrlParamInJdbcUrl() {
MariaDBContainer mariaDBContainer = (MariaDBContainer) new MariaDBContainer()
.withUrlParam("connectTimeout", "40000")
.withUrlParam("rewriteBatchedStatements", "true");

try {
mariaDBContainer.start();
String jdbcUrl = mariaDBContainer.getJdbcUrl();
assertThat(jdbcUrl, containsString("?"));
assertThat(jdbcUrl, containsString("&"));
assertThat(jdbcUrl, containsString("rewriteBatchedStatements=true"));
assertThat(jdbcUrl, containsString("connectTimeout=40000"));
} finally {
mariaDBContainer.stop();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,7 @@ public String getDriverClassName() {

@Override
public String getJdbcUrl() {
String additionalUrlParams = constructUrlParameters(";", ";");
return "jdbc:sqlserver://" + getHost() + ":" + getMappedPort(MS_SQL_SERVER_PORT) + additionalUrlParams;
return "jdbc:sqlserver://" + getHost() + ":" + getMappedPort(MS_SQL_SERVER_PORT);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@
import java.sql.SQLException;
import java.sql.Statement;

import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.assertThat;
import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals;

public class SimpleMSSQLServerTest extends AbstractContainerDatabaseTest {
Expand All @@ -26,20 +24,6 @@ public void testSimple() throws SQLException {
}
}

@Test
public void testWithAdditionalUrlParamInJdbcUrl() {
try (MSSQLServerContainer<?> mssqlServer = new MSSQLServerContainer<>()
.withUrlParam("integratedSecurity", "false")
.withUrlParam("applicationName", "MyApp")) {

mssqlServer.start();

String jdbcUrl = mssqlServer.getJdbcUrl();
assertThat(jdbcUrl, containsString(";integratedSecurity=false;applicationName=MyApp"));
}
}


@Test
public void testSetupDatabase() throws SQLException {
try (MSSQLServerContainer<?> mssqlServer = new MSSQLServerContainer<>()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@
import java.util.HashSet;
import java.util.Set;

import static java.util.stream.Collectors.joining;

/**
* @author richardnorth
*/
Expand Down Expand Up @@ -72,9 +70,7 @@ public String getDriverClassName() {

@Override
public String getJdbcUrl() {
String additionalUrlParams = constructUrlParameters("?", "&");
return "jdbc:mysql://" + getHost() + ":" + getMappedPort(MYSQL_PORT) +
"/" + databaseName + additionalUrlParams;
return "jdbc:mysql://" + getHost() + ":" + getMappedPort(MYSQL_PORT) + "/" + databaseName;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,9 @@
import org.testcontainers.containers.output.Slf4jLogConsumer;
import org.testcontainers.db.AbstractContainerDatabaseTest;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.temporal.ChronoUnit;

import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.assertThat;

import static org.junit.Assert.fail;
import static org.junit.Assume.assumeFalse;
import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals;
Expand Down Expand Up @@ -150,77 +142,4 @@ public void testEmptyPasswordWithRootUser() throws SQLException {
assertEquals("A basic SELECT query succeeds", 1, resultSetInt);
}
}

@Test
public void testWithAdditionalUrlParamTimeZone() throws SQLException {
MySQLContainer mysql = (MySQLContainer) new MySQLContainer()
.withUrlParam("serverTimezone", "Europe/Zurich")
.withEnv("TZ", "Europe/Zurich")
.withLogConsumer(new Slf4jLogConsumer(logger));
mysql.start();

try(Connection connection = mysql.createConnection("")) {
Statement statement = connection.createStatement();
statement.execute("SELECT NOW();");
try (ResultSet resultSet = statement.getResultSet()) {
resultSet.next();

// checking that the time_zone MySQL is Europe/Zurich
LocalDateTime localDateTime = resultSet.getObject(1, LocalDateTime.class);
ZonedDateTime actualDateTime = localDateTime.atZone(ZoneId.of("Europe/Zurich"))
.truncatedTo(ChronoUnit.MINUTES);
ZonedDateTime expectedDateTime = ZonedDateTime.now(ZoneId.of("Europe/Zurich"))
.truncatedTo(ChronoUnit.MINUTES);

String message = String.format("MySQL time zone is not Europe/Zurich. MySQL date:%s, current date:%s",
actualDateTime, expectedDateTime);
assertTrue(message, actualDateTime.equals(expectedDateTime));
}
} finally {
mysql.stop();
}
}

@Test
public void testWithAdditionalUrlParamMultiQueries() throws SQLException {
MySQLContainer mysql = (MySQLContainer) new MySQLContainer()
.withUrlParam("allowMultiQueries", "true")
.withLogConsumer(new Slf4jLogConsumer(logger));
mysql.start();

try(Connection connection = mysql.createConnection("")) {
Statement statement = connection.createStatement();
String multiQuery = "DROP TABLE IF EXISTS bar; " +
"CREATE TABLE bar (foo VARCHAR(20)); " +
"INSERT INTO bar (foo) VALUES ('hello world');";
statement.execute(multiQuery);
statement.execute("SELECT foo FROM bar;");
try(ResultSet resultSet = statement.getResultSet()) {
resultSet.next();
String firstColumnValue = resultSet.getString(1);
assertEquals("Value from bar should equal real value", "hello world", firstColumnValue);
}
} finally {
mysql.stop();
}
}

@Test
public void testWithAdditionalUrlParamInJdbcUrl() {
MySQLContainer mysql = (MySQLContainer) new MySQLContainer()
.withUrlParam("allowMultiQueries", "true")
.withUrlParam("rewriteBatchedStatements", "true")
.withLogConsumer(new Slf4jLogConsumer(logger));

try {
mysql.start();
String jdbcUrl = mysql.getJdbcUrl();
assertThat(jdbcUrl, containsString("?"));
assertThat(jdbcUrl, containsString("&"));
assertThat(jdbcUrl, containsString("rewriteBatchedStatements=true"));
assertThat(jdbcUrl, containsString("allowMultiQueries=true"));
} finally {
mysql.stop();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -89,11 +89,6 @@ public OracleContainer withPassword(String password) {
return self();
}

@Override
public OracleContainer withUrlParam(String paramName, String paramValue) {
throw new UnsupportedOperationException("The OracleDb does not support this");
}

@SuppressWarnings("SameReturnValue")
public String getSid() {
return "xe";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,6 @@ protected Set<Integer> getLivenessCheckPorts() {

@Override
protected void configure() {
// Disable Postgres driver use of java.util.logging to reduce noise at startup time
withUrlParam("loggerLevel", "OFF");
addEnv("POSTGRES_DB", databaseName);
addEnv("POSTGRES_USER", username);
addEnv("POSTGRES_PASSWORD", password);
Expand All @@ -69,9 +67,25 @@ public String getDriverClassName() {

@Override
public String getJdbcUrl() {
String additionalUrlParams = constructUrlParameters("?", "&");
return "jdbc:postgresql://" + getContainerIpAddress() + ":" + getMappedPort(POSTGRESQL_PORT)
+ "/" + databaseName + additionalUrlParams;
// Disable Postgres driver use of java.util.logging to reduce noise at startup time
return format("jdbc:postgresql://%s:%d/%s?loggerLevel=OFF", getHost(), getMappedPort(POSTGRESQL_PORT), databaseName);
}

@Override
protected String constructUrlForConnection(String queryString) {
String baseUrl = getJdbcUrl();

if ("".equals(queryString)) {
return baseUrl;
}

if (!queryString.startsWith("?")) {
throw new IllegalArgumentException("The '?' character must be included");
}

return baseUrl.contains("?")
? baseUrl + QUERY_PARAM_SEPARATOR + queryString.substring(1)
: baseUrl + queryString;
}

@Override
Expand Down
Loading