From b4fb7438e7d7017907fc715b920a6fb493c6ab85 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Tue, 8 Mar 2022 09:42:54 +0100 Subject: [PATCH] [New] Added environment variable to override DB host for tests --- .../configuration/DbConnectionBuilder.java | 4 ++++ .../dao/test/DbSchemaCreationTest.java | 20 +++++++++++------ .../dao/test/DbSchemaMigrationTest.java | 22 +++++++++++++------ .../command/AbstractRealmCommandTest.java | 11 +++++++--- 4 files changed, 40 insertions(+), 17 deletions(-) diff --git a/li.strolch.agent/src/main/java/li/strolch/runtime/configuration/DbConnectionBuilder.java b/li.strolch.agent/src/main/java/li/strolch/runtime/configuration/DbConnectionBuilder.java index f19b13e7c..da18feed0 100644 --- a/li.strolch.agent/src/main/java/li/strolch/runtime/configuration/DbConnectionBuilder.java +++ b/li.strolch.agent/src/main/java/li/strolch/runtime/configuration/DbConnectionBuilder.java @@ -129,6 +129,10 @@ public abstract class DbConnectionBuilder { String host = tmp.substring(0, tmp.indexOf('/')); String dbName = tmp.substring(tmp.indexOf('/')); String hostOverride = System.getProperty(PROP_DB_HOST_OVERRIDE); + + if (host.equals(hostOverride)) + return dbUrl; + logger.warn("[" + realm + "] Replacing db host " + host + " with override " + hostOverride); dbUrl = "jdbc:postgresql://" + hostOverride + dbName; logger.warn("[" + realm + "] DB URL is now " + dbUrl); diff --git a/li.strolch.persistence.postgresql/src/test/java/li/strolch/persistence/postgresql/dao/test/DbSchemaCreationTest.java b/li.strolch.persistence.postgresql/src/test/java/li/strolch/persistence/postgresql/dao/test/DbSchemaCreationTest.java index a28528f19..dcfc7f955 100644 --- a/li.strolch.persistence.postgresql/src/test/java/li/strolch/persistence/postgresql/dao/test/DbSchemaCreationTest.java +++ b/li.strolch.persistence.postgresql/src/test/java/li/strolch/persistence/postgresql/dao/test/DbSchemaCreationTest.java @@ -16,10 +16,12 @@ package li.strolch.persistence.postgresql.dao.test; import static java.util.Comparator.comparing; +import static li.strolch.db.DbConstants.PROP_DB_HOST_OVERRIDE; import static li.strolch.persistence.postgresql.PostgreSqlPersistenceHandler.SCRIPT_PREFIX_ARCHIVE; import static li.strolch.persistence.postgresql.PostgreSqlPersistenceHandler.SCRIPT_PREFIX_STROLCH; import static li.strolch.persistence.postgresql.dao.test.CachedDaoTest.*; import static li.strolch.runtime.StrolchConstants.DEFAULT_REALM; +import static li.strolch.runtime.configuration.DbConnectionBuilder.overridePostgresqlHost; import static org.junit.Assert.assertNotNull; import java.io.File; @@ -64,28 +66,32 @@ public class DbSchemaCreationTest { logger.info("Trying to create DB schema for " + scriptPrefix); logger.info(""); + String dbUrl = DB_URL; + if (System.getProperties().containsKey(PROP_DB_HOST_OVERRIDE)) + dbUrl = overridePostgresqlHost(DbSchemaCreationTest.class.getSimpleName(), dbUrl); + DbSchemaVersionCheck dbCheck = new DbSchemaVersionCheck(scriptPrefix, PostgreSqlPersistenceHandler.class, true, true, true); - try (Connection con = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD)) { + try (Connection con = DriverManager.getConnection(dbUrl, DB_USERNAME, DB_PASSWORD)) { // CREATE 0.1.0 dbCheck.createSchema(con, DEFAULT_REALM, Version.valueOf("0.1.0")); File scriptsD = new File("src/main/resources"); - File[] scriptFiles = scriptsD - .listFiles(f -> f.getName().startsWith(scriptPrefix) && f.getName().endsWith("_initial.sql")); + File[] scriptFiles = scriptsD.listFiles( + f -> f.getName().startsWith(scriptPrefix) && f.getName().endsWith("_initial.sql")); assertNotNull(scriptFiles); Arrays.sort(scriptFiles, comparing(File::getName)); for (File scriptFile : scriptFiles) { String name = scriptFile.getName(); - String versionS = name - .substring((scriptPrefix + "_db_schema_").length(), name.length() - "_initial.sql".length()); + String versionS = name.substring((scriptPrefix + "_db_schema_").length(), + name.length() - "_initial.sql".length()); Version version = Version.valueOf(versionS); logger.info("Creating Version " + version); - dropSchema(DbSchemaCreationTest.class.getSimpleName(), scriptPrefix, DB_URL, DB_USERNAME, DB_PASSWORD); + dropSchema(DbSchemaCreationTest.class.getSimpleName(), scriptPrefix, dbUrl, DB_USERNAME, DB_PASSWORD); // CREATE dbCheck.createSchema(con, DEFAULT_REALM, version); @@ -93,7 +99,7 @@ public class DbSchemaCreationTest { } catch (SQLException e) { String msg = "Failed to open DB connection to URL {0} due to: {1}"; //$NON-NLS-1$ - msg = MessageFormat.format(msg, DB_URL, e.getMessage()); + msg = MessageFormat.format(msg, dbUrl, e.getMessage()); throw new DbException(msg, e); } } diff --git a/li.strolch.persistence.postgresql/src/test/java/li/strolch/persistence/postgresql/dao/test/DbSchemaMigrationTest.java b/li.strolch.persistence.postgresql/src/test/java/li/strolch/persistence/postgresql/dao/test/DbSchemaMigrationTest.java index 912d7d3d3..e1805763b 100644 --- a/li.strolch.persistence.postgresql/src/test/java/li/strolch/persistence/postgresql/dao/test/DbSchemaMigrationTest.java +++ b/li.strolch.persistence.postgresql/src/test/java/li/strolch/persistence/postgresql/dao/test/DbSchemaMigrationTest.java @@ -15,10 +15,12 @@ */ package li.strolch.persistence.postgresql.dao.test; +import static li.strolch.db.DbConstants.PROP_DB_HOST_OVERRIDE; import static li.strolch.persistence.postgresql.PostgreSqlPersistenceHandler.SCRIPT_PREFIX_ARCHIVE; import static li.strolch.persistence.postgresql.PostgreSqlPersistenceHandler.SCRIPT_PREFIX_STROLCH; import static li.strolch.persistence.postgresql.dao.test.CachedDaoTest.*; import static li.strolch.runtime.StrolchConstants.DEFAULT_REALM; +import static li.strolch.runtime.configuration.DbConnectionBuilder.overridePostgresqlHost; import java.sql.Connection; import java.sql.DriverManager; @@ -43,8 +45,10 @@ public class DbSchemaMigrationTest { @BeforeClass public static void beforeClass() throws Exception { - dropSchema(DbSchemaMigrationTest.class.getSimpleName(), SCRIPT_PREFIX_ARCHIVE, DB_URL, DB_USERNAME, DB_PASSWORD); - dropSchema(DbSchemaMigrationTest.class.getSimpleName(), SCRIPT_PREFIX_STROLCH, DB_URL, DB_USERNAME, DB_PASSWORD); + dropSchema(DbSchemaMigrationTest.class.getSimpleName(), SCRIPT_PREFIX_ARCHIVE, DB_URL, DB_USERNAME, + DB_PASSWORD); + dropSchema(DbSchemaMigrationTest.class.getSimpleName(), SCRIPT_PREFIX_STROLCH, DB_URL, DB_USERNAME, + DB_PASSWORD); } @Test @@ -60,27 +64,31 @@ public class DbSchemaMigrationTest { logger.info("Trying to migrate DB schema from 0.1.0 upwards..."); logger.info(""); + String dbUrl = DB_URL; + if (System.getProperties().containsKey(PROP_DB_HOST_OVERRIDE)) + dbUrl = overridePostgresqlHost(DbSchemaCreationTest.class.getSimpleName(), dbUrl); + // first clear DB - dropSchema(DbSchemaMigrationTest.class.getSimpleName(), scriptPrefix, DB_URL, DB_USERNAME, DB_PASSWORD); + dropSchema(DbSchemaMigrationTest.class.getSimpleName(), scriptPrefix, dbUrl, DB_USERNAME, DB_PASSWORD); DbSchemaVersionCheck dbCheck = new DbSchemaVersionCheck(scriptPrefix, PostgreSqlPersistenceHandler.class, true, true, true); - try (Connection con = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD)) { + try (Connection con = DriverManager.getConnection(dbUrl, DB_USERNAME, DB_PASSWORD)) { // CREATE 0.1.0 Version currentVersion = Version.valueOf("0.1.0"); dbCheck.createSchema(con, DEFAULT_REALM, currentVersion); - Version expectedDbVersion = DbSchemaVersionCheck - .getExpectedDbVersion(scriptPrefix, PostgreSqlPersistenceHandler.class); + Version expectedDbVersion = DbSchemaVersionCheck.getExpectedDbVersion(scriptPrefix, + PostgreSqlPersistenceHandler.class); // MIGRATE dbCheck.migrateSchema(con, DEFAULT_REALM, currentVersion, expectedDbVersion); } catch (SQLException e) { String msg = "Failed to open DB connection to URL {0} due to: {1}"; //$NON-NLS-1$ - msg = MessageFormat.format(msg, DB_URL, e.getMessage()); + msg = MessageFormat.format(msg, dbUrl, e.getMessage()); throw new DbException(msg, e); } } diff --git a/li.strolch.service/src/test/java/li/strolch/command/AbstractRealmCommandTest.java b/li.strolch.service/src/test/java/li/strolch/command/AbstractRealmCommandTest.java index 4284eb0f2..fbcc8cca8 100644 --- a/li.strolch.service/src/test/java/li/strolch/command/AbstractRealmCommandTest.java +++ b/li.strolch.service/src/test/java/li/strolch/command/AbstractRealmCommandTest.java @@ -15,6 +15,8 @@ */ package li.strolch.command; +import static li.strolch.db.DbConstants.PROP_DB_HOST_OVERRIDE; +import static li.strolch.runtime.configuration.DbConnectionBuilder.overridePostgresqlHost; import static li.strolch.service.test.AbstractRealmServiceTest.*; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsString; @@ -49,7 +51,11 @@ public abstract class AbstractRealmCommandTest { @Before public void beforeClass() throws Exception { - dropSchema("jdbc:postgresql://localhost/cacheduserdb", "cacheduser", "test"); + String dbUrl = "jdbc:postgresql://localhost/cacheduserdb"; + if (System.getProperties().containsKey(PROP_DB_HOST_OVERRIDE)) + dbUrl = overridePostgresqlHost(AbstractRealmCommandTest.class.getSimpleName(), dbUrl); + + dropSchema(dbUrl, "cacheduser", "test"); File rootPath = new File(RUNTIME_PATH); File configSrc = new File(CONFIG_SRC); @@ -127,8 +133,7 @@ public abstract class AbstractRealmCommandTest { private Command command; /** - * @param container - * @param tx + * */ public FailCommandFacade(ComponentContainer container, StrolchTransaction tx, Command command) { super(tx);