#2487 - ebean-test support Docker In Docker - docker container's hostname rather than hardcoded "localhost"

This commit is contained in:
Rob Bygrave
2022-01-13 15:02:38 +13:00
parent c5779133bc
commit 356dc5eb19
10 changed files with 30 additions and 12 deletions
@@ -11,7 +11,7 @@ class ClickHouseSetup implements PlatformSetup {
config.setDefaultPort(8123);
config.setUsername("default");
config.setPassword("");
config.setUrl("jdbc:clickhouse://localhost:${port}/${databaseName}");
config.setUrl("jdbc:clickhouse://${host}:${port}/${databaseName}");
config.setDriver("ru.yandex.clickhouse.ClickHouseDriver");
config.datasourceDefaults();
@@ -11,7 +11,7 @@ class CockroachSetup implements PlatformSetup {
config.setDefaultPort(26257);
config.setUsername("root");
config.setPassword("");
config.setUrl("jdbc:postgresql://localhost:${port}/${databaseName}?sslmode=disable");
config.setUrl("jdbc:postgresql://${host}:${port}/${databaseName}?sslmode=disable");
config.setDriver("org.postgresql.Driver");
config.datasourceDefaults();
@@ -4,8 +4,8 @@ import io.ebean.config.DatabaseConfig;
import io.ebean.datasource.DataSourceConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.util.Locale;
import java.util.Properties;
/**
@@ -26,7 +26,6 @@ class Config {
private final String db;
private final String platform;
private String dockerPlatform;
private String databaseName;
private final Properties properties;
@@ -231,11 +230,30 @@ class Config {
void setUrl(String urlPattern) {
String val = getPlatformKey("url", urlPattern);
val = val.replace("${host}", host());
val = val.replace("${port}", String.valueOf(port));
val = val.replace("${databaseName}", databaseName);
this.url = val;
}
String host() {
String defaultHost = isInDocker() ? dockerHost() : "localhost";
return getPlatformKey("host", defaultHost);
}
static String dockerHost() {
String os = System.getProperty("os.name", "generic").toLowerCase(Locale.ENGLISH);
if (os.contains("mac") || os.contains("darwin") || os.contains("win")) {
return "host.docker.internal";
} else {
return "172.17.0.1";
}
}
boolean isInDocker() {
return new File("/.dockerenv").exists();
}
/**
* Append to the connection URL.
*/
@@ -11,7 +11,7 @@ class Db2Setup implements PlatformSetup {
config.setDefaultPort(50000);
config.setUsernameDefault();
config.setPasswordDefault();
config.setUrl("jdbc:db2://localhost:${port}/${databaseName}");
config.setUrl("jdbc:db2://${host}:${port}/${databaseName}");
config.setDriver("com.ibm.db2.jcc.DB2Driver");
config.datasourceDefaults();
@@ -20,7 +20,7 @@ class HanaSetup implements PlatformSetup {
config.setUsername("SYSTEM");
config.setPassword("HXEHana1");
config.setDatabaseName("HXE");
config.setUrl("jdbc:sap://localhost:${port}/?databaseName=${databaseName}");
config.setUrl("jdbc:sap://${host}:${port}/?databaseName=${databaseName}");
String schema = config.getSchema();
if (schema != null && !schema.equals(config.getUsername())) {
config.urlAppend("&currentSchema=" + schema);
@@ -13,7 +13,7 @@ class MariaDBSetup implements PlatformSetup {
config.setDefaultPort(defaultPort);
config.setUsernameDefault();
config.setPasswordDefault();
config.setUrl("jdbc:mariadb://localhost:${port}/${databaseName}?useLegacyDatetimeCode=false");
config.setUrl("jdbc:mariadb://${host}:${port}/${databaseName}?useLegacyDatetimeCode=false");
config.datasourceDefaults();
return dockerProperties(config);
@@ -13,7 +13,7 @@ class MySqlSetup implements PlatformSetup {
config.setDefaultPort(defaultPort);
config.setUsernameDefault();
config.setPasswordDefault();
config.setUrl("jdbc:mysql://localhost:${port}/${databaseName}");
config.setUrl("jdbc:mysql://${host}:${port}/${databaseName}");
config.setDriver(defaultDriver());
config.datasourceDefaults();
@@ -20,7 +20,7 @@ class PostgisSetup implements PlatformSetup {
config.setUsernameDefault();
config.setPasswordDefault();
config.setDriver("org.postgis.DriverWrapperLW");
config.setUrl("jdbc:postgresql_lwgis://localhost:${port}/${databaseName}");
config.setUrl("jdbc:postgresql_lwgis://${host}:${port}/${databaseName}");
String schema = config.getSchema();
if (schema != null && !schema.equals(config.getUsername())) {
@@ -13,7 +13,7 @@ class PostgresSetup implements PlatformSetup {
config.setDefaultPort(defaultPort);
config.setUsernameDefault();
config.setPasswordDefault();
config.setUrl("jdbc:postgresql://localhost:${port}/${databaseName}");
config.setUrl("jdbc:postgresql://${host}:${port}/${databaseName}");
String schema = config.getSchema();
if (schema != null && !schema.equals(config.getUsername())) {
@@ -44,7 +44,7 @@ class PostgresSetup implements PlatformSetup {
config.setDefaultPort(defaultPort);
config.setExtraUsernameDefault();
config.setExtraDbPasswordDefault();
config.setUrl("jdbc:postgresql://localhost:${port}/${databaseName}");
config.setUrl("jdbc:postgresql://${host}:${port}/${databaseName}");
config.setDriver("org.postgresql.Driver");
config.extraDatasourceDefaults();
}
@@ -13,7 +13,7 @@ class SqlServerSetup implements PlatformSetup {
config.setDefaultPort(1433);
config.setUsernameDefault();
config.setPassword("SqlS3rv#r");
config.setUrl("jdbc:sqlserver://localhost:${port};databaseName=${databaseName};sendTimeAsDateTime=false");
config.setUrl("jdbc:sqlserver://${host}:${port};databaseName=${databaseName};sendTimeAsDateTime=false");
config.setDriver("com.microsoft.sqlserver.jdbc.SQLServerDriver");
config.datasourceDefaults();