diff --git a/scripts/federation.sh b/scripts/federation.sh index 24e925b..a68dc0a 100755 --- a/scripts/federation.sh +++ b/scripts/federation.sh @@ -8,14 +8,29 @@ set -e # # Then run this script and open http://ibis-alpha:8070/, http://ibis-beta:8080/ in your browser. +function cleanup { + echo "stop postgres" + ./scripts/stop_dev_db.sh $ALPHA_DB_PATH + ./scripts/stop_dev_db.sh $BETA_DB_PATH +} +trap cleanup EXIT + DB_FOLDER="$(pwd)/target/federation_db" mkdir -p "$DB_FOLDER/" ALPHA_DB_PATH="$DB_FOLDER/alpha" BETA_DB_PATH="$DB_FOLDER/beta" -# TODO: shouldnt wipe/recreate data if folder already exists -./tests/scripts/start_dev_db.sh $ALPHA_DB_PATH -./tests/scripts/start_dev_db.sh $BETA_DB_PATH +# create db folders if they dont exist +if [ ! -d $ALPHA_DB_PATH ]; then + ./scripts/start_dev_db.sh $ALPHA_DB_PATH +else + pg_ctl start --options="-c listen_addresses= -c unix_socket_directories=$ALPHA_DB_PATH" -D "$ALPHA_DB_PATH/dev_pgdata" +fi +if [ ! -d $BETA_DB_PATH ]; then + ./scripts/start_dev_db.sh $BETA_DB_PATH +else + pg_ctl start --options="-c listen_addresses= -c unix_socket_directories=$BETA_DB_PATH" -D "$BETA_DB_PATH/dev_pgdata" +fi ALPHA_DB_URL="postgresql://ibis:password@/ibis?host=$ALPHA_DB_PATH" BETA_DB_URL="postgresql://ibis:password@/ibis?host=$BETA_DB_PATH" @@ -25,12 +40,11 @@ killall ibis || true CARGO_TARGET_DIR=target/frontend trunk build -# launch a couple of local instances to test federation -# sometimes ctrl+c doesnt work properly, so you have to kill trunk, cargo-watch and ibis manually -(trap 'kill 0' SIGINT; - sh -c "IBIS__BIND=127.0.0.1:8070 IBIS__FEDERATION__DOMAIN=ibis-alpha:8070 IBIS__DATABASE_URL=$ALPHA_DB_URL cargo run" & - sh -c "IBIS__BIND=127.0.0.1:8080 IBIS__FEDERATION__DOMAIN=ibis-beta:8080 IBIS__DATABASE_URL=$BETA_DB_URL cargo run" & -) +# launch a couple of local instances to test federation, then wait for processes to finish +IBIS__BIND=127.0.0.1:8070 IBIS__FEDERATION__DOMAIN=ibis-alpha:8070 IBIS__DATABASE_URL=$ALPHA_DB_URL cargo run & +PID_ALPHA=($!) +IBIS__BIND=127.0.0.1:8080 IBIS__FEDERATION__DOMAIN=ibis-beta:8080 IBIS__DATABASE_URL=$BETA_DB_URL cargo run & +PID_BETA=($!) -./tests/scripts/stop_dev_db.sh $ALPHA_DB_PATH -./tests/scripts/stop_dev_db.sh $BETA_DB_PATH \ No newline at end of file +wait $PID_ALPHA +wait $PID_BETA diff --git a/tests/scripts/start_dev_db.sh b/scripts/start_dev_db.sh similarity index 100% rename from tests/scripts/start_dev_db.sh rename to scripts/start_dev_db.sh diff --git a/tests/scripts/stop_dev_db.sh b/scripts/stop_dev_db.sh similarity index 91% rename from tests/scripts/stop_dev_db.sh rename to scripts/stop_dev_db.sh index c26fd54..5ac9aab 100755 --- a/tests/scripts/stop_dev_db.sh +++ b/scripts/stop_dev_db.sh @@ -6,4 +6,3 @@ export PGDATA="$1/dev_pgdata" echo $PGHOST pg_ctl stop -rm -rf $1 \ No newline at end of file diff --git a/tests/common.rs b/tests/common.rs index 8cf60ea..2c546b6 100644 --- a/tests/common.rs +++ b/tests/common.rs @@ -95,10 +95,10 @@ impl IbisInstance { // remove old db remove_dir_all(&db_path).unwrap(); spawn(move || { - Command::new("./tests/scripts/start_dev_db.sh") + Command::new("./scripts/start_dev_db.sh") .arg(&db_path) - .stdout(Stdio::inherit()) - .stderr(Stdio::inherit()) + .stdout(Stdio::null()) + .stderr(Stdio::null()) .output() .unwrap(); }) @@ -144,7 +144,7 @@ impl IbisInstance { fn stop_internal(db_path: String) -> std::thread::JoinHandle<()> { spawn(move || { - Command::new("./tests/scripts/stop_dev_db.sh") + Command::new("./scripts/stop_dev_db.sh") .arg(db_path) .stdout(Stdio::null()) .stderr(Stdio::null())