Skip to content

Commit 1294607

Browse files
committed
feat(core): add getR2dbcUrl() method for R2DBC support in PostgreSQLContainer
1 parent 768a2af commit 1294607

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

modules/jdbc/src/main/java/org/testcontainers/containers/JdbcDatabaseContainer.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public JdbcDatabaseContainer(final DockerImageName dockerImageName) {
6767
}
6868

6969
/**
70-
* @return the name of the actual JDBC driver to use
70+
* @return R2DBC driver name (e.g., "postgresql", "mysql", etc.)
7171
*/
7272
public abstract String getDriverClassName();
7373

@@ -77,8 +77,20 @@ public JdbcDatabaseContainer(final DockerImageName dockerImageName) {
7777
public abstract String getJdbcUrl();
7878

7979
/**
80-
* @return the database name
80+
* @return an R2DBC-compliant connection URL.
81+
* Example: r2dbc:postgresql://user:password@localhost:5432/dbname
8182
*/
83+
public String getR2dbcUrl(){
84+
String driver = getR2dbcDriverName();
85+
String user = getUsername();
86+
String pw = getPassword();
87+
String host = getHost();
88+
Integer port = getFirstMappedPort(getExposedPorts().get(0));
89+
String db = getDatabaseName();
90+
91+
92+
return String.format("r2dbc:%s://%s:%s@%s:%d/%s", driver, user, pw, host, port, db);
93+
}
8294
public String getDatabaseName() {
8395
throw new UnsupportedOperationException();
8496
}

modules/postgresql/src/main/java/org/testcontainers/containers/PostgreSQLContainerProvider.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,8 @@ public JdbcDatabaseContainer newInstance(String tag) {
3131
public JdbcDatabaseContainer newInstance(ConnectionUrl connectionUrl) {
3232
return newInstanceFromConnectionUrl(connectionUrl, USER_PARAM, PASSWORD_PARAM);
3333
}
34+
@Override
35+
public String getR2dbcDriverName() {
36+
return "postgresql";
37+
}
3438
}

modules/postgresql/src/test/java/org/testcontainers/containers/PostgreSQLR2DBCDatabaseContainerTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ protected ConnectionFactoryOptions getOptions(PostgreSQLContainer<?> container)
2020
);
2121
// }
2222
// spotless:on
23-
23+
System.out.println("Generated R2DBC URL: " + container.getR2dbcUrl());
24+
assertTrue(container.getR2dbcUrl().startsWith("r2dbc:postgresql://"));
2425
return options;
2526
}
2627

0 commit comments

Comments
 (0)