diff --git a/modules/jdbc/src/main/java/org/testcontainers/containers/JdbcDatabaseContainer.java b/modules/jdbc/src/main/java/org/testcontainers/containers/JdbcDatabaseContainer.java index cf6c995528f..2cbfa0c07a5 100644 --- a/modules/jdbc/src/main/java/org/testcontainers/containers/JdbcDatabaseContainer.java +++ b/modules/jdbc/src/main/java/org/testcontainers/containers/JdbcDatabaseContainer.java @@ -67,7 +67,7 @@ public JdbcDatabaseContainer(final DockerImageName dockerImageName) { } /** - * @return the name of the actual JDBC driver to use + * @return R2DBC driver name (e.g., "postgresql", "mysql", etc.) */ public abstract String getDriverClassName(); @@ -77,8 +77,20 @@ public JdbcDatabaseContainer(final DockerImageName dockerImageName) { public abstract String getJdbcUrl(); /** - * @return the database name + * @return an R2DBC-compliant connection URL. + * Example: r2dbc:postgresql://user:password@localhost:5432/dbname */ + public String getR2dbcUrl(){ + String driver = getR2dbcDriverName(); + String user = getUsername(); + String pw = getPassword(); + String host = getHost(); + Integer port = getFirstMappedPort(getExposedPorts().get(0)); + String db = getDatabaseName(); + + + return String.format("r2dbc:%s://%s:%s@%s:%d/%s", driver, user, pw, host, port, db); + } public String getDatabaseName() { throw new UnsupportedOperationException(); } diff --git a/modules/postgresql/src/main/java/org/testcontainers/containers/PostgreSQLContainerProvider.java b/modules/postgresql/src/main/java/org/testcontainers/containers/PostgreSQLContainerProvider.java index de98885510c..94543286845 100644 --- a/modules/postgresql/src/main/java/org/testcontainers/containers/PostgreSQLContainerProvider.java +++ b/modules/postgresql/src/main/java/org/testcontainers/containers/PostgreSQLContainerProvider.java @@ -31,4 +31,8 @@ public JdbcDatabaseContainer newInstance(String tag) { public JdbcDatabaseContainer newInstance(ConnectionUrl connectionUrl) { return newInstanceFromConnectionUrl(connectionUrl, USER_PARAM, PASSWORD_PARAM); } + @Override + public String getR2dbcDriverName() { + return "postgresql"; + } } diff --git a/modules/postgresql/src/test/java/org/testcontainers/containers/PostgreSQLR2DBCDatabaseContainerTest.java b/modules/postgresql/src/test/java/org/testcontainers/containers/PostgreSQLR2DBCDatabaseContainerTest.java index fb503bfd659..2eb15a3b409 100644 --- a/modules/postgresql/src/test/java/org/testcontainers/containers/PostgreSQLR2DBCDatabaseContainerTest.java +++ b/modules/postgresql/src/test/java/org/testcontainers/containers/PostgreSQLR2DBCDatabaseContainerTest.java @@ -20,7 +20,8 @@ protected ConnectionFactoryOptions getOptions(PostgreSQLContainer container) ); // } // spotless:on - + System.out.println("Generated R2DBC URL: " + container.getR2dbcUrl()); + assertTrue(container.getR2dbcUrl().startsWith("r2dbc:postgresql://")); return options; }