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 f429d07
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package org.testcontainers.jdbc;

import org.junit.AfterClass;
import org.junit.Test;
import org.testcontainers.containers.JdbcDatabaseContainer;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import static org.rnorth.visibleassertions.VisibleAssertions.*;

/**
* Created by inikolaev on 08/06/2017.
*/
public class DatabaseDriverTest {
@AfterClass
public static void testCleanup() {
ContainerDatabaseDriver.killContainers();
}

@Test
public void shouldStopContainerWhenAllConnectionsClosed() throws SQLException {
final String jdbcUrl = "jdbc:tc:postgresql://hostname/databasename";

getConnectionAndClose(jdbcUrl);

JdbcDatabaseContainer<?> container = ContainerDatabaseDriver.getContainer(jdbcUrl);
assertNull("Database container instance is null as expected", container);
}

@Test
public void shouldNotStopDaemonContainerWhenAllConnectionsClosed() throws SQLException {
final String jdbcUrl = "jdbc:tc:postgresql://hostname/databasename?TC_DAEMON=true";

getConnectionAndClose(jdbcUrl);

JdbcDatabaseContainer<?> container = ContainerDatabaseDriver.getContainer(jdbcUrl);
assertNotNull("Database container instance is not null as expected", container);
assertTrue("Database container is running as expected", container.isRunning());
}

private void getConnectionAndClose(String jdbcUrl) throws SQLException {
try (Connection connection = DriverManager.getConnection(jdbcUrl)) {
assertNotNull("Obtained connection as expected", connection);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.testcontainers.jdbc;

import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Charsets;
import com.google.common.io.Resources;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -317,4 +318,16 @@ public static void killContainer(String jdbcUrl) {
}
}
}

/**
* 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
*/
@VisibleForTesting
public static JdbcDatabaseContainer getContainer(String jdbcUrl) {
synchronized (jdbcUrlContainerCache) {
return jdbcUrlContainerCache.get(jdbcUrl);
}
}
}

0 comments on commit f429d07

Please sign in to comment.