#2715 - [ebean-test-containers] Fix for Postgis to support extraDb (second database), Update Oracle container

This commit is contained in:
Rob Bygrave
2022-06-13 15:44:52 +12:00
parent 9aa7ae79e2
commit 3e3647816d
5 changed files with 68 additions and 16 deletions
@@ -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));
}
}
@@ -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();
}
@@ -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