99import org .junit .runner .RunWith ;
1010import org .junit .runners .Parameterized ;
1111import org .junit .runners .Parameterized .Parameter ;
12+ import org .testcontainers .containers .JdbcDatabaseContainer ;
1213
1314import java .sql .Connection ;
1415import java .sql .ResultSet ;
1819import static java .util .Arrays .asList ;
1920import static org .junit .Assume .assumeFalse ;
2021import static org .rnorth .visibleassertions .VisibleAssertions .assertEquals ;
22+ import static org .rnorth .visibleassertions .VisibleAssertions .assertNotNull ;
23+ import static org .rnorth .visibleassertions .VisibleAssertions .assertNull ;
2124import 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 -> {
0 commit comments