Skip to content

Commit

Permalink
Fail gracefully if no JDBC driver found (#1434)
Browse files Browse the repository at this point in the history
* WIP

* Simplify code

* Ensure that HikariCP uses the correct driver
(Auto-selected driver on classpath seems to be MariaDB; seemingly not compatible with 8.0.16 of MySQL)

* Cleanup old Hikari pools after use
to avoid reconnection attempts to dead containers after test has already completed

* Update following review comments
  • Loading branch information
rnorth authored and bsideup committed Jul 21, 2019
1 parent 151b93a commit f1565f1
Show file tree
Hide file tree
Showing 31 changed files with 229 additions and 227 deletions.
Expand Up @@ -9,7 +9,7 @@ public ContainerLaunchException(String message) {
super(message);
}

public ContainerLaunchException(String message, Exception exception) {
super(message, exception);
public ContainerLaunchException(String message, Throwable cause) {
super(message, cause);
}
}
2 changes: 0 additions & 2 deletions core/src/test/resources/logback-test.xml
Expand Up @@ -14,10 +14,8 @@

<logger name="org.testcontainers" level="DEBUG"/>

<logger name="org.apache.http" level="WARN"/>
<logger name="com.github.dockerjava" level="WARN"/>
<logger name="org.zeroturnaround.exec" level="WARN"/>
<logger name="io.netty" level="WARN" />
<logger name="org.testcontainers.shaded" level="WARN"/>

</configuration>
14 changes: 0 additions & 14 deletions docs/examples/src/test/resources/logback-test.xml
@@ -1,5 +1,4 @@
<configuration>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
Expand All @@ -11,17 +10,4 @@
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>

<logger name="org.testcontainers" level="INFO"/>

<logger name="org.apache.http" level="WARN"/>
<logger name="com.github.dockerjava" level="WARN"/>
<logger name="org.zeroturnaround.exec" level="WARN"/>
<logger name="io.netty" level="WARN" />
<logger name="org.testcontainers.shaded" level="WARN"/>

<turboFilter class="ch.qos.logback.classic.turbo.MarkerFilter">
<Marker>PROFILER</Marker>
<OnMatch>DENY</OnMatch>
</turboFilter>
</configuration>
10 changes: 3 additions & 7 deletions examples/disque-job-queue/src/test/resources/logback-test.xml
Expand Up @@ -4,15 +4,11 @@
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
<pattern>%d{HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern>
</encoder>
</appender>

<root level="info">
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>

<logger name="org.apache.http" level="WARN"/>
<logger name="com.github.dockerjava" level="WARN"/>
<logger name="org.zeroturnaround.exec" level="WARN"/>
</configuration>
</configuration>
14 changes: 6 additions & 8 deletions examples/linked-container/src/test/resources/logback-test.xml
@@ -1,16 +1,14 @@
<configuration>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
<pattern>%d{HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern>
</encoder>
</appender>

<root level="info">
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>

<logger name="org.testcontainers" level="INFO"/>
<logger name="org.apache.http" level="WARN"/>
<logger name="com.github.dockerjava" level="WARN"/>
<logger name="org.zeroturnaround.exec" level="WARN"/>
</configuration>
</configuration>
Expand Up @@ -4,15 +4,11 @@
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
<pattern>%d{HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern>
</encoder>
</appender>

<root level="info">
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>

<logger name="org.apache.http" level="WARN"/>
<logger name="com.github.dockerjava" level="WARN"/>
<logger name="org.zeroturnaround.exec" level="WARN"/>
</configuration>
</configuration>
10 changes: 3 additions & 7 deletions examples/redis-backed-cache/src/test/resources/logback-test.xml
Expand Up @@ -4,15 +4,11 @@
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
<pattern>%d{HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern>
</encoder>
</appender>

<root level="info">
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>

<logger name="org.apache.http" level="WARN"/>
<logger name="com.github.dockerjava" level="WARN"/>
<logger name="org.zeroturnaround.exec" level="WARN"/>
</configuration>
</configuration>
10 changes: 3 additions & 7 deletions examples/selenium-container/src/test/resources/logback-test.xml
Expand Up @@ -4,15 +4,11 @@
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
<pattern>%d{HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern>
</encoder>
</appender>

<root level="info">
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>

<logger name="org.apache.http" level="WARN"/>
<logger name="com.github.dockerjava" level="WARN"/>
<logger name="org.zeroturnaround.exec" level="WARN"/>
</configuration>
</configuration>
13 changes: 1 addition & 12 deletions examples/spock/src/test/resources/logback-test.xml
Expand Up @@ -12,16 +12,5 @@
<appender-ref ref="STDOUT"/>
</root>

<logger name="org.testcontainers" level="INFO"/>

<logger name="org.apache.http" level="WARN"/>
<logger name="com.github.dockerjava" level="WARN"/>
<logger name="org.zeroturnaround.exec" level="WARN"/>
<logger name="io.netty" level="WARN"/>
<logger name="org.testcontainers.shaded" level="WARN"/>

<turboFilter class="ch.qos.logback.classic.turbo.MarkerFilter">
<Marker>PROFILER</Marker>
<OnMatch>DENY</OnMatch>
</turboFilter>
<logger name="org.testcontainers" level="DEBUG"/>
</configuration>
7 changes: 1 addition & 6 deletions examples/spring-boot/src/test/resources/logback-test.xml
@@ -1,8 +1,3 @@
<configuration>

<include resource="org/springframework/boot/logging/logback/base.xml"/>

<logger name="org.apache.http" level="WARN"/>
<logger name="com.github.dockerjava" level="WARN"/>
<logger name="org.zeroturnaround.exec" level="WARN"/>
</configuration>
</configuration>
3 changes: 1 addition & 2 deletions modules/cassandra/src/test/resources/logback-test.xml
Expand Up @@ -13,5 +13,4 @@
</root>

<logger name="org.testcontainers" level="DEBUG"/>
<logger name="org.testcontainers.shaded" level="WARN"/>
</configuration>
</configuration>
13 changes: 2 additions & 11 deletions modules/couchbase/src/test/resources/logback-test.xml
Expand Up @@ -8,18 +8,9 @@
</encoder>
</appender>

<root level="debug">
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>

<logger name="org.apache.http" level="WARN"/>
<logger name="com.github.dockerjava" level="WARN"/>
<logger name="org.zeroturnaround.exec" level="WARN"/>
<logger name="com.zaxxer.hikari" level="INFO"/>
<logger name="org.rnorth.tcpunixsocketproxy" level="INFO" />
<logger name="io.netty" level="WARN" />
<logger name="com.couchbase" level="INFO" />
<logger name="org.testcontainers.shaded" level="WARN"/>
<logger name="com.zaxxer.hikari" level="INFO"/>

<logger name="org.testcontainers" level="DEBUG"/>
</configuration>
14 changes: 3 additions & 11 deletions modules/dynalite/src/test/resources/logback-test.xml
Expand Up @@ -8,17 +8,9 @@
</encoder>
</appender>

<root level="debug">
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>

<logger name="org.apache.http" level="WARN"/>
<logger name="com.github.dockerjava" level="WARN"/>
<logger name="org.zeroturnaround.exec" level="WARN"/>
<logger name="com.zaxxer.hikari" level="INFO"/>
<logger name="org.rnorth.tcpunixsocketproxy" level="INFO" />
<logger name="io.netty" level="WARN" />
<logger name="org.mongodb" level="INFO" />
<logger name="org.testcontainers.shaded" level="WARN"/>
<logger name="com.zaxxer.hikari" level="INFO"/>
</configuration>
<logger name="org.testcontainers" level="DEBUG"/>
</configuration>
5 changes: 2 additions & 3 deletions modules/elasticsearch/src/test/resources/logback-test.xml
Expand Up @@ -8,10 +8,9 @@
</encoder>
</appender>

<root level="info">
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>

<logger name="org.testcontainers.shaded" level="WARN"/>

<logger name="org.testcontainers" level="DEBUG"/>
</configuration>
12 changes: 2 additions & 10 deletions modules/influxdb/src/test/resources/logback-test.xml
Expand Up @@ -8,17 +8,9 @@
</encoder>
</appender>

<root level="debug">
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>

<logger name="org.apache.http" level="WARN"/>
<logger name="com.github.dockerjava" level="WARN"/>
<logger name="org.zeroturnaround.exec" level="WARN"/>
<logger name="com.zaxxer.hikari" level="INFO"/>
<logger name="org.rnorth.tcpunixsocketproxy" level="INFO"/>
<logger name="io.netty" level="WARN"/>
<logger name="org.mongodb" level="INFO"/>
<logger name="org.testcontainers.shaded" level="WARN"/>
<logger name="com.zaxxer.hikari" level="INFO"/>
<logger name="org.testcontainers" level="DEBUG"/>
</configuration>
Expand Up @@ -2,15 +2,20 @@

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.junit.After;
import org.testcontainers.containers.JdbcDatabaseContainer;

import javax.sql.DataSource;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashSet;
import java.util.Set;

abstract class AbstractContainerDatabaseTest {

private final Set<HikariDataSource> datasourcesForCleanup = new HashSet<>();

ResultSet performQuery(JdbcDatabaseContainer container, String sql) throws SQLException {
DataSource ds = getDataSource(container);
Statement statement = ds.getConnection().createStatement();
Expand All @@ -26,7 +31,16 @@ DataSource getDataSource(JdbcDatabaseContainer container) {
hikariConfig.setJdbcUrl(container.getJdbcUrl());
hikariConfig.setUsername(container.getUsername());
hikariConfig.setPassword(container.getPassword());
hikariConfig.setDriverClassName(container.getDriverClassName());

final HikariDataSource dataSource = new HikariDataSource(hikariConfig);
datasourcesForCleanup.add(dataSource);

return dataSource;
}

return new HikariDataSource(hikariConfig);
@After
public void teardown() {
datasourcesForCleanup.forEach(HikariDataSource::close);
}
}
13 changes: 2 additions & 11 deletions modules/jdbc-test/src/test/resources/logback-test.xml
Expand Up @@ -8,18 +8,9 @@
</encoder>
</appender>

<root level="debug">
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>

<logger name="org.apache.http" level="WARN"/>
<logger name="com.github.dockerjava" level="WARN"/>
<logger name="org.zeroturnaround.exec" level="WARN"/>
<logger name="com.zaxxer.hikari" level="INFO"/>
<logger name="org.rnorth.tcpunixsocketproxy" level="INFO" />
<logger name="io.netty" level="WARN" />
<logger name="org.mongodb" level="INFO" />
<logger name="org.testcontainers.shaded" level="WARN"/>
<logger name="com.zaxxer.hikari" level="INFO"/>

<logger name="org.testcontainers" level="DEBUG"/>
</configuration>

0 comments on commit f1565f1

Please sign in to comment.