diff --git a/.travis.yml b/.travis.yml index ad9958b0b5..cb8f4859dd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,7 +14,7 @@ addons: postgresql: 9.6 apt: packages: - - postgresql-9.6-postgis-2.4 + - postgresql-9.6-postgis-2.3 - graphviz hostname: travis-brmo hosts: travis-brmo @@ -115,6 +115,12 @@ script: - travis_wait 20 mvn --settings .travis/settings.xml -e test -B -Pstandard-with-extra-repos,$PROFILE -pl '!brmo-dist' -Dtest.onlyITs=false; # fi # run integratie tests voor veschillende modules, per module + - if [ "$PROFILE" == "postgresql -Dupgrade=true" ]; then + sh ".travis/execute-upgrades-pgsql.sh staging"; + sh ".travis/execute-upgrades-pgsql.sh rsgb"; + sh ".travis/execute-upgrades-pgsql.sh rsgbbgt"; + mvn -e -B -P$PROFILE -pl 'datamodel' resources:testResources compiler:testCompile surefire:test; + fi # run integratie tests voor brmo-loader module - echo 'integratie tests voor brmo-loader module' - travis_wait 40 mvn -e verify -B -P$PROFILE -Dtest.onlyITs=true -pl 'brmo-loader' diff --git a/.travis/execute-upgrades-pgsql.sh b/.travis/execute-upgrades-pgsql.sh new file mode 100755 index 0000000000..6c5fa5d782 --- /dev/null +++ b/.travis/execute-upgrades-pgsql.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +CURSNAPSHOT=$(grep ".*<.version>" -m1 pom.xml | sed -e "s/^.*"| cut -f1 -d"<") + +NEXTRELEASE="${CURSNAPSHOT%-SNAPSHOT}" + +MAJOR="${CURSNAPSHOT%.*}" + +MINOR="${NEXTRELEASE##*.}" + +PREVMINOR=$(($MINOR-1)) + +PREVRELEASE=$MAJOR.$PREVMINOR + +echo "Huidige snapshot:" $CURSNAPSHOT", vorige release: "$PREVRELEASE", komende release: "$NEXTRELEASE + +psql -U postgres -d $1 -f ./old/db//upgrade_scripts/$PREVRELEASE-$NEXTRELEASE/postgresql/$1.sql diff --git a/datamodel/pom.xml b/datamodel/pom.xml index 51d34faba6..7b46362793 100644 --- a/datamodel/pom.xml +++ b/datamodel/pom.xml @@ -375,9 +375,10 @@ postgresql + testCompile - maven-failsafe-plugin + maven-surefire-plugin postgis.properties diff --git a/datamodel/src/test/java/nl/b3p/brmo/datamodel/DatabaseUpgradeIntegrationTest.java b/datamodel/src/test/java/nl/b3p/brmo/datamodel/DatabaseUpgradeTest.java similarity index 79% rename from datamodel/src/test/java/nl/b3p/brmo/datamodel/DatabaseUpgradeIntegrationTest.java rename to datamodel/src/test/java/nl/b3p/brmo/datamodel/DatabaseUpgradeTest.java index 61ffb964ac..75f8ae042f 100644 --- a/datamodel/src/test/java/nl/b3p/brmo/datamodel/DatabaseUpgradeIntegrationTest.java +++ b/datamodel/src/test/java/nl/b3p/brmo/datamodel/DatabaseUpgradeTest.java @@ -8,63 +8,68 @@ import java.util.Arrays; import java.util.Collection; import java.util.Properties; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.dbunit.database.DatabaseDataSourceConnection; import org.junit.After; + import static org.junit.Assume.assumeNotNull; + import org.junit.Before; import org.junit.BeforeClass; -import org.junit.Rule; import org.junit.Test; -import org.junit.rules.TestName; import org.apache.commons.dbcp.BasicDataSource; import org.dbunit.database.DatabaseConfig; -import org.dbunit.database.DatabaseConnection; import org.dbunit.database.IDatabaseConnection; import org.dbunit.dataset.ITable; import org.dbunit.ext.mssql.MsSqlDataTypeFactory; import org.dbunit.ext.oracle.Oracle10DataTypeFactory; import org.dbunit.ext.postgresql.PostgresqlDataTypeFactory; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; + import org.junit.runner.RunWith; import org.junit.runners.Parameterized; /** - * + * Een testcase om te kijken of het upgrade script correct is verwerkt * @author Mark Prins */ @RunWith(Parameterized.class) -public class DatabaseUpgradeIntegrationTest { +public class DatabaseUpgradeTest { @Parameterized.Parameters(name = "{index}: testen database: {0}") public static Collection params() { return Arrays.asList(new Object[][]{ - {"staging"}, {"rsgb"}, {"rsgbbgt"} + {"staging"}, {"rsgb"}, {"rsgbbgt"} }); } private String dbName; - public DatabaseUpgradeIntegrationTest(String dbName) { + public DatabaseUpgradeTest(String dbName) { this.dbName = dbName; } private IDatabaseConnection db; - private static String currentVersion; - private static String previousVersion; - private static final Log LOG = LogFactory.getLog(DatabaseUpgradeIntegrationTest.class); + private static String nextRelease; + private static String previousRelease; + private static final Log LOG = LogFactory.getLog(DatabaseUpgradeTest.class); @BeforeClass public static void getEnvironment() { - currentVersion = System.getProperty("project.version").replace("-SNAPSHOT", ""); + nextRelease = System.getProperty("project.version").replace("-SNAPSHOT", ""); + LOG.debug("komende release is: " + nextRelease); // Semantic Versioning scheme (MAJOR.MINOR.PATCH) - previousVersion = currentVersion; - int patch = Integer.parseInt(currentVersion.substring(currentVersion.lastIndexOf("."), currentVersion.length() - 1)); - previousVersion = currentVersion.substring(0, currentVersion.lastIndexOf(".")) + "." + (patch - 1); + previousRelease = nextRelease; + int patch = Integer.parseInt(nextRelease.substring(nextRelease.lastIndexOf(".") + 1)); + LOG.debug("release patch is: " + patch); + previousRelease = nextRelease.substring(0, nextRelease.lastIndexOf(".")) + "." + (patch - 1); + LOG.debug("vorige release is: " + previousRelease); } /** @@ -134,18 +139,21 @@ public void testCurrentVersion() throws Exception { for (int i = 0; i < metadata.getRowCount(); i++) { waarde = metadata.getValue(i, "waarde").toString(); naam = metadata.getValue(i, "naam").toString(); - if (currentVersion.equalsIgnoreCase(waarde) + + LOG.debug(String.format("database %s, metadata tabel record: %d: naam: %s, waarde: %s",this.dbName,i,naam, waarde)); + + if (nextRelease.equalsIgnoreCase(waarde) && "brmoversie".equalsIgnoreCase(naam)) { foundVersion = true; } - if ("vorige versie was 1.6.0".equalsIgnoreCase(waarde) - && "upgrade_1.6.0_naar_1.6.1".equalsIgnoreCase(naam)) { + if (("vorige versie was " + previousRelease).equalsIgnoreCase(waarde) + && ("upgrade_" + previousRelease + "_naar_" + nextRelease).equalsIgnoreCase(naam)) { foundUpdate = true; } } - assertTrue("Update versienummer niet correct", foundVersion); - assertTrue("Update text niet gevonden", foundUpdate); + assertTrue("Update versienummer niet correct voor "+this.dbName, foundVersion); + assertTrue("Update text niet gevonden voor "+this.dbName, foundUpdate); } @After @@ -161,11 +169,11 @@ public void cleanup() throws SQLException { */ public void loadProps() throws IOException { // de `database.properties.file` is in de pom.xml of via commandline ingesteld - params.load(DatabaseUpgradeIntegrationTest.class.getClassLoader() + params.load(DatabaseUpgradeTest.class.getClassLoader() .getResourceAsStream(System.getProperty("database.properties.file"))); try { // probeer een local (override) versie te laden als die bestaat - params.load(DatabaseUpgradeIntegrationTest.class.getClassLoader() + params.load(DatabaseUpgradeTest.class.getClassLoader() .getResourceAsStream("local." + System.getProperty("database.properties.file"))); } catch (IOException | NullPointerException e) { // negeren; het override bestand is normaal niet aanwezig diff --git a/datamodel/src/test/resources/log4j.xml b/datamodel/src/test/resources/log4j.xml new file mode 100644 index 0000000000..3c2a16d4c6 --- /dev/null +++ b/datamodel/src/test/resources/log4j.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/datamodel/src/test/resources/postgis.properties b/datamodel/src/test/resources/postgis.properties index 54b4cf82ae..e028476f9c 100644 --- a/datamodel/src/test/resources/postgis.properties +++ b/datamodel/src/test/resources/postgis.properties @@ -6,9 +6,9 @@ rsgb.username=rsgb rsgb.password=rsgb staging.url=jdbc:postgresql://localhost:5432/staging -staging.user=staging -staging.passwd=staging +staging.username=staging +staging.password=staging rsgbbgt.url=jdbc:postgresql://localhost:5432/rsgbbgt -rsgbbgt.user=rsgbbgt -rsgbbgt.passwd=rsgbbgt +rsgbbgt.username=rsgbbgt +rsgbbgt.password=rsgbbgt