Migrate from MariaDB to PostgreSQL, add postgresql-testing-lite script too
diff --git a/scripts/Unix/postgres-setup-lite.sh b/scripts/Unix/postgres-setup-lite.sh
new file mode 100755
index 0000000..ec2cba6
--- /dev/null
+++ b/scripts/Unix/postgres-setup-lite.sh
@@ -0,0 +1,136 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+#!/usr/bin/env bash
+
+githubAccount=$1
+
+# REM create core folder
+mkdir -p core
+cd core
+
+get_modules() {
+ for module in $@
+ do
+ git clone https://github.com/$githubAccount/$module.git -b develop
+ cd $module
+ git remote add upstream https://github.com/apache/$module.git
+ # For some reason permission gets denied
+ chmod +x gradlew
+ ./gradlew publishToMavenLocal
+ cd ..
+ done
+}
+
+get_modules fineract-cn-lang fineract-cn-api fineract-cn-async fineract-cn-cassandra fineract-cn-postgresql fineract-cn-command
+
+# REM clone fineract-cn-test FINCN-114
+git clone https://github.com/$githubAccount/fineract-cn-test.git -b FINCN-114
+cd fineract-cn-test
+git remote add upstream https://github.com/apache/fineract-cn-test.git
+chmod +x gradlew
+./gradlew publishToMavenLocal
+cd ..
+
+# Return to start folder
+cd ..
+
+# REM create tools folder
+mkdir tools
+cd tools
+
+# REM initialize fineract-cn-crypto
+git clone https://github.com/$githubAccount/fineract-cn-crypto.git -b develop
+cd fineract-cn-crypto
+git remote add upstream https://github.com/apache/fineract-cn-crypto.git
+chmod +x gradlew
+./gradlew publishToMavenLocal
+cd ..
+
+# exit tools directory
+cd ..
+
+get_modules fineract-cn-anubis fineract-cn-identity fineract-cn-permitted-feign-client
+
+# REM clone fineract-cn-provisioner FINCN-129
+git clone https://github.com/$githubAccount/fineract-cn-provisioner.git -b FINCN-129
+cd fineract-cn-provisioner
+git remote add upstream https://github.com/apache/fineract-cn-provisioner.git
+chmod +x gradlew
+./gradlew publishToMavenLocal
+cd ..
+
+# REM clone fineract-cn-rhythm FINCN-115
+git clone https://github.com/$githubAccount/fineract-cn-rhythm.git -b FINCN-115
+cd fineract-cn-rhythm
+git remote add upstream https://github.com/apache/fineract-cn-rhythm.git
+chmod +x gradlew
+./gradlew publishToMavenLocal
+cd ..
+
+# REM clone fineract-cn-template FINCN-120
+git clone https://github.com/$githubAccount/fineract-cn-template.git -b FINCN-120
+cd fineract-cn-template
+git remote add upstream https://github.com/apache/fineract-cn-template.git
+chmod +x gradlew
+./gradlew publishToMavenLocal
+cd ..
+
+# REM clone fineract-cn-office FINCN-117
+git clone https://github.com/$githubAccount/fineract-cn-office.git -b FINCN-117
+cd fineract-cn-office
+git remote add upstream https://github.com/apache/fineract-cn-office.git
+chmod +x gradlew
+./gradlew publishToMavenLocal
+cd ..
+
+# REM clone fineract-cn-customer FINCN-116
+git clone https://github.com/$githubAccount/fineract-cn-customer.git -b FINCN-116
+cd fineract-cn-customer
+git remote add upstream https://github.com/apache/fineract-cn-customer.git
+chmod +x gradlew
+./gradlew publishToMavenLocal
+cd ..
+
+mkdir integration-tests
+cd integration-tests
+
+# REM clone fineract-cn-service-starter FINCN-140
+git clone https://github.com/$githubAccount/fineract-cn-service-starter.git -b FINCN-140
+cd fineract-cn-service-starter
+git remote add upstream https://github.com/apache/fineract-cn-service-starter.git
+chmod +x gradlew
+./gradlew publishToMavenLocal
+cd ..
+
+# REM clone fineract-cn-demo-server FINCN-141
+git clone https://github.com/$githubAccount/fineract-cn-demo-server.git -b FINCN-141
+cd fineract-cn-demo-server
+git remote add upstream https://github.com/apache/fineract-cn-demo-server.git
+chmod +x gradlew
+./gradlew publishToMavenLocal
+cd ..
+
+# REM initialize Web App
+git clone https://github.com/$githubAccount/fineract-cn-fims-web-app.git
+cd fineract-cn-fims-web-app
+git remote add upstream https://github.com/apache/fineract-cn-fims-web-app.git
+npm i
+
+cd ..
diff --git a/src/main/java/org/apache/fineract/cn/dev/ServiceRunner.java b/src/main/java/org/apache/fineract/cn/dev/ServiceRunner.java
index 357ea83..78698b0 100644
--- a/src/main/java/org/apache/fineract/cn/dev/ServiceRunner.java
+++ b/src/main/java/org/apache/fineract/cn/dev/ServiceRunner.java
@@ -18,8 +18,18 @@
*/
package org.apache.fineract.cn.dev;
-import ch.vorburger.mariadb4j.DB;
-import ch.vorburger.mariadb4j.DBConfigurationBuilder;
+import static org.apache.fineract.cn.accounting.api.v1.EventConstants.POST_ACCOUNT;
+import static org.apache.fineract.cn.accounting.api.v1.EventConstants.POST_LEDGER;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Scanner;
+import java.util.concurrent.TimeUnit;
+
+import com.opentable.db.postgres.embedded.EmbeddedPostgres;
import org.apache.fineract.cn.accounting.api.v1.client.LedgerManager;
import org.apache.fineract.cn.accounting.importer.AccountImporter;
import org.apache.fineract.cn.accounting.importer.LedgerImporter;
@@ -47,7 +57,7 @@
import org.apache.fineract.cn.identity.api.v1.events.ApplicationSignatureEvent;
import org.apache.fineract.cn.identity.api.v1.events.EventConstants;
import org.apache.fineract.cn.lang.AutoTenantContext;
-import org.apache.fineract.cn.mariadb.util.MariaDBConstants;
+import org.apache.fineract.cn.postgresql.util.PostgreSQLConstants;
import org.apache.fineract.cn.notification.api.v1.client.NotificationManager;
import org.apache.fineract.cn.office.api.v1.client.OrganizationManager;
import org.apache.fineract.cn.payroll.api.v1.client.PayrollManager;
@@ -90,17 +100,7 @@
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.util.Base64Utils;
-import java.io.IOException;
-import java.net.URL;
import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Scanner;
-import java.util.concurrent.TimeUnit;
-
-import static org.apache.fineract.cn.accounting.api.v1.EventConstants.POST_ACCOUNT;
-import static org.apache.fineract.cn.accounting.api.v1.EventConstants.POST_LEDGER;
@SuppressWarnings("SpringAutowiredFieldsWarningInspection")
@RunWith(SpringRunner.class)
@@ -131,7 +131,7 @@
private static Microservice<GroupManager> groupManager;
private static Microservice<NotificationManager> notificationManager;
- private static DB embeddedMariaDb;
+ private static EmbeddedPostgres embeddedPostgres;
private static final String CUSTOM_PROP_PREFIX = "custom.";
private boolean runInDebug;
@@ -199,13 +199,8 @@
if (!this.isPersistent) {
// start embedded Cassandra
EmbeddedCassandraServerHelper.startEmbeddedCassandra(TimeUnit.SECONDS.toMillis(30L));
- // start embedded MariaDB
- ServiceRunner.embeddedMariaDb = DB.newEmbeddedDB(
- DBConfigurationBuilder.newBuilder()
- .setPort(3306)
- .build()
- );
- ServiceRunner.embeddedMariaDb.start();
+ // start embedded PostgreSQL
+ ServiceRunner.embeddedPostgres = embeddedPostgres.builder().setPort(5432).start();
}
ExtraProperties generalProperties = new ExtraProperties();
@@ -291,7 +286,7 @@
ServiceRunner.identityManager.kill();
if (!isPersistent) {
- ServiceRunner.embeddedMariaDb.stop();
+ ServiceRunner.embeddedPostgres.close();
EmbeddedCassandraServerHelper.cleanEmbeddedCassandra();
}
}
@@ -728,16 +723,16 @@
properties.setProperty(CassandraConnectorConstants.CLUSTER_PASSWORD_PROP, this.environment.getProperty(CassandraConnectorConstants.CLUSTER_PASSWORD_PROP));
}
- if (this.environment.containsProperty(ServiceRunner.CUSTOM_PROP_PREFIX + MariaDBConstants.MARIADB_HOST_PROP)) {
- properties.setProperty(MariaDBConstants.MARIADB_HOST_PROP, this.environment.getProperty(ServiceRunner.CUSTOM_PROP_PREFIX + MariaDBConstants.MARIADB_HOST_PROP));
+ if (this.environment.containsProperty(ServiceRunner.CUSTOM_PROP_PREFIX + PostgreSQLConstants.POSTGRESQL_HOST_PROP)) {
+ properties.setProperty(PostgreSQLConstants.POSTGRESQL_HOST_PROP, this.environment.getProperty(ServiceRunner.CUSTOM_PROP_PREFIX + PostgreSQLConstants.POSTGRESQL_HOST_PROP));
}
- if (this.environment.containsProperty(ServiceRunner.CUSTOM_PROP_PREFIX + MariaDBConstants.MARIADB_USER_PROP)) {
- properties.setProperty(MariaDBConstants.MARIADB_USER_PROP, this.environment.getProperty(ServiceRunner.CUSTOM_PROP_PREFIX + MariaDBConstants.MARIADB_USER_PROP));
+ if (this.environment.containsProperty(ServiceRunner.CUSTOM_PROP_PREFIX + PostgreSQLConstants.POSTGRESQL_USER_PROP)) {
+ properties.setProperty(PostgreSQLConstants.POSTGRESQL_USER_PROP, this.environment.getProperty(ServiceRunner.CUSTOM_PROP_PREFIX + PostgreSQLConstants.POSTGRESQL_USER_PROP));
}
- if (this.environment.containsProperty(ServiceRunner.CUSTOM_PROP_PREFIX + MariaDBConstants.MARIADB_PASSWORD_PROP)) {
- properties.setProperty(MariaDBConstants.MARIADB_PASSWORD_PROP, this.environment.getProperty(ServiceRunner.CUSTOM_PROP_PREFIX + MariaDBConstants.MARIADB_PASSWORD_PROP));
+ if (this.environment.containsProperty(ServiceRunner.CUSTOM_PROP_PREFIX + PostgreSQLConstants.POSTGRESQL_PASSWORD_PROP)) {
+ properties.setProperty(PostgreSQLConstants.POSTGRESQL_PASSWORD_PROP, this.environment.getProperty(ServiceRunner.CUSTOM_PROP_PREFIX + PostgreSQLConstants.POSTGRESQL_PASSWORD_PROP));
}
}
}
\ No newline at end of file
diff --git a/src/main/java/org/apache/fineract/cn/dev/TenantBuilder.java b/src/main/java/org/apache/fineract/cn/dev/TenantBuilder.java
index a934053..d761ae3 100644
--- a/src/main/java/org/apache/fineract/cn/dev/TenantBuilder.java
+++ b/src/main/java/org/apache/fineract/cn/dev/TenantBuilder.java
@@ -19,7 +19,7 @@
package org.apache.fineract.cn.dev;
import org.apache.fineract.cn.cassandra.util.CassandraConnectorConstants;
-import org.apache.fineract.cn.mariadb.util.MariaDBConstants;
+import org.apache.fineract.cn.postgresql.util.PostgreSQLConstants;
import org.apache.fineract.cn.test.env.TestEnvironment;
import org.apache.fineract.cn.provisioner.api.v1.domain.CassandraConnectionInfo;
import org.apache.fineract.cn.provisioner.api.v1.domain.DatabaseConnectionInfo;
@@ -40,12 +40,12 @@
final DatabaseConnectionInfo databaseConnectionInfo = new DatabaseConnectionInfo();
- databaseConnectionInfo.setDriverClass("org.mariadb.jdbc.Driver");
+ databaseConnectionInfo.setDriverClass(PostgreSQLConstants.POSTGRESQL_DRIVER_CLASS_DEFAULT);
databaseConnectionInfo.setDatabaseName(databaseName);
- databaseConnectionInfo.setHost(testEnvironment.getProperty(MariaDBConstants.MARIADB_HOST_PROP));
- databaseConnectionInfo.setPort(testEnvironment.getProperty(MariaDBConstants.MARIADB_PORT_PROP));
- databaseConnectionInfo.setUser(testEnvironment.getProperty(MariaDBConstants.MARIADB_USER_PROP));
- databaseConnectionInfo.setPassword(testEnvironment.getProperty(MariaDBConstants.MARIADB_PASSWORD_PROP));
+ databaseConnectionInfo.setHost(testEnvironment.getProperty(PostgreSQLConstants.POSTGRESQL_HOST_PROP));
+ databaseConnectionInfo.setPort(testEnvironment.getProperty(PostgreSQLConstants.POSTGRESQL_PORT_PROP));
+ databaseConnectionInfo.setUser(testEnvironment.getProperty(PostgreSQLConstants.POSTGRESQL_USER_PROP));
+ databaseConnectionInfo.setPassword(testEnvironment.getProperty(PostgreSQLConstants.POSTGRESQL_PASSWORD_PROP));
tenant.setDatabaseConnectionInfo(databaseConnectionInfo);
final CassandraConnectionInfo cassandraConnectionInfo = new CassandraConnectionInfo();