Skip to content

Commit 55f7ff6

Browse files
committed
Add tests for TC_DAEMON parameter
1 parent 27d7ef7 commit 55f7ff6

2 files changed

Lines changed: 43 additions & 13 deletions

File tree

modules/jdbc-test/src/test/java/org/testcontainers/jdbc/JDBCDriverTest.java

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.junit.runner.RunWith;
1010
import org.junit.runners.Parameterized;
1111
import org.junit.runners.Parameterized.Parameter;
12+
import org.testcontainers.containers.JdbcDatabaseContainer;
1213

1314
import java.sql.Connection;
1415
import java.sql.ResultSet;
@@ -18,6 +19,8 @@
1819
import static java.util.Arrays.asList;
1920
import static org.junit.Assume.assumeFalse;
2021
import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals;
22+
import static org.rnorth.visibleassertions.VisibleAssertions.assertNotNull;
23+
import static org.rnorth.visibleassertions.VisibleAssertions.assertNull;
2124
import static org.rnorth.visibleassertions.VisibleAssertions.assertTrue;
2225

2326
@RunWith(Parameterized.class)
@@ -31,24 +34,28 @@ public class JDBCDriverTest {
3134
public boolean performTestForCharacterSet;
3235
@Parameter(3)
3336
public boolean performTestForCustomIniFile;
37+
@Parameter(4)
38+
public boolean verifyContainerIsStillRunning;
39+
3440

3541
@Parameterized.Parameters(name = "{index} - {0}")
3642
public static Iterable<Object[]> data() {
3743
return asList(
3844
new Object[][]{
39-
{"jdbc:tc:mysql:5.5.43://hostname/databasename", false, false, false},
40-
{"jdbc:tc:mysql://hostname/databasename?TC_INITSCRIPT=somepath/init_mysql.sql", true, false, false},
41-
{"jdbc:tc:mysql://hostname/databasename?TC_INITFUNCTION=org.testcontainers.jdbc.JDBCDriverTest::sampleInitFunction", true, false, false},
42-
{"jdbc:tc:mysql://hostname/databasename?useUnicode=yes&characterEncoding=utf8", false, true, false},
43-
{"jdbc:tc:mysql://hostname/databasename", false, false, false},
44-
{"jdbc:tc:postgresql://hostname/databasename", false, false, false},
45-
{"jdbc:tc:mariadb:10.1.16://hostname/databasename", false, false, false},
46-
{"jdbc:tc:mariadb://hostname/databasename", false, false, false},
47-
{"jdbc:tc:mariadb://hostname/databasename?useUnicode=yes&characterEncoding=utf8", false, true, false},
48-
{"jdbc:tc:mariadb://hostname/databasename?TC_INITSCRIPT=somepath/init_mariadb.sql", true, false, false},
49-
{"jdbc:tc:mariadb://hostname/databasename?TC_INITFUNCTION=org.testcontainers.jdbc.JDBCDriverTest::sampleInitFunction", true, false, false},
50-
{"jdbc:tc:mysql:5.6://hostname/databasename?TC_MY_CNF=somepath/mysql_conf_override", false, false, true},
51-
{"jdbc:tc:mariadb:10.1.16://hostname/databasename?TC_MY_CNF=somepath/mariadb_conf_override", false, false, true}
45+
{"jdbc:tc:mysql:5.5.43://hostname/databasename", false, false, false, false},
46+
{"jdbc:tc:mysql://hostname/databasename?TC_INITSCRIPT=somepath/init_mysql.sql", true, false, false, false},
47+
{"jdbc:tc:mysql://hostname/databasename?TC_INITFUNCTION=org.testcontainers.jdbc.JDBCDriverTest::sampleInitFunction", true, false, false, false},
48+
{"jdbc:tc:mysql://hostname/databasename?useUnicode=yes&characterEncoding=utf8", false, true, false, false},
49+
{"jdbc:tc:mysql://hostname/databasename", false, false, false, false},
50+
{"jdbc:tc:postgresql://hostname/databasename", false, false, false, false},
51+
{"jdbc:tc:mariadb:10.1.16://hostname/databasename", false, false, false, false},
52+
{"jdbc:tc:mariadb://hostname/databasename", false, false, false, false},
53+
{"jdbc:tc:mariadb://hostname/databasename?useUnicode=yes&characterEncoding=utf8", false, true, false, false},
54+
{"jdbc:tc:mariadb://hostname/databasename?TC_INITSCRIPT=somepath/init_mariadb.sql", true, false, false, false},
55+
{"jdbc:tc:mariadb://hostname/databasename?TC_INITFUNCTION=org.testcontainers.jdbc.JDBCDriverTest::sampleInitFunction", true, false, false, false},
56+
{"jdbc:tc:mysql:5.6://hostname/databasename?TC_MY_CNF=somepath/mysql_conf_override", false, false, true, false},
57+
{"jdbc:tc:mariadb:10.1.16://hostname/databasename?TC_MY_CNF=somepath/mariadb_conf_override", false, false, true, false},
58+
{"jdbc:tc:postgresql://hostname/databasename?TC_DAEMON=true", false, false, false, true}
5259
});
5360
}
5461

@@ -70,6 +77,7 @@ public static void testCleanup() {
7077
@Test
7178
public void test() throws SQLException {
7279
performSimpleTest(jdbcUrl);
80+
performContainerStatusCheck(jdbcUrl);
7381

7482
if (performTestForScriptedSchema) {
7583
performTestForScriptedSchema(jdbcUrl);
@@ -97,6 +105,17 @@ private void performSimpleTest(String jdbcUrl) throws SQLException {
97105
}
98106
}
99107

108+
private void performContainerStatusCheck(String jdbcUrl) {
109+
JdbcDatabaseContainer<?> container = ContainerDatabaseDriver.getContainer(jdbcUrl);
110+
111+
if (verifyContainerIsStillRunning) {
112+
assertNotNull("Database container instance is not null as expected", container);
113+
assertTrue("Database container is running as expected", container.isRunning());
114+
} else {
115+
assertNull("Database container instance is null as expected", container);
116+
}
117+
}
118+
100119
private void performTestForScriptedSchema(String jdbcUrl) throws SQLException {
101120
try (HikariDataSource dataSource = getDataSource(jdbcUrl, 1)) {
102121
boolean result = new QueryRunner(dataSource).query("SELECT foo FROM bar WHERE foo LIKE '%world'", rs -> {

modules/jdbc/src/main/java/org/testcontainers/jdbc/ContainerDatabaseDriver.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,4 +317,15 @@ public static void killContainer(String jdbcUrl) {
317317
}
318318
}
319319
}
320+
321+
/**
322+
* Package private utility method to get an instance of a database container given its JDBC URL.
323+
* @param jdbcUrl the JDBC URL of the container instance to get
324+
* @return an instance of database container or <code>null</code> if no container associated with JDBC URL
325+
*/
326+
static JdbcDatabaseContainer getContainer(String jdbcUrl) {
327+
synchronized (jdbcUrlContainerCache) {
328+
return jdbcUrlContainerCache.get(jdbcUrl);
329+
}
330+
}
320331
}

0 commit comments

Comments
 (0)