From 582221aa0a9ab7e97fa2d325895ae3c4b5245719 Mon Sep 17 00:00:00 2001 From: Roland Praml Date: Thu, 3 Feb 2022 09:21:15 +0100 Subject: [PATCH] Move complete --- .../dbmigration/DefaultDbMigration.java | 47 ++++++++++--------- .../dbmigration/ServerStartTest.java | 23 +++++++++ .../src/test/resources/ebean.properties | 20 ++++++-- .../dbinit/{db2luw => db2}/1.4.sql | 0 .../dbinit/{sqlserver17 => sqlserver}/1.4.sql | 0 .../{db2luw => db2}/1.0__initial.sql | 0 .../dbmigration/{db2luw => db2}/1.1.sql | 0 .../{db2luw => db2}/1.2__dropsFor_1.1.sql | 0 .../dbmigration/{db2luw => db2}/1.3.sql | 0 .../{db2luw => db2}/1.4__dropsFor_1.3.sql | 0 .../{db2luw => db2}/R__db2_explain_tables.sql | 0 .../{db2luw => db2}/R__order_views.sql | 0 .../{db2luw => db2}/idx_db2.migrations | 0 .../1.0__initial.sql | 0 .../{sqlserver17 => sqlserver}/1.1.sql | 0 .../1.2__dropsFor_1.1.sql | 0 .../{sqlserver17 => sqlserver}/1.3.sql | 0 .../1.4__dropsFor_1.3.sql | 0 .../I__create_procs.sql | 0 .../R__order_views_mssql.sql | 0 .../idx_sqlserver.migrations | 0 21 files changed, 65 insertions(+), 25 deletions(-) create mode 100644 ebean-test/src/test/java/io/ebeaninternal/dbmigration/ServerStartTest.java rename ebean-test/src/test/resources/migrationtest/dbinit/{db2luw => db2}/1.4.sql (100%) rename ebean-test/src/test/resources/migrationtest/dbinit/{sqlserver17 => sqlserver}/1.4.sql (100%) rename ebean-test/src/test/resources/migrationtest/dbmigration/{db2luw => db2}/1.0__initial.sql (100%) rename ebean-test/src/test/resources/migrationtest/dbmigration/{db2luw => db2}/1.1.sql (100%) rename ebean-test/src/test/resources/migrationtest/dbmigration/{db2luw => db2}/1.2__dropsFor_1.1.sql (100%) rename ebean-test/src/test/resources/migrationtest/dbmigration/{db2luw => db2}/1.3.sql (100%) rename ebean-test/src/test/resources/migrationtest/dbmigration/{db2luw => db2}/1.4__dropsFor_1.3.sql (100%) rename ebean-test/src/test/resources/migrationtest/dbmigration/{db2luw => db2}/R__db2_explain_tables.sql (100%) rename ebean-test/src/test/resources/migrationtest/dbmigration/{db2luw => db2}/R__order_views.sql (100%) rename ebean-test/src/test/resources/migrationtest/dbmigration/{db2luw => db2}/idx_db2.migrations (100%) rename ebean-test/src/test/resources/migrationtest/dbmigration/{sqlserver17 => sqlserver}/1.0__initial.sql (100%) rename ebean-test/src/test/resources/migrationtest/dbmigration/{sqlserver17 => sqlserver}/1.1.sql (100%) rename ebean-test/src/test/resources/migrationtest/dbmigration/{sqlserver17 => sqlserver}/1.2__dropsFor_1.1.sql (100%) rename ebean-test/src/test/resources/migrationtest/dbmigration/{sqlserver17 => sqlserver}/1.3.sql (100%) rename ebean-test/src/test/resources/migrationtest/dbmigration/{sqlserver17 => sqlserver}/1.4__dropsFor_1.3.sql (100%) rename ebean-test/src/test/resources/migrationtest/dbmigration/{sqlserver17 => sqlserver}/I__create_procs.sql (100%) rename ebean-test/src/test/resources/migrationtest/dbmigration/{sqlserver17 => sqlserver}/R__order_views_mssql.sql (100%) rename ebean-test/src/test/resources/migrationtest/dbmigration/{sqlserver17 => sqlserver}/idx_sqlserver.migrations (100%) diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java index edcfeb290..cd1bade92 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java @@ -180,41 +180,44 @@ public class DefaultDbMigration implements DbMigration { generate = props.getBoolean("migration.generate", generate); generateInit = props.getBoolean("migration.generateInit", generateInit); // header & strictMode must be configured at DatabaseConfig level - parsePlatforms(props.get("migration.platforms"), config.getClassLoadConfig()); + parsePlatforms(props, config); } } - protected void parsePlatforms(String platforms, ClassLoadConfig loader) { + protected void parsePlatforms(PropertiesWrapper props, DatabaseConfig config) { + String platforms = props.get("migration.platforms"); if (platforms == null || platforms.isEmpty()) { return; } String[] tmp = StringHelper.splitNames(platforms); - for (String plat : tmp) { - int pos = plat.indexOf('='); - String platformName; - String prefix; - if (pos == -1) { - prefix = null; - platformName = plat; - } else { - platformName = plat.substring(0, pos); - prefix = plat.substring(pos + 1); - } + for (String platformName : tmp) { + DatabasePlatform dbPlatform; if (platformName.indexOf('.') == -1) { // parse platform as enum value Platform platform = Enum.valueOf(Platform.class, platformName.toUpperCase()); - if (prefix == null) { - prefix = platform.name().toLowerCase(); - } - addPlatform(platform, prefix); + dbPlatform =platform(platform); } else { // parse platform as class - DatabasePlatform dbPlatform = (DatabasePlatform) loader.newInstance(platformName); - if (prefix == null) { - prefix = dbPlatform.getPlatform().base().name().toLowerCase(); - } - addDatabasePlatform(dbPlatform, prefix); + dbPlatform = (DatabasePlatform) config.getClassLoadConfig().newInstance(platformName); } + + // Special wrapper, that allows us to define properties like: + // migration.SERVERNAME.PLATFORMNAME.key + PropertiesWrapper platformProps = new PropertiesWrapper("migration", config.getName(), config.getProperties(), config.getClassLoadConfig()) { + @Override + public String get(String key, String defaultValue) { + String ret = super.get(platformName + "." + key, null); + if (ret == null) { + ret = super.get(key, defaultValue); + } + return ret; + } + }; + String platformPrefix = platformProps.get("prefix", dbPlatform.getPlatform().name().toLowerCase()); + PlatformConfig platformConfig = new PlatformConfig(); + platformConfig.loadSettings(platformProps); + dbPlatform.configure(platformConfig); + addDatabasePlatform(dbPlatform, platformPrefix); } } diff --git a/ebean-test/src/test/java/io/ebeaninternal/dbmigration/ServerStartTest.java b/ebean-test/src/test/java/io/ebeaninternal/dbmigration/ServerStartTest.java new file mode 100644 index 000000000..b73dd9d0d --- /dev/null +++ b/ebean-test/src/test/java/io/ebeaninternal/dbmigration/ServerStartTest.java @@ -0,0 +1,23 @@ +package io.ebeaninternal.dbmigration; + +import static org.junit.jupiter.api.Assertions.*; + +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Arrays; + +import org.junit.jupiter.api.Test; + +import io.ebean.DatabaseFactory; +import io.ebean.config.DatabaseConfig; + +public class ServerStartTest { + + + @Test + void testServerStartAndMigrate() throws Exception { + DatabaseFactory.create("db2-migration").shutdown(); + } +} diff --git a/ebean-test/src/test/resources/ebean.properties b/ebean-test/src/test/resources/ebean.properties index a1c947dae..e4ac539b4 100644 --- a/ebean-test/src/test/resources/ebean.properties +++ b/ebean-test/src/test/resources/ebean.properties @@ -210,11 +210,14 @@ ebean.migrationtest.migration.migrationPath=migrationtest/dbmigration ebean.migrationtest.migration.migrationInitPath=migrationtest/dbinit ebean.migrationtest.migration.strict=true ebean.migrationtest.migration.generate=true -ebean.migrationtest.migration.run=true +ebean.migrationtest.migration.run=false ebean.migrationtest.migration.includeIndex=true ebean.migrationtest.migration.generateInit=true ebean.migrationtest.migration.generatePendingDrop=auto -ebean.migrationtest.migration.platforms=db2luw=db2,h2,hsqldb,mysql,mysql55=mysql55,postgres,oracle,sqlite,sqlserver17=sqlserver17,hana +ebean.migrationtest.migration.platforms=db2luw,h2,hsqldb,mysql,mysql55,postgres,oracle,sqlite,sqlserver17,hana +migration.migrationtest.db2luw.prefix=db2 +migration.migrationtest.sqlserver17.prefix=sqlserver + # need to generate unique statements to prevent them from being filtered out as duplicates by the DdlRunner ebean.hana.generateUniqueDdl=true @@ -231,4 +234,15 @@ ebean.migrationtest-history.ddl.header=-- Migrationscripts for ebean unittest Db ebean.migrationtest-history.migration.appName=migrationtest-history ebean.migrationtest-history.migration.migrationPath=migrationtest-history/dbmigration ebean.migrationtest-history.migration.migrationInitPath=migrationtest-history/dbinit -ebean.migrationtest-history.migration.strict=true \ No newline at end of file +ebean.migrationtest-history.migration.strict=true + +# ServerStartTest - can we run the migrations and do we find the correct ones! +datasource.db2-migration.username=unit +datasource.db2-migration.password=test +datasource.db2-migration.url=jdbc:db2://127.0.0.1:50000/unit +ebean.db2-migration.ddl.generate=false +ebean.db2-migration.ddl.run=false +ebean.db2-migration.migration.run=true +ebean.db2-migration.databasePlatformName=db2luw +ebean.db2-migration.migration.migrationPath=migrationtest/dbmigration +ebean.db2-migration.migration.migrationInitPath=migrationtest/dbinit \ No newline at end of file diff --git a/ebean-test/src/test/resources/migrationtest/dbinit/db2luw/1.4.sql b/ebean-test/src/test/resources/migrationtest/dbinit/db2/1.4.sql similarity index 100% rename from ebean-test/src/test/resources/migrationtest/dbinit/db2luw/1.4.sql rename to ebean-test/src/test/resources/migrationtest/dbinit/db2/1.4.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbinit/sqlserver17/1.4.sql b/ebean-test/src/test/resources/migrationtest/dbinit/sqlserver/1.4.sql similarity index 100% rename from ebean-test/src/test/resources/migrationtest/dbinit/sqlserver17/1.4.sql rename to ebean-test/src/test/resources/migrationtest/dbinit/sqlserver/1.4.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2/1.0__initial.sql similarity index 100% rename from ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.0__initial.sql rename to ebean-test/src/test/resources/migrationtest/dbmigration/db2/1.0__initial.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2/1.1.sql similarity index 100% rename from ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.1.sql rename to ebean-test/src/test/resources/migrationtest/dbmigration/db2/1.1.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2/1.2__dropsFor_1.1.sql similarity index 100% rename from ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.2__dropsFor_1.1.sql rename to ebean-test/src/test/resources/migrationtest/dbmigration/db2/1.2__dropsFor_1.1.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2/1.3.sql similarity index 100% rename from ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.3.sql rename to ebean-test/src/test/resources/migrationtest/dbmigration/db2/1.3.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2/1.4__dropsFor_1.3.sql similarity index 100% rename from ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.4__dropsFor_1.3.sql rename to ebean-test/src/test/resources/migrationtest/dbmigration/db2/1.4__dropsFor_1.3.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/R__db2_explain_tables.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2/R__db2_explain_tables.sql similarity index 100% rename from ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/R__db2_explain_tables.sql rename to ebean-test/src/test/resources/migrationtest/dbmigration/db2/R__db2_explain_tables.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/R__order_views.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2/R__order_views.sql similarity index 100% rename from ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/R__order_views.sql rename to ebean-test/src/test/resources/migrationtest/dbmigration/db2/R__order_views.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/idx_db2.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/db2/idx_db2.migrations similarity index 100% rename from ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/idx_db2.migrations rename to ebean-test/src/test/resources/migrationtest/dbmigration/db2/idx_db2.migrations diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver/1.0__initial.sql similarity index 100% rename from ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.0__initial.sql rename to ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver/1.0__initial.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver/1.1.sql similarity index 100% rename from ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.1.sql rename to ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver/1.1.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver/1.2__dropsFor_1.1.sql similarity index 100% rename from ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.2__dropsFor_1.1.sql rename to ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver/1.2__dropsFor_1.1.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver/1.3.sql similarity index 100% rename from ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.3.sql rename to ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver/1.3.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver/1.4__dropsFor_1.3.sql similarity index 100% rename from ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.4__dropsFor_1.3.sql rename to ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver/1.4__dropsFor_1.3.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/I__create_procs.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver/I__create_procs.sql similarity index 100% rename from ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/I__create_procs.sql rename to ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver/I__create_procs.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/R__order_views_mssql.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver/R__order_views_mssql.sql similarity index 100% rename from ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/R__order_views_mssql.sql rename to ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver/R__order_views_mssql.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/idx_sqlserver.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver/idx_sqlserver.migrations similarity index 100% rename from ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/idx_sqlserver.migrations rename to ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver/idx_sqlserver.migrations