diff --git a/pom.xml b/pom.xml
index 2e199e5bc..7139b6a76 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,6 +25,7 @@
1.5
1.4.196
4.12
+ 1.12.0
com.zaxxer
@@ -97,6 +98,12 @@
${log4j.version}
test
+
+ org.testcontainers
+ postgresql
+ ${testcontainers.version}
+ test
+
org.apache.commons
commons-csv
diff --git a/src/test/java/com/zaxxer/hikari/pool/PostgresTest.java b/src/test/java/com/zaxxer/hikari/pool/PostgresTest.java
index 693e7b336..b45502770 100644
--- a/src/test/java/com/zaxxer/hikari/pool/PostgresTest.java
+++ b/src/test/java/com/zaxxer/hikari/pool/PostgresTest.java
@@ -38,28 +38,30 @@
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import com.zaxxer.hikari.util.UtilityElf;
+import org.junit.Rule;
+import org.junit.Test;
+import org.testcontainers.containers.PostgreSQLContainer;
/**
- * This test is meant to be run manually and interactively and was
- * build for issue #159.
+ * This test was built for issue #159.
*
* @author Brett Wooldridge
*/
public class PostgresTest
{
- //@Test
+ @Rule
+ public PostgreSQLContainer postgres = new PostgreSQLContainer<>();
+
+ @Test
public void testCase1() throws Exception
{
- HikariConfig config = newHikariConfig();
+ HikariConfig config = createConfig(postgres);
config.setMinimumIdle(3);
config.setMaximumPoolSize(10);
config.setConnectionTimeout(3000);
config.setIdleTimeout(TimeUnit.SECONDS.toMillis(10));
config.setValidationTimeout(TimeUnit.SECONDS.toMillis(2));
- config.setJdbcUrl("jdbc:pgsql://localhost:5432/test");
- config.setUsername("brettw");
-
try (final HikariDataSource ds = new HikariDataSource(config)) {
final long start = currentTime();
do {
@@ -82,18 +84,15 @@ public void run() {
}
}
- //@Test
+ @Test
public void testCase2() throws Exception
{
- HikariConfig config = newHikariConfig();
+ HikariConfig config = createConfig(postgres);
config.setMinimumIdle(3);
config.setMaximumPoolSize(10);
config.setConnectionTimeout(1000);
config.setIdleTimeout(TimeUnit.SECONDS.toMillis(60));
- config.setJdbcUrl("jdbc:pgsql://localhost:5432/test");
- config.setUsername("brettw");
-
try (HikariDataSource ds = new HikariDataSource(config)) {
try (Connection conn = ds.getConnection()) {
@@ -127,18 +126,15 @@ public void testCase2() throws Exception
System.err.println("\nPassed.");
}
- //@Test
+ @Test
public void testCase3() throws Exception
{
- HikariConfig config = newHikariConfig();
+ HikariConfig config = createConfig(postgres);
config.setMinimumIdle(3);
config.setMaximumPoolSize(10);
config.setConnectionTimeout(1000);
config.setIdleTimeout(TimeUnit.SECONDS.toMillis(60));
- config.setJdbcUrl("jdbc:pgsql://localhost:5432/test");
- config.setUsername("brettw");
-
try (final HikariDataSource ds = new HikariDataSource(config)) {
for (int i = 0; i < 10; i++) {
new Thread() {
@@ -162,10 +158,10 @@ public void run() {
}
}
- // @Test
+ @Test
public void testCase4() throws Exception
{
- HikariConfig config = newHikariConfig();
+ HikariConfig config = createConfig(postgres);
config.setMinimumIdle(0);
config.setMaximumPoolSize(15);
config.setConnectionTimeout(10000);
@@ -173,9 +169,6 @@ public void testCase4() throws Exception
config.setMaxLifetime(TimeUnit.MINUTES.toMillis(2));
config.setRegisterMbeans(true);
- config.setJdbcUrl("jdbc:postgresql://localhost:5432/netld");
- config.setUsername("brettw");
-
try (final HikariDataSource ds = new HikariDataSource(config)) {
countdown(20);
@@ -228,4 +221,13 @@ private void countdown(int seconds)
}
} while (seconds > 0);
}
+
+ static private HikariConfig createConfig(PostgreSQLContainer postgres) {
+ HikariConfig config = newHikariConfig();
+ config.setJdbcUrl(postgres.getJdbcUrl());
+ config.setUsername(postgres.getUsername());
+ config.setPassword(postgres.getPassword());
+ return config;
+ }
+
}