Skip to content

Commit

Permalink
Add tests for TC_DAEMON parameter
Browse files Browse the repository at this point in the history
  • Loading branch information
inikolaev committed Jun 8, 2017
1 parent 27d7ef7 commit 55f7ff6
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameter;
import org.testcontainers.containers.JdbcDatabaseContainer;

import java.sql.Connection;
import java.sql.ResultSet;
Expand All @@ -18,6 +19,8 @@
import static java.util.Arrays.asList;
import static org.junit.Assume.assumeFalse;
import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals;
import static org.rnorth.visibleassertions.VisibleAssertions.assertNotNull;
import static org.rnorth.visibleassertions.VisibleAssertions.assertNull;
import static org.rnorth.visibleassertions.VisibleAssertions.assertTrue;

@RunWith(Parameterized.class)
Expand All @@ -31,24 +34,28 @@ public class JDBCDriverTest {
public boolean performTestForCharacterSet;
@Parameter(3)
public boolean performTestForCustomIniFile;
@Parameter(4)
public boolean verifyContainerIsStillRunning;


@Parameterized.Parameters(name = "{index} - {0}")
public static Iterable<Object[]> data() {
return asList(
new Object[][]{
{"jdbc:tc:mysql:5.5.43://hostname/databasename", false, false, false},
{"jdbc:tc:mysql://hostname/databasename?TC_INITSCRIPT=somepath/init_mysql.sql", true, false, false},
{"jdbc:tc:mysql://hostname/databasename?TC_INITFUNCTION=org.testcontainers.jdbc.JDBCDriverTest::sampleInitFunction", true, false, false},
{"jdbc:tc:mysql://hostname/databasename?useUnicode=yes&characterEncoding=utf8", false, true, false},
{"jdbc:tc:mysql://hostname/databasename", false, false, false},
{"jdbc:tc:postgresql://hostname/databasename", false, false, false},
{"jdbc:tc:mariadb:10.1.16://hostname/databasename", false, false, false},
{"jdbc:tc:mariadb://hostname/databasename", false, false, false},
{"jdbc:tc:mariadb://hostname/databasename?useUnicode=yes&characterEncoding=utf8", false, true, false},
{"jdbc:tc:mariadb://hostname/databasename?TC_INITSCRIPT=somepath/init_mariadb.sql", true, false, false},
{"jdbc:tc:mariadb://hostname/databasename?TC_INITFUNCTION=org.testcontainers.jdbc.JDBCDriverTest::sampleInitFunction", true, false, false},
{"jdbc:tc:mysql:5.6://hostname/databasename?TC_MY_CNF=somepath/mysql_conf_override", false, false, true},
{"jdbc:tc:mariadb:10.1.16://hostname/databasename?TC_MY_CNF=somepath/mariadb_conf_override", false, false, true}
{"jdbc:tc:mysql:5.5.43://hostname/databasename", false, false, false, false},
{"jdbc:tc:mysql://hostname/databasename?TC_INITSCRIPT=somepath/init_mysql.sql", true, false, false, false},
{"jdbc:tc:mysql://hostname/databasename?TC_INITFUNCTION=org.testcontainers.jdbc.JDBCDriverTest::sampleInitFunction", true, false, false, false},
{"jdbc:tc:mysql://hostname/databasename?useUnicode=yes&characterEncoding=utf8", false, true, false, false},
{"jdbc:tc:mysql://hostname/databasename", false, false, false, false},
{"jdbc:tc:postgresql://hostname/databasename", false, false, false, false},
{"jdbc:tc:mariadb:10.1.16://hostname/databasename", false, false, false, false},
{"jdbc:tc:mariadb://hostname/databasename", false, false, false, false},
{"jdbc:tc:mariadb://hostname/databasename?useUnicode=yes&characterEncoding=utf8", false, true, false, false},
{"jdbc:tc:mariadb://hostname/databasename?TC_INITSCRIPT=somepath/init_mariadb.sql", true, false, false, false},
{"jdbc:tc:mariadb://hostname/databasename?TC_INITFUNCTION=org.testcontainers.jdbc.JDBCDriverTest::sampleInitFunction", true, false, false, false},
{"jdbc:tc:mysql:5.6://hostname/databasename?TC_MY_CNF=somepath/mysql_conf_override", false, false, true, false},
{"jdbc:tc:mariadb:10.1.16://hostname/databasename?TC_MY_CNF=somepath/mariadb_conf_override", false, false, true, false},
{"jdbc:tc:postgresql://hostname/databasename?TC_DAEMON=true", false, false, false, true}
});
}

Expand All @@ -70,6 +77,7 @@ public static void testCleanup() {
@Test
public void test() throws SQLException {
performSimpleTest(jdbcUrl);
performContainerStatusCheck(jdbcUrl);

if (performTestForScriptedSchema) {
performTestForScriptedSchema(jdbcUrl);
Expand Down Expand Up @@ -97,6 +105,17 @@ private void performSimpleTest(String jdbcUrl) throws SQLException {
}
}

private void performContainerStatusCheck(String jdbcUrl) {
JdbcDatabaseContainer<?> container = ContainerDatabaseDriver.getContainer(jdbcUrl);

if (verifyContainerIsStillRunning) {
assertNotNull("Database container instance is not null as expected", container);
assertTrue("Database container is running as expected", container.isRunning());
} else {
assertNull("Database container instance is null as expected", container);
}
}

private void performTestForScriptedSchema(String jdbcUrl) throws SQLException {
try (HikariDataSource dataSource = getDataSource(jdbcUrl, 1)) {
boolean result = new QueryRunner(dataSource).query("SELECT foo FROM bar WHERE foo LIKE '%world'", rs -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -317,4 +317,15 @@ public static void killContainer(String jdbcUrl) {
}
}
}

/**
* Package private utility method to get an instance of a database container given its JDBC URL.
* @param jdbcUrl the JDBC URL of the container instance to get
* @return an instance of database container or <code>null</code> if no container associated with JDBC URL
*/
static JdbcDatabaseContainer getContainer(String jdbcUrl) {
synchronized (jdbcUrlContainerCache) {
return jdbcUrlContainerCache.get(jdbcUrl);
}
}
}

0 comments on commit 55f7ff6

Please sign in to comment.