diff --git a/ebean-test/src/main/java/io/ebean/test/config/platform/Config.java b/ebean-test/src/main/java/io/ebean/test/config/platform/Config.java index 3da2f3eee..4dd36034a 100644 --- a/ebean-test/src/main/java/io/ebean/test/config/platform/Config.java +++ b/ebean-test/src/main/java/io/ebean/test/config/platform/Config.java @@ -17,7 +17,7 @@ class Config { /** * Common optional docker parameters that we just transfer to docker properties. */ - private static final String[] DOCKER_TEST_PARAMS = {"fastStartMode", "inMemory", "initSqlFile", "seedSqlFile", "adminUser", "adminPassword", "extraDb", "extraDb.dbName", "extraDb.username", "extraDb.password", "extraDb.initSqlFile", "extraDb.seedSqlFile"}; + private static final String[] DOCKER_TEST_PARAMS = {"fastStartMode", "inMemory", "initSqlFile", "seedSqlFile", "adminUser", "adminPassword", "extraDb", "extraDb.dbName", "extraDb.username", "extraDb.password", "extraDb.extensions", "extraDb.initSqlFile", "extraDb.seedSqlFile"}; private static final String[] DOCKER_PLATFORM_PARAMS = {"containerName", "image", "internalPort", "startMode", "shutdownMode", "maxReadyAttempts", "tmpfs", "collation", "characterSet"}; private static final String DDL_MODE_OPTIONS = "dropCreate, create, none, migration, createOnly or migrationDropCreate"; @@ -224,14 +224,22 @@ class Config { properties.setProperty(dsKey, val); } - void setUrl(String urlPattern) { - String val = getKey("url", urlPattern); + private void setUrl(String key, String urlPattern) { + String val = getKey(key, urlPattern); val = val.replace("${host}", host()); val = val.replace("${port}", String.valueOf(port)); val = val.replace("${databaseName}", databaseName); this.url = val; } + void setUrl(String urlPattern) { + setUrl("url", urlPattern); + } + + void setExtraUrl(String urlPattern) { + setUrl("extraDb.url", urlPattern); + } + String host() { String explicitDockerHost = getKey("dockerHost", null); return getKey("host", dockerHost.dockerHost(explicitDockerHost)); @@ -343,9 +351,17 @@ class Config { void setExtensions(String defaultValue) { // ebean.test.postgres.extensions=hstore,pgcrypto - String val = getKey("extensions", defaultValue); + setExtensionsInternal("extensions", defaultValue); + } + + void setExtraExtensions(String defaultValue) { + setExtensionsInternal("extraDb.extensions", defaultValue); + } + + void setExtensionsInternal(String key, String defaultValue) { + String val = getKey(key, defaultValue); if (val != null) { - dockerProperties.setProperty(dockerKey("extensions"), trimExtensions(val)); + dockerProperties.setProperty(dockerKey(key), trimExtensions(val)); } } diff --git a/ebean-test/src/main/java/io/ebean/test/config/platform/OracleSetup.java b/ebean-test/src/main/java/io/ebean/test/config/platform/OracleSetup.java index b93660615..db50d60be 100644 --- a/ebean-test/src/main/java/io/ebean/test/config/platform/OracleSetup.java +++ b/ebean-test/src/main/java/io/ebean/test/config/platform/OracleSetup.java @@ -6,25 +6,21 @@ class OracleSetup implements PlatformSetup { @Override public Properties setup(Config config) { - config.ddlMode("dropCreate"); config.setDefaultPort(1521); config.setUsernameDefault(); config.setPasswordDefault(); config.setDatabaseName("XE"); config.setUrl("jdbc:oracle:thin:@localhost:${port}:${databaseName}"); - config.setDriver("oracle.jdbc.driver.OracleDriver"); config.datasourceDefaults(); return dockerProperties(config); } private Properties dockerProperties(Config dbConfig) { - if (!dbConfig.isUseDocker()) { return new Properties(); } - - dbConfig.setDockerVersion("latest"); + dbConfig.setDockerVersion("21.3.0-slim"); return dbConfig.getDockerProperties(); } diff --git a/ebean-test/src/main/java/io/ebean/test/config/platform/PostgisSetup.java b/ebean-test/src/main/java/io/ebean/test/config/platform/PostgisSetup.java index 3a9cc34e3..b254aad60 100644 --- a/ebean-test/src/main/java/io/ebean/test/config/platform/PostgisSetup.java +++ b/ebean-test/src/main/java/io/ebean/test/config/platform/PostgisSetup.java @@ -12,8 +12,7 @@ class PostgisSetup implements PlatformSetup { @Override public Properties setup(Config config) { int defaultPort = config.isUseDocker() ? 7432 : 5432; - - config.setDockerPlatform("postgres"); + config.setDockerPlatform("postgis"); config.ddlMode("dropCreate"); config.setDefaultPort(defaultPort); config.setUsernameDefault(); @@ -35,14 +34,18 @@ class PostgisSetup implements PlatformSetup { } config.setExtensions("hstore,pgcrypto,postgis"); config.setDockerContainerName("ut_postgis"); - config.setDockerImage("postgis/postgis"); - config.setDockerVersion("14"); + config.setDockerVersion("14-3.2"); return config.getDockerProperties(); } @Override public void setupExtraDbDataSource(Config config) { - // not supported yet + int defaultPort = config.isUseDocker() ? 7432 : 5432; + config.setDefaultPort(defaultPort); + config.setExtraUsernameDefault(); + config.setExtraDbPasswordDefault(); + config.setExtraUrl("jdbc:postgresql_lwgis://${host}:${port}/${databaseName}"); + config.extraDatasourceDefaults(); } @Override diff --git a/ebean-test/src/test/java/io/ebean/test/config/platform/ConfigTest.java b/ebean-test/src/test/java/io/ebean/test/config/platform/ConfigTest.java index 7971c2bb7..3537954ed 100644 --- a/ebean-test/src/test/java/io/ebean/test/config/platform/ConfigTest.java +++ b/ebean-test/src/test/java/io/ebean/test/config/platform/ConfigTest.java @@ -35,6 +35,43 @@ class ConfigTest { assertThat(config.trimExtensions(" a , , b ")).isEqualTo("a,b"); } + @Test + void extensions_whenNoSetValues() { + DatabaseConfig databaseConfig = new DatabaseConfig(); + databaseConfig.loadFromProperties(new Properties()); + + Config config = new Config("db", "postgis", "db", databaseConfig); + + config.setUsernameDefault(); + config.setPasswordDefault(); + config.setDefaultPort(42); + config.setExtensions("a,b"); + config.setExtraExtensions("c,d"); + + Properties dockerProperties = config.getDockerProperties(); + assertThat(dockerProperties.getProperty("postgis.extensions")).isEqualTo("a,b"); + assertThat(dockerProperties.getProperty("postgis.extraDb.extensions")).isEqualTo("c,d"); + } + + @Test + void extensions_whenSetValues() { + DatabaseConfig databaseConfig = new DatabaseConfig(); + Properties properties = new Properties(); + properties.setProperty("ebean.test.extensions", "x,y"); + properties.setProperty("ebean.test.extraDb.extensions", "z"); + databaseConfig.loadFromProperties(properties); + + Config config = new Config("db", "postgis", "db", databaseConfig); + + config.setExtensions("a,b"); + config.setExtraExtensions("c,d"); + + Properties dockerProperties = config.getDockerProperties(); + assertThat(dockerProperties.getProperty("postgis.extensions")).isEqualTo("x,y"); + assertThat(dockerProperties.getProperty("postgis.extraDb.extensions")).isEqualTo("z"); + } + + @Test void extraDbProperties_basic() { Properties p = new Properties(); diff --git a/pom.xml b/pom.xml index 931075c17..56f1e40bb 100644 --- a/pom.xml +++ b/pom.xml @@ -44,7 +44,7 @@ 2.0 1.2 13.6.0 - 6.0 + 6.1 8.0 13.6.3 13.6.3