diff options
Diffstat (limited to 'src/auditor/setup.sh')
-rwxr-xr-x | src/auditor/setup.sh | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/src/auditor/setup.sh b/src/auditor/setup.sh new file mode 100755 index 000000000..bb17e92ae --- /dev/null +++ b/src/auditor/setup.sh @@ -0,0 +1,93 @@ +#!/bin/bash +# This file is in the public domain + +# Script to be inlined into the main test scripts. Defines function 'setup()' +# which wraps around 'taler-unified-setup.sh' to launch GNU Taler services. +# Call setup() with the arguments to pass to 'taler-unified-setup'. setup() +# will then launch GNU Taler, wait for the process to be complete before +# returning. The script will also install an exit handler to ensure the GNU +# Taler processes are stopped when the shell exits. + +set -eu + +# Cleanup to run whenever we exit +function exit_cleanup() +{ + if [ ! -z ${SETUP_PID+x} ] + then + echo "Killing taler-unified-setup ($SETUP_PID)" >&2 + kill -TERM "$SETUP_PID" 2> /dev/null || true + wait "$SETUP_PID" 2> /dev/null || true + fi +} + +# Install cleanup handler (except for kill -9) +trap exit_cleanup EXIT + +function setup() +{ + echo "Starting test system ..." >&2 + # Create a named pipe in a temp directory we own. + FIFO_DIR=$(mktemp -d fifo-XXXXXX) + FIFO_OUT=$(echo "$FIFO_DIR/out") + mkfifo "$FIFO_OUT" + # Open pipe as FD 3 (RW) and FD 4 (RO) + exec 3<> "$FIFO_OUT" 4< "$FIFO_OUT" + rm -rf "$FIFO_DIR" + # We require '-W' for our termination logic to work. + taler-unified-setup.sh -W "$@" \ + > >(tee taler-unified-setup.log >&3) & + SETUP_PID=$! + # Close FD3 + exec 3>&- + sed -u '/<<READY>>/ q' <&4 + # Close FD4 + exec 4>&- + echo "Test system ready" >&2 +} + +# Exit, with status code "skip" (no 'real' failure) +function exit_fail() { + echo "$@" >&2 + exit 1 +} + +# Exit, with status code "skip" (no 'real' failure) +function exit_skip() { + echo "SKIPPING: $1" + exit 77 +} + +function get_payto_uri() { + export LIBEUFIN_SANDBOX_USERNAME="$1" + export LIBEUFIN_SANDBOX_PASSWORD="$2" + export LIBEUFIN_SANDBOX_URL="http://localhost:18082" + echo "get_payto_uri currently not implemented" + exit 1 +# libeufin-cli sandbox demobank info --bank-account "$1" | jq --raw-output '.paytoUri' +} + +# Stop libeufin-bank (if running) +function stop_libeufin() +{ + echo -n "Stopping libeufin... " + if [ -f "${MY_TMP_DIR:-/}/libeufin-bank.pid" ] + then + PID=$(cat "${MY_TMP_DIR}/libeufin-bank.pid" 2> /dev/null) + echo "Killing libeufin-bank $PID" + rm "${MY_TMP_DIR}/libeufin-bank.pid" + kill "$PID" 2> /dev/null || true + wait "$PID" || true + fi + echo "DONE" +} + + +function launch_libeufin () { + libeufin-bank serve \ + -c "$CONF" \ + -L "INFO" \ + > "${MY_TMP_DIR}/libeufin-bank-stdout.log" \ + 2> "${MY_TMP_DIR}/libeufin-bank-stderr.log" & + echo $! > "${MY_TMP_DIR}/libeufin-bank.pid" +} |