aboutsummaryrefslogtreecommitdiff
path: root/src/auditor
diff options
context:
space:
mode:
Diffstat (limited to 'src/auditor')
-rwxr-xr-xsrc/auditor/generate-auditor-basedb.sh5
-rwxr-xr-xsrc/auditor/generate-revoke-basedb.sh14
-rwxr-xr-xsrc/auditor/test-auditor.sh55
-rwxr-xr-xsrc/auditor/test-revocation.sh66
-rwxr-xr-xsrc/auditor/test-sync.sh63
5 files changed, 161 insertions, 42 deletions
diff --git a/src/auditor/generate-auditor-basedb.sh b/src/auditor/generate-auditor-basedb.sh
index 396f85cfa..1a42a7b0e 100755
--- a/src/auditor/generate-auditor-basedb.sh
+++ b/src/auditor/generate-auditor-basedb.sh
@@ -65,11 +65,14 @@ rm -f $WALLET_DB
# delete libeufin database
rm -f $TARGET_DB
+
# Configuration file will be edited, so we create one
# from the template.
CONF_ONCE=${BASEDB}.conf
cp generate-auditor-basedb.conf $CONF_ONCE
taler-config -c ${CONF_ONCE} -s exchange-offline -o MASTER_PRIV_FILE -V ${BASEDB}.mpriv
+
+
echo -n "Testing for libeufin"
libeufin-cli --help >/dev/null </dev/null || exit_skip " MISSING"
echo " FOUND"
@@ -80,8 +83,6 @@ echo -n "Testing for curl"
curl --help >/dev/null </dev/null || exit_skip " MISSING"
echo " FOUND"
-
-pwd
# Clean up
DATA_DIR=`taler-config -f -c $CONF_ONCE -s PATHS -o TALER_HOME`
diff --git a/src/auditor/generate-revoke-basedb.sh b/src/auditor/generate-revoke-basedb.sh
index 3832876d8..64e25d59d 100755
--- a/src/auditor/generate-revoke-basedb.sh
+++ b/src/auditor/generate-revoke-basedb.sh
@@ -14,10 +14,18 @@ function cleanup()
do
kill $n 2> /dev/null || true
done
- echo Killing euFin..
- kill `cat libeufin-sandbox.pid 2> /dev/null` &> /dev/null || true
- kill `cat libeufin-nexus.pid 2> /dev/null` &> /dev/null || true
wait
+ if test -f libeufin-sandbox.pid
+ then
+ echo "Killing libeufin sandbox"
+ kill `cat libeufin-sandbox.pid 2> /dev/null` &> /dev/null || true
+ fi
+ if test -f libeufin-nexus.pid
+ then
+ echo "Killing libeufin nexus"
+ kill `cat libeufin-nexus.pid 2> /dev/null` &> /dev/null || true
+ fi
+ rm -f libeufin-sandbox.pid libeufin-nexus.pid
}
function get_payto_uri() {
diff --git a/src/auditor/test-auditor.sh b/src/auditor/test-auditor.sh
index 352ba5938..297225fec 100755
--- a/src/auditor/test-auditor.sh
+++ b/src/auditor/test-auditor.sh
@@ -35,28 +35,39 @@ LIBEUFIN_SETTLE_TIME=1
# Exit, with status code "skip" (no 'real' failure)
function exit_skip() {
- echo $1
+ echo "SKIPPING test: $1"
exit 77
}
# Exit, with error message (hard failure)
function exit_fail() {
- echo $1
+ echo "FAILING test: $1"
exit 1
}
# Cleanup to run whenever we exit
function cleanup()
{
+ if test ! -z ${POSTGRES_PATH:-}
+ then
+ ${POSTGRES_PATH}/pg_ctl -D $TMPDIR -l /dev/null stop &> /dev/null || true
+ fi
for n in `jobs -p`
do
kill $n 2> /dev/null || true
done
wait
# kill euFin
- echo -n "Killing euFin.."
- kill `cat libeufin-sandbox.pid 2> /dev/null` &> /dev/null || true
- kill `cat libeufin-nexus.pid 2> /dev/null` &> /dev/null || true
+ if test -f libeufin-sandbox.pid
+ then
+ echo "Killing libeufin sandbox"
+ kill `cat libeufin-sandbox.pid 2> /dev/null` &> /dev/null || true
+ fi
+ if test -f libeufin-nexus.pid
+ then
+ echo "Killing libeufin nexus"
+ kill `cat libeufin-nexus.pid 2> /dev/null` &> /dev/null || true
+ fi
echo DONE
}
@@ -1978,14 +1989,41 @@ echo "Testing for faketime"
faketime -h > /dev/null || exit_skip "faketime required"
# NOTE: really check for all three libeufin commands?
echo "Testing for libeufin"
-libeufin-cli --help >/dev/null </dev/null || exit_skip "libeufin required"
+libeufin-cli --help >/dev/null 2> /dev/null </dev/null || exit_skip "libeufin required"
echo "Testing for pdflatex"
which pdflatex > /dev/null </dev/null || exit_skip "pdflatex required"
-
-# check if we should regenerate the database
echo "Testing for taler-wallet-cli"
taler-wallet-cli -h >/dev/null </dev/null 2>/dev/null || exit_skip "taler-wallet-cli required"
MYDIR=`mktemp -d /tmp/taler-auditor-basedbXXXXXX`
+
+
+echo -n "Testing for Postgres"
+HAVE_INITDB=`find /usr -name "initdb" | grep postgres` || exit_skip " MISSING"
+echo " FOUND"
+echo -n "Setting up Postgres DB"
+INITDB_BIN=`find /usr -name "initdb" | grep bin/initdb | grep postgres | sort -n | tail -n1`
+POSTGRES_PATH=`basename $INITDB_BIN`
+TMPDIR=`mktemp -d /tmp/taler-test-postgresXXXXXX`
+$INITDB_BIN --no-sync --auth=trust -D ${TMPDIR} > postgres-dbinit.log 2> postgres-dbinit.err
+echo " DONE"
+mkdir ${TMPDIR}/sockets
+echo -n "Launching Postgres service"
+cat - >> $TMPDIR/postgresql.conf <<EOF
+unix_socket_directories='${TMPDIR}/sockets'
+fsync=off
+max_wal_senders=0
+synchronous_commit=off
+wal_level=minimal
+listen_addresses=''
+EOF
+cat $TMPDIR/pg_hba.conf | grep -v host > $TMPDIR/pg_hba.conf.new
+mv $TMPDIR/pg_hba.conf.new $TMPDIR/pg_hba.conf
+${POSTGRES_PATH}/pg_ctl -D $TMPDIR -l /dev/null start > postgres-start.log 2> postgres-start.err
+echo " DONE"
+PGHOST="$TMPDIR/sockets"
+EXPORT PGHOST="@POSTGRES_SOCKET"
+
+
echo "Generating fresh database at $MYDIR"
if faketime -f '-1 d' ./generate-auditor-basedb.sh $MYDIR/basedb
then
@@ -1996,6 +2034,7 @@ then
else
echo "Cleaning up $MYDIR..."
rm -rf $MYDIR || echo "Removing $MYDIR failed"
+ rm -rf $TMPDIR || echo "Removing $TMPDIR failed"
fi
else
echo "Generation failed"
diff --git a/src/auditor/test-revocation.sh b/src/auditor/test-revocation.sh
index 3f7a399f0..d9737ed53 100755
--- a/src/auditor/test-revocation.sh
+++ b/src/auditor/test-revocation.sh
@@ -29,39 +29,39 @@ VALGRIND=""
# Exit, with status code "skip" (no 'real' failure)
function exit_skip() {
- echo $1
+ echo "SKIPPING test: $1"
exit 77
}
# Exit, with error message (hard failure)
function exit_fail() {
- echo $1
+ echo "FAILING test: $1"
exit 1
}
# Cleanup to run whenever we exit
function cleanup()
{
+ if test ! -z ${POSTGRES_PATH:-}
+ then
+ ${POSTGRES_PATH}/pg_ctl -D $TMPDIR -l /dev/null stop &> /dev/null || true
+ fi
for n in `jobs -p`
do
kill $n 2> /dev/null || true
done
wait
- # kill euFin
- echo Killing euFin..
- kill `cat libeufin-sandbox.pid 2> /dev/null` &> /dev/null || true
- kill `cat libeufin-nexus.pid 2> /dev/null` &> /dev/null || true
- # So far only Sandbox gave exit issues / delays ..
- count=0
- while ps xo pid | grep `cat libeufin-sandbox.pid`; do
- if test $count = 5; then
- echo "Sandbox unkillable, failing now .."
- exit 1
- fi
- echo "Sandbox didn't exit yet.."
- sleep 1;
- count=`expr $count + 1`
- done
+ if test -f libeufin-sandbox.pid
+ then
+ echo "Killing libeufin sandbox"
+ kill `cat libeufin-sandbox.pid 2> /dev/null` &> /dev/null || true
+ fi
+ if test -f libeufin-nexus.pid
+ then
+ echo "Killing libeufin nexus"
+ kill `cat libeufin-nexus.pid 2> /dev/null` &> /dev/null || true
+ fi
+ rm -f libeufin-sandbox.pid libeufin-nexus.pid
}
# Install cleanup handler (except for kill -9)
@@ -576,12 +576,39 @@ jq -h > /dev/null || exit_skip "jq required"
echo "Testing for faketime"
faketime -h > /dev/null || exit_skip "faketime required"
echo "Testing for libeufin(-cli)"
-libeufin-cli --help >/dev/null </dev/null || exit_skip "libeufin required"
+libeufin-cli --help >/dev/null 2> /dev/null </dev/null || exit_skip "libeufin required"
echo "Testing for pdflatex"
which pdflatex > /dev/null </dev/null || exit_skip "pdflatex required"
-
echo "Testing for taler-wallet-cli"
taler-wallet-cli -h >/dev/null </dev/null 2>/dev/null || exit_skip "taler-wallet-cli required"
+
+echo -n "Testing for Postgres"
+HAVE_INITDB=`find /usr -name "initdb" | grep postgres` || exit_skip " MISSING"
+echo " FOUND"
+echo -n "Setting up Postgres DB"
+INITDB_BIN=`find /usr -name "initdb" | grep bin/initdb | grep postgres | sort -n | tail -n1`
+POSTGRES_PATH=`basename $INITDB_BIN`
+TMPDIR=`mktemp -d /tmp/taler-test-postgresXXXXXX`
+$INITDB_BIN --no-sync --auth=trust -D ${TMPDIR} > postgres-dbinit.log 2> postgres-dbinit.err
+echo " DONE"
+mkdir ${TMPDIR}/sockets
+echo -n "Launching Postgres service"
+cat - >> $TMPDIR/postgresql.conf <<EOF
+unix_socket_directories='${TMPDIR}/sockets'
+fsync=off
+max_wal_senders=0
+synchronous_commit=off
+wal_level=minimal
+listen_addresses=''
+EOF
+cat $TMPDIR/pg_hba.conf | grep -v host > $TMPDIR/pg_hba.conf.new
+mv $TMPDIR/pg_hba.conf.new $TMPDIR/pg_hba.conf
+${POSTGRES_PATH}/pg_ctl -D $TMPDIR -l /dev/null start > postgres-start.log 2> postgres-start.err
+echo " DONE"
+PGHOST="$TMPDIR/sockets"
+EXPORT PGHOST="@POSTGRES_SOCKET"
+
+
MYDIR=`mktemp -d /tmp/taler-auditor-basedbXXXXXX`
echo "Generating fresh database at $MYDIR"
if faketime -f '-1 d' ./generate-revoke-basedb.sh $MYDIR/basedb
@@ -593,6 +620,7 @@ then
else
echo "Cleaning up $MYDIR..."
rm -rf $MYDIR || echo "Removing $MYDIR failed"
+ rm -rf $TMPDIR || echo "Removing $TMPDIR failed"
fi
else
echo "Generation failed"
diff --git a/src/auditor/test-sync.sh b/src/auditor/test-sync.sh
index b40f11557..0c9327d63 100755
--- a/src/auditor/test-sync.sh
+++ b/src/auditor/test-sync.sh
@@ -1,20 +1,36 @@
-#!/bin/sh
+#!/bin/bash
set -eu
# Exit, with status code "skip" (no 'real' failure)
-exit_skip() {
- echo $1
+function exit_skip() {
+ echo "SKIPPING test: $1"
exit 77
}
# Exit, with error message (hard failure)
-exit_fail() {
- echo $1
+function exit_fail() {
+ echo "FAILING test: $1"
exit 1
}
-check_with_database()
+# Cleanup to run whenever we exit
+function cleanup() {
+ if test ! -z ${POSTGRES_PATH:-}
+ then
+ ${POSTGRES_PATH}/pg_ctl -D $TMPDIR stop &> /dev/null || true
+ fi
+ for n in `jobs -p`
+ do
+ kill $n 2> /dev/null || true
+ done
+ wait
+}
+
+# Install cleanup handler (except for kill -9)
+trap cleanup EXIT
+
+function check_with_database()
{
echo -n "Testing synchronization logic ..."
@@ -68,15 +84,41 @@ echo "Testing for jq"
jq -h > /dev/null || exit_skip "jq required"
echo "Testing for faketime"
faketime -h > /dev/null || exit_skip "faketime required"
-# NOTE: really check for all three libeufin commands?
echo "Testing for libeufin"
-libeufin-cli --help >/dev/null </dev/null || exit_skip "libeufin required"
+libeufin-cli --help >/dev/null </dev/null 2> /dev/null || exit_skip "libeufin required"
echo "Testing for pdflatex"
which pdflatex > /dev/null </dev/null || exit_skip "pdflatex required"
-
-# check if we should regenerate the database
echo "Testing for taler-wallet-cli"
taler-wallet-cli -h >/dev/null </dev/null 2>/dev/null || exit_skip "taler-wallet-cli required"
+
+echo -n "Testing for Postgres"
+HAVE_INITDB=`find /usr -name "initdb" | grep postgres` || exit_skip " MISSING"
+echo " FOUND"
+echo -n "Setting up Postgres DB"
+INITDB_BIN=`find /usr -name "initdb" | grep bin/initdb | grep postgres | sort -n | tail -n1`
+POSTGRES_PATH=`basename $INITDB_BIN`
+TMPDIR=`mktemp -d /tmp/taler-test-postgresXXXXXX`
+$INITDB_BIN --no-sync --auth=trust -D ${TMPDIR} > postgres-dbinit.log 2> postgres-dbinit.err
+echo " DONE"
+mkdir ${TMPDIR}/sockets
+echo -n "Launching Postgres service"
+cat - >> $TMPDIR/postgresql.conf <<EOF
+unix_socket_directories='${TMPDIR}/sockets'
+fsync=off
+max_wal_senders=0
+synchronous_commit=off
+wal_level=minimal
+listen_addresses=''
+EOF
+cat $TMPDIR/pg_hba.conf | grep -v host > $TMPDIR/pg_hba.conf.new
+mv $TMPDIR/pg_hba.conf.new $TMPDIR/pg_hba.conf
+${POSTGRES_PATH}/pg_ctl -D $TMPDIR -l /dev/null start > postgres-start.log 2> postgres-start.err
+echo " DONE"
+PGHOST="$TMPDIR/sockets"
+EXPORT PGHOST="@POSTGRES_SOCKET"
+
+
+
MYDIR=`mktemp -d /tmp/taler-auditor-basedbXXXXXX`
echo "Generating fresh database at $MYDIR"
if faketime -f '-1 d' ./generate-auditor-basedb.sh $MYDIR/basedb
@@ -88,6 +130,7 @@ then
else
echo "Cleaning up $MYDIR..."
rm -rf $MYDIR || echo "Removing $MYDIR failed"
+ rm -rf $TMPDIR || echo "Removing $TMPDIR failed"
fi
else
echo "Generation failed"