Skip to content
Permalink
Browse files
Migrate from MariaDB to PostgreSQL, add postgresql-testing-lite scrip…
…t too
  • Loading branch information
Izakey committed Mar 23, 2019
1 parent a339661 commit d99003f30ef9ea3cf3f7e26a50fd1b9ae06d10d4
Show file tree
Hide file tree
Showing 3 changed files with 165 additions and 34 deletions.
@@ -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 ..
@@ -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 @@ public class ServiceRunner {
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 @@ public void before() throws Exception
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 @@ public void tearDown() throws Exception {
ServiceRunner.identityManager.kill();

if (!isPersistent) {
ServiceRunner.embeddedMariaDb.stop();
ServiceRunner.embeddedPostgres.close();
EmbeddedCassandraServerHelper.cleanEmbeddedCassandra();
}
}
@@ -728,16 +723,16 @@ private void setAdditionalProperties(final ExtraProperties properties) {
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));
}
}
}
@@ -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 @@ static Tenant create(final TestEnvironment testEnvironment, final String identif

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();

0 comments on commit d99003f

Please sign in to comment.