Skip to content

Commit 42e4143

Browse files
committed
Use org.testcontainers:testcontainers instead of per database specializations.
Motivation: Test containers specializations for database do have a split package with the main test containers jars, preventing running tests in IDE. Since the benefit of these specialization is very thin, the tradeof is not worth and we should use basic testcontainers. Changes: Use org.testcontainers:testcontainers everywhere.
1 parent 96eb1c0 commit 42e4143

File tree

4 files changed

+50
-21
lines changed

4 files changed

+50
-21
lines changed

vertx-db2-client/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
<!-- Testing purposes -->
5151
<dependency>
5252
<groupId>org.testcontainers</groupId>
53-
<artifactId>db2</artifactId>
53+
<artifactId>testcontainers</artifactId>
5454
<version>${testcontainers.version}</version>
5555
<scope>test</scope>
5656
</dependency>

vertx-db2-client/src/test/java/io/vertx/db2client/junit/DB2Resource.java

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
import io.vertx.core.net.JksOptions;
2020
import io.vertx.db2client.DB2ConnectOptions;
2121
import org.junit.rules.ExternalResource;
22-
import org.testcontainers.containers.Db2Container;
22+
import org.testcontainers.containers.GenericContainer;
23+
import org.testcontainers.containers.InternetProtocol;
2324
import org.testcontainers.containers.wait.strategy.LogMessageWaitStrategy;
2425

2526
import java.nio.file.Files;
@@ -45,12 +46,25 @@ public class DB2Resource extends ExternalResource {
4546
private boolean started = false;
4647
private boolean isDb2OnZ = false;
4748
private DB2ConnectOptions options;
48-
private final Db2Container instance = new Db2Container("ibmcom/db2:11.5.0.0a")
49-
.acceptLicense()
49+
private final String database = "vertx";
50+
private final String user = "vertx";
51+
private final String password = "vertx";
52+
private final ServerContainer instance = new ServerContainer("ibmcom/db2:11.5.0.0a") {
53+
@Override
54+
protected void configure() {
55+
this.addEnv("LICENSE", "accept");
56+
this.addEnv("DBNAME", database);
57+
this.addEnv("DB2INSTANCE", user);
58+
this.addEnv("DB2INST1_PASSWORD", password);
59+
if (!this.getEnvMap().containsKey("AUTOCONFIG")) {
60+
this.addEnv("AUTOCONFIG", "false");
61+
}
62+
if (!this.getEnvMap().containsKey("ARCHIVE_LOGS")) {
63+
this.addEnv("ARCHIVE_LOGS", "false");
64+
}
65+
}
66+
}
5067
.withLogConsumer(out -> System.out.print("[DB2] " + out.getUtf8String()))
51-
.withUsername("vertx")
52-
.withPassword("vertx")
53-
.withDatabaseName("vertx")
5468
.withExposedPorts(50000, 50001)
5569
.withFileSystemBind("src/test/resources/tls/server/", "/certs/")
5670
.withFileSystemBind("src/test/resources/tls/db2_tls_setup.sh", "/var/custom/db2_tls_setup.sh")
@@ -69,9 +83,9 @@ protected void before() throws Throwable {
6983
options = new DB2ConnectOptions()
7084
.setHost(instance.getHost())
7185
.setPort(instance.getMappedPort(50000))
72-
.setDatabase(instance.getDatabaseName())
73-
.setUser(instance.getUsername())
74-
.setPassword(instance.getPassword());
86+
.setDatabase(database)
87+
.setUser(user)
88+
.setPassword(password);
7589
} else {
7690
System.out.println("Using custom DB2 instance as requested via DB2_HOST=" + get("DB2_HOST"));
7791
Objects.requireNonNull(get("DB2_PORT"), "Must set DB2_PORT to a non-null value if DB2_HOST is set");
@@ -143,4 +157,15 @@ private void runInitSql(Connection con) throws Exception {
143157
}
144158
}
145159

160+
private class ServerContainer extends GenericContainer<ServerContainer> {
161+
162+
public ServerContainer(String dockerImageName) {
163+
super(dockerImageName);
164+
}
165+
166+
public ServerContainer withFixedExposedPort(int hostPort, int containerPort) {
167+
super.addFixedExposedPort(hostPort, containerPort, InternetProtocol.TCP);
168+
return self();
169+
}
170+
}
146171
}

vertx-pg-client/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@
8585

8686
<dependency>
8787
<groupId>org.testcontainers</groupId>
88-
<artifactId>postgresql</artifactId>
88+
<artifactId>testcontainers</artifactId>
8989
<version>${testcontainers.version}</version>
9090
<scope>test</scope>
9191
</dependency>

vertx-pg-client/src/test/java/io/vertx/pgclient/junit/ContainerPgRule.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,8 @@
2020
import io.vertx.sqlclient.PoolOptions;
2121
import org.junit.rules.ExternalResource;
2222
import org.testcontainers.containers.BindMode;
23+
import org.testcontainers.containers.GenericContainer;
2324
import org.testcontainers.containers.InternetProtocol;
24-
import org.testcontainers.containers.PostgreSQLContainer;
25-
26-
import static org.testcontainers.containers.PostgreSQLContainer.POSTGRESQL_PORT;
2725

2826
/**
2927
* Postgresql test database based on https://www.testcontainers.org
@@ -34,11 +32,13 @@
3432
*/
3533
public class ContainerPgRule extends ExternalResource {
3634

35+
private static final int POSTGRESQL_PORT = 5432;
36+
3737
private static final String connectionUri = System.getProperty("connection.uri");
3838
private static final String tlsConnectionUri = System.getProperty("tls.connection.uri");
3939
private static final String tlsForceConnectionUri = System.getProperty("tls.force.connection.uri");
4040

41-
private ServerContainer<?> server;
41+
private ServerContainer server;
4242
private PgConnectOptions options;
4343
private String databaseVersion;
4444
private boolean ssl;
@@ -72,10 +72,7 @@ public ContainerPgRule user(String user) {
7272
}
7373

7474
private void initServer(String version) throws Exception {
75-
server = new ServerContainer<>("postgres:" + version)
76-
.withDatabaseName("postgres")
77-
.withUsername(user)
78-
.withPassword("postgres")
75+
server = new ServerContainer("postgres:" + version)
7976
.withClasspathResourceMapping("create-postgres.sql", "/docker-entrypoint-initdb.d/create-postgres.sql", BindMode.READ_ONLY);
8077
if (ssl) {
8178
server
@@ -183,13 +180,20 @@ protected void after() {
183180
}
184181
}
185182

186-
private static class ServerContainer<SELF extends ServerContainer<SELF>> extends PostgreSQLContainer<SELF> {
183+
private class ServerContainer extends GenericContainer<ServerContainer> {
187184

188185
public ServerContainer(String dockerImageName) {
189186
super(dockerImageName);
190187
}
191188

192-
public SELF withFixedExposedPort(int hostPort, int containerPort) {
189+
@Override
190+
protected void configure() {
191+
this.addEnv("POSTGRES_DB", "postgres");
192+
this.addEnv("POSTGRES_USER", user);
193+
this.addEnv("POSTGRES_PASSWORD", "postgres");
194+
}
195+
196+
public ServerContainer withFixedExposedPort(int hostPort, int containerPort) {
193197
super.addFixedExposedPort(hostPort, containerPort, InternetProtocol.TCP);
194198
return self();
195199
}

0 commit comments

Comments
 (0)