diff --git a/ebean-test/src/main/java/io/ebean/test/config/platform/PlatformAutoConfig.java b/ebean-test/src/main/java/io/ebean/test/config/platform/PlatformAutoConfig.java index deefcd0fb..3569db727 100644 --- a/ebean-test/src/main/java/io/ebean/test/config/platform/PlatformAutoConfig.java +++ b/ebean-test/src/main/java/io/ebean/test/config/platform/PlatformAutoConfig.java @@ -35,18 +35,14 @@ public class PlatformAutoConfig { KNOWN_PLATFORMS.put("cockroach", new CockroachSetup()); KNOWN_PLATFORMS.put("hana", new HanaSetup()); KNOWN_PLATFORMS.put("db2", new Db2Setup()); + KNOWN_PLATFORMS.put("yugabyte", new YugabyteSetup()); } private final DatabaseConfig config; - private final Properties properties; - private String db; - private String platform; - private PlatformSetup platformSetup; - private String databaseName; public PlatformAutoConfig(String db, DatabaseConfig config) { diff --git a/ebean-test/src/main/java/io/ebean/test/config/platform/YugabyteSetup.java b/ebean-test/src/main/java/io/ebean/test/config/platform/YugabyteSetup.java new file mode 100644 index 000000000..eb14158e3 --- /dev/null +++ b/ebean-test/src/main/java/io/ebean/test/config/platform/YugabyteSetup.java @@ -0,0 +1,49 @@ +package io.ebean.test.config.platform; + +import java.util.Properties; + +class YugabyteSetup implements PlatformSetup { + + @Override + public Properties setup(Config config) { + int defaultPort = config.isUseDocker() ? 6433 : 5433; + config.ddlMode("dropCreate"); + config.setDefaultPort(defaultPort); + config.setUsernameDefault(); + config.setPasswordDefault(); + config.setUrl("jdbc:postgresql://${host}:${port}/${databaseName}"); + String schema = config.getSchema(); + if (schema != null && !schema.equals(config.getUsername())) { + config.urlAppend("?currentSchema=" + schema); + } + config.setDriver("org.postgresql.Driver"); + config.datasourceDefaults(); + return dockerProperties(config); + } + + private Properties dockerProperties(Config config) { + if (!config.isUseDocker()) { + return new Properties(); + } + config.setDockerVersion("2.11.2.0-b89"); + config.setExtensions("pgcrypto"); + return config.getDockerProperties(); + } + + @Override + public void setupExtraDbDataSource(Config config) { + int defaultPort = config.isUseDocker() ? 6433 : 5433; + config.setDefaultPort(defaultPort); + config.setExtraUsernameDefault(); + config.setExtraDbPasswordDefault(); + config.setUrl("jdbc:postgresql://${host}:${port}/${databaseName}"); + config.setDriver("org.postgresql.Driver"); + config.extraDatasourceDefaults(); + } + + @Override + public boolean isLocal() { + return false; + } + +} diff --git a/ebean-test/testconfig/ebean-yugabyte.properties b/ebean-test/testconfig/ebean-yugabyte.properties new file mode 100644 index 000000000..126360434 --- /dev/null +++ b/ebean-test/testconfig/ebean-yugabyte.properties @@ -0,0 +1,3 @@ +ebean.test.platform=yugabyte +datasource.default=yugabyte +ebean.test.dbName=unit