Skip to content

Commit fdf33ed

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

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package org.testcontainers.jdbc;
2+
3+
import org.junit.AfterClass;
4+
import org.junit.Test;
5+
import org.testcontainers.containers.JdbcDatabaseContainer;
6+
7+
import java.sql.Connection;
8+
import java.sql.DriverManager;
9+
import java.sql.SQLException;
10+
11+
import static org.rnorth.visibleassertions.VisibleAssertions.assertNotNull;
12+
import static org.rnorth.visibleassertions.VisibleAssertions.assertNull;
13+
import static org.rnorth.visibleassertions.VisibleAssertions.assertTrue;
14+
15+
/**
16+
* Created by inikolaev on 08/06/2017.
17+
*/
18+
public class DatabaseDriverTest {
19+
@AfterClass
20+
public static void testCleanup() {
21+
ContainerDatabaseDriver.killContainers();
22+
}
23+
24+
@Test
25+
public void shouldStopContainerWhenAllConnectionsClosed() throws SQLException {
26+
final String jdbcUrl = "jdbc:tc:postgresql://hostname/databasename";
27+
28+
getConnectionAndClose(jdbcUrl);
29+
30+
JdbcDatabaseContainer<?> container = ContainerDatabaseDriver.getContainer(jdbcUrl);
31+
assertNull("Database container instance is null as expected", container);
32+
}
33+
34+
@Test
35+
public void shouldNotStopDaemonContainerWhenAllConnectionsClosed() throws SQLException {
36+
final String jdbcUrl = "jdbc:tc:postgresql://hostname/databasename?TC_DAEMON=true";
37+
38+
getConnectionAndClose(jdbcUrl);
39+
40+
JdbcDatabaseContainer<?> container = ContainerDatabaseDriver.getContainer(jdbcUrl);
41+
assertNotNull("Database container instance is not null as expected", container);
42+
assertTrue("Database container is running as expected", container.isRunning());
43+
}
44+
45+
private void getConnectionAndClose(String jdbcUrl) throws SQLException {
46+
try (Connection connection = DriverManager.getConnection(jdbcUrl)) {
47+
assertNotNull("Obtained connection as expected", connection);
48+
}
49+
}
50+
}

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.testcontainers.jdbc;
22

3+
import com.google.common.annotations.VisibleForTesting;
34
import com.google.common.base.Charsets;
45
import com.google.common.io.Resources;
56
import org.slf4j.LoggerFactory;
@@ -317,4 +318,16 @@ public static void killContainer(String jdbcUrl) {
317318
}
318319
}
319320
}
321+
322+
/**
323+
* Utility method to get an instance of a database container given its JDBC URL.
324+
* @param jdbcUrl the JDBC URL of the container instance to get
325+
* @return an instance of database container or <code>null</code> if no container associated with JDBC URL
326+
*/
327+
@VisibleForTesting
328+
public static JdbcDatabaseContainer getContainer(String jdbcUrl) {
329+
synchronized (jdbcUrlContainerCache) {
330+
return jdbcUrlContainerCache.get(jdbcUrl);
331+
}
332+
}
320333
}

0 commit comments

Comments
 (0)