Skip to content

Commit

Permalink
Revert "Added additional url params in JdbcDatabaseContainer (#1802) (#…
Browse files Browse the repository at this point in the history
…1874)"

This reverts commit 206c5f6.
  • Loading branch information
rnorth committed May 21, 2020
1 parent c0fc42f commit 7edccb1
Show file tree
Hide file tree
Showing 16 changed files with 26 additions and 222 deletions.
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");
}
}
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
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();
}
}
}
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
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;"));
}
}
}
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
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
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();
}
}
}
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
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
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
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();
}
}
}
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
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

0 comments on commit 7edccb1

Please sign in to comment.