summaryrefslogtreecommitdiff
path: root/src/auditor
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2022-09-19 19:32:18 +0200
committerChristian Grothoff <christian@grothoff.org>2022-09-19 19:32:22 +0200
commit3fa9f3bb12635c6bbb50b763e2c955d73e2e37fa (patch)
tree4505607fdc743591bc480f88f68b76f9515641e2 /src/auditor
parent230cfa4f938f8f1d0421cd5c1fc2eac8bf5bcfe8 (diff)
downloadexchange-3fa9f3bb12635c6bbb50b763e2c955d73e2e37fa.tar.gz
exchange-3fa9f3bb12635c6bbb50b763e2c955d73e2e37fa.tar.bz2
exchange-3fa9f3bb12635c6bbb50b763e2c955d73e2e37fa.zip
-wip
Diffstat (limited to 'src/auditor')
-rwxr-xr-xsrc/auditor/generate-auditor-basedb.sh72
-rwxr-xr-xsrc/auditor/generate-revoke-basedb.sh21
-rwxr-xr-xsrc/auditor/test-auditor.sh25
-rwxr-xr-xsrc/auditor/test-revocation.sh73
4 files changed, 114 insertions, 77 deletions
diff --git a/src/auditor/generate-auditor-basedb.sh b/src/auditor/generate-auditor-basedb.sh
index 17cfc4b46..a24942dfc 100755
--- a/src/auditor/generate-auditor-basedb.sh
+++ b/src/auditor/generate-auditor-basedb.sh
@@ -70,14 +70,12 @@ export WALLET_DB=${BASEDB:-"wallet"}.wdb
# delete existing wallet database
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=$1.conf
-cp generate-auditor-basedb.conf $CONF_ONCE
+export CONF=$1.conf
+cp generate-auditor-basedb.conf $CONF
+echo "Created configuration at ${CONF}"
echo -n "Testing for libeufin"
libeufin-cli --help >/dev/null </dev/null || exit_skip " MISSING"
@@ -91,7 +89,7 @@ echo " FOUND"
# Clean up
-DATA_DIR=`taler-config -f -c $CONF_ONCE -s PATHS -o TALER_HOME`
+DATA_DIR=`taler-config -f -c $CONF -s PATHS -o TALER_HOME`
# reset database
dropdb $TARGET_DB >/dev/null 2>/dev/null || true
@@ -100,62 +98,62 @@ createdb $TARGET_DB || exit_skip "Could not create database $TARGET_DB"
# obtain key configuration data
MASTER_PRIV_FILE=$1.mpriv
MASTER_PRIV_DIR=`dirname $MASTER_PRIV_FILE`
-taler-config -f -c ${CONF_ONCE} -s exchange-offline -o MASTER_PRIV_FILE -V ${MASTER_PRIV_FILE}
+taler-config -f -c ${CONF} -s exchange-offline -o MASTER_PRIV_FILE -V ${MASTER_PRIV_FILE}
rm -f "${MASTER_PRIV_FILE}"
mkdir -p $MASTER_PRIV_DIR
gnunet-ecc -l/dev/null -g1 $MASTER_PRIV_FILE > /dev/null
-MASTER_PUB=`gnunet-ecc -p $MASTER_PRIV_FILE`
-MERCHANT_PORT=`taler-config -c $CONF_ONCE -s MERCHANT -o PORT`
-MERCHANT_URL=http://localhost:${MERCHANT_PORT}/
-AUDITOR_URL=http://localhost:8083/
+export MASTER_PUB=`gnunet-ecc -p $MASTER_PRIV_FILE`
+export EXCHANGE_URL=`taler-config -c $CONF -s EXCHANGE -o BASE_URL`
+MERCHANT_PORT=`taler-config -c $CONF -s MERCHANT -o PORT`
+export MERCHANT_URL=http://localhost:${MERCHANT_PORT}/
+BANK_PORT=`taler-config -c $CONF -s BANK -o HTTP_PORT`
+BANK_URL="http://localhost:1${BANK_PORT}/demobanks/default"
+export AUDITOR_URL=http://localhost:8083/
AUDITOR_PRIV_FILE=$1.apriv
AUDITOR_PRIV_DIR=`dirname $AUDITOR_PRIV_FILE`
-taler-config -f -c ${CONF_ONCE} -s auditor -o AUDITOR_PRIV_FILE -V ${AUDITOR_PRIV_FILE}
+taler-config -f -c ${CONF} -s auditor -o AUDITOR_PRIV_FILE -V ${AUDITOR_PRIV_FILE}
mkdir -p $AUDITOR_PRIV_DIR
gnunet-ecc -l/dev/null -g1 $AUDITOR_PRIV_FILE > /dev/null
AUDITOR_PUB=`gnunet-ecc -p $AUDITOR_PRIV_FILE`
-EXCHANGE_URL=`taler-config -c $CONF_ONCE -s EXCHANGE -o BASE_URL`
-BANK_PORT=`taler-config -c $CONF_ONCE -s BANK -o HTTP_PORT`
-BANK_URL="http://localhost:1${BANK_PORT}/demobanks/default"
echo "MASTER PUB is ${MASTER_PUB} using file ${MASTER_PRIV_FILE}"
echo "AUDITOR PUB is ${AUDITOR_PUB} using file ${AUDITOR_PRIV_FILE}"
# patch configuration
-taler-config -c $CONF_ONCE -s exchange -o MASTER_PUBLIC_KEY -V $MASTER_PUB
-taler-config -c $CONF_ONCE -s auditor -o PUBLIC_KEY -V $AUDITOR_PUB
-taler-config -c $CONF_ONCE -s merchant-exchange-default -o MASTER_KEY -V $MASTER_PUB
+taler-config -c $CONF -s exchange -o MASTER_PUBLIC_KEY -V $MASTER_PUB
+taler-config -c $CONF -s auditor -o PUBLIC_KEY -V $AUDITOR_PUB
+taler-config -c $CONF -s merchant-exchange-default -o MASTER_KEY -V $MASTER_PUB
-taler-config -c $CONF_ONCE -s exchangedb-postgres -o CONFIG -V postgres:///$TARGET_DB
-taler-config -c $CONF_ONCE -s auditordb-postgres -o CONFIG -V postgres:///$TARGET_DB
-taler-config -c $CONF_ONCE -s merchantdb-postgres -o CONFIG -V postgres:///$TARGET_DB
-taler-config -c $CONF_ONCE -s bank -o database -V postgres:///$TARGET_DB
+taler-config -c $CONF -s exchangedb-postgres -o CONFIG -V postgres:///$TARGET_DB
+taler-config -c $CONF -s auditordb-postgres -o CONFIG -V postgres:///$TARGET_DB
+taler-config -c $CONF -s merchantdb-postgres -o CONFIG -V postgres:///$TARGET_DB
+taler-config -c $CONF -s bank -o database -V postgres:///$TARGET_DB
# setup exchange
echo "Setting up exchange"
-taler-exchange-dbinit -c $CONF_ONCE
+taler-exchange-dbinit -c $CONF
echo "Setting up merchant"
-taler-merchant-dbinit -c $CONF_ONCE
+taler-merchant-dbinit -c $CONF
# setup auditor
echo "Setting up auditor"
-taler-auditor-dbinit -c $CONF_ONCE || exit_skip "Failed to initialize auditor DB"
-taler-auditor-exchange -c $CONF_ONCE -m $MASTER_PUB -u $EXCHANGE_URL || exit_skip "Failed to add exchange to auditor"
+taler-auditor-dbinit -c $CONF || exit_skip "Failed to initialize auditor DB"
+taler-auditor-exchange -c $CONF -m $MASTER_PUB -u $EXCHANGE_URL || exit_skip "Failed to add exchange to auditor"
# Launch services
echo "Launching services (pre audit DB: $TARGET_DB)"
-taler-bank-manage-testing $BANK_PORT $TARGET_DB $EXCHANGE_URL $CONF_ONCE
+taler-bank-manage-testing $BANK_PORT $TARGET_DB $EXCHANGE_URL $CONF
TFN=`which taler-exchange-httpd`
TBINPFX=`dirname $TFN`
TLIBEXEC=${TBINPFX}/../lib/taler/libexec/
-taler-exchange-secmod-eddsa -c $CONF_ONCE 2> taler-exchange-secmod-eddsa.log &
-taler-exchange-secmod-rsa -c $CONF_ONCE 2> taler-exchange-secmod-rsa.log &
-taler-exchange-secmod-cs -c $CONF_ONCE 2> taler-exchange-secmod-cs.log &
-taler-exchange-httpd -c $CONF_ONCE 2> taler-exchange-httpd.log &
-taler-merchant-httpd -c $CONF_ONCE -L INFO 2> taler-merchant-httpd.log &
-taler-exchange-wirewatch -c $CONF_ONCE 2> taler-exchange-wirewatch.log &
-taler-auditor-httpd -L INFO -c $CONF_ONCE 2> taler-auditor-httpd.log &
+taler-exchange-secmod-eddsa -c $CONF 2> taler-exchange-secmod-eddsa.log &
+taler-exchange-secmod-rsa -c $CONF 2> taler-exchange-secmod-rsa.log &
+taler-exchange-secmod-cs -c $CONF 2> taler-exchange-secmod-cs.log &
+taler-exchange-httpd -c $CONF 2> taler-exchange-httpd.log &
+taler-merchant-httpd -c $CONF -L INFO 2> taler-merchant-httpd.log &
+taler-exchange-wirewatch -c $CONF 2> taler-exchange-wirewatch.log &
+taler-auditor-httpd -L INFO -c $CONF 2> taler-auditor-httpd.log &
# Wait for all bank to be available (usually the slowest)
for n in `seq 1 50`
@@ -195,9 +193,9 @@ then
exit_skip "Failed to launch services"
fi
echo -n "Setting up keys"
-taler-exchange-offline -c $CONF_ONCE \
+taler-exchange-offline -c $CONF \
download sign \
- enable-account `taler-config -c $CONF_ONCE -s exchange-account-1 -o PAYTO_URI` \
+ enable-account `taler-config -c $CONF -s exchange-account-1 -o PAYTO_URI` \
enable-auditor $AUDITOR_PUB $AUDITOR_URL "TESTKUDOS Auditor" \
wire-fee now iban TESTKUDOS:0.07 TESTKUDOS:0.01 TESTKUDOS:0.01 \
global-fee now TESTKUDOS:0.01 TESTKUDOS:0.01 TESTKUDOS:0.01 TESTKUDOS:0.01 1h 1h 1year 5 \
@@ -222,7 +220,7 @@ fi
echo " DONE"
echo -n "Adding auditor signatures ..."
-taler-auditor-offline -c $CONF_ONCE \
+taler-auditor-offline -c $CONF \
download sign upload &> taler-auditor-offline.log
echo " DONE"
diff --git a/src/auditor/generate-revoke-basedb.sh b/src/auditor/generate-revoke-basedb.sh
index 64e25d59d..0d33d3a3b 100755
--- a/src/auditor/generate-revoke-basedb.sh
+++ b/src/auditor/generate-revoke-basedb.sh
@@ -59,7 +59,7 @@ rm -f $WALLET_DB
# from the template.
export CONF=${BASEDB}.conf
cp generate-auditor-basedb.conf $CONF
-taler-config -c ${CONF} -s exchange-offline -o MASTER_PRIV_FILE -V ${BASEDB}.mpriv
+echo "Created configuration at ${CONF}"
echo -n "Testing for libeufin(-cli)"
libeufin-cli --help >/dev/null </dev/null || exit_skip " MISSING"
@@ -81,9 +81,9 @@ createdb $TARGET_DB || exit_skip "Could not create database $TARGET_DB"
rm $TARGET_DB >/dev/null 2>/dev/null || true # libeufin
# obtain key configuration data
-MASTER_PRIV_FILE=${TARGET_DB}.priv
-taler-config -f -c $CONF -s exchange-offline -o MASTER_PRIV_FILE -V ${MASTER_PRIV_FILE}
+MASTER_PRIV_FILE=$1.mpriv
MASTER_PRIV_DIR=`dirname $MASTER_PRIV_FILE`
+taler-config -f -c $CONF -s exchange-offline -o MASTER_PRIV_FILE -V ${MASTER_PRIV_FILE}
mkdir -p $MASTER_PRIV_DIR
rm -f "${MASTER_PRIV_FILE}"
gnunet-ecc -g1 $MASTER_PRIV_FILE > /dev/null
@@ -94,14 +94,20 @@ export MERCHANT_URL=http://localhost:${MERCHANT_PORT}/
BANK_PORT=`taler-config -c $CONF -s BANK -o HTTP_PORT`
export BANK_URL=http://localhost:1${BANK_PORT}/demobanks/default
export AUDITOR_URL=http://localhost:8083/
-AUDITOR_PRIV_FILE=`taler-config -f -c $CONF -s AUDITOR -o AUDITOR_PRIV_FILE`
+AUDITOR_PRIV_FILE=$1.apriv
AUDITOR_PRIV_DIR=`dirname $AUDITOR_PRIV_FILE`
+taler-config -f -c ${CONF} -s auditor -o AUDITOR_PRIV_FILE -V ${AUDITOR_PRIV_FILE}
mkdir -p $AUDITOR_PRIV_DIR
-gnunet-ecc -g1 $AUDITOR_PRIV_FILE > /dev/null
+gnunet-ecc -l /dev/null -g1 $AUDITOR_PRIV_FILE > /dev/null
AUDITOR_PUB=`gnunet-ecc -p $AUDITOR_PRIV_FILE`
+echo "MASTER PUB is ${MASTER_PUB} using file ${MASTER_PRIV_FILE}"
+echo "AUDITOR PUB is ${AUDITOR_PUB} using file ${AUDITOR_PRIV_FILE}"
+
+
# patch configuration
taler-config -c $CONF -s exchange -o MASTER_PUBLIC_KEY -V $MASTER_PUB
+taler-config -c $CONF -s auditor -o PUBLIC_KEY -V $AUDITOR_PUB
taler-config -c $CONF -s merchant-exchange-default -o MASTER_KEY -V $MASTER_PUB
taler-config -c $CONF -s exchangedb-postgres -o CONFIG -V postgres:///$TARGET_DB
taler-config -c $CONF -s auditordb-postgres -o CONFIG -V postgres:///$TARGET_DB
@@ -419,12 +425,9 @@ date +%s > ${BASEDB}.age
echo "Final clean up"
dropdb $TARGET_DB
rm $TARGET_DB # libeufin
-rm -rf $DATA_DIR || true
-rm -f $CONF
-rm -r $TMP_DIR
echo "====================================="
-echo " Finished revocation DB generation "
+echo " Finished generation of $BASEDB "
echo "====================================="
exit 0
diff --git a/src/auditor/test-auditor.sh b/src/auditor/test-auditor.sh
index 637a21d9c..937da49f4 100755
--- a/src/auditor/test-auditor.sh
+++ b/src/auditor/test-auditor.sh
@@ -67,13 +67,20 @@ function stop_libeufin()
if test -f libeufin-sandbox.pid
then
echo "Killing libeufin sandbox"
- kill `cat libeufin-sandbox.pid 2> /dev/null` &> /dev/null || true
+ PID=`cat libeufin-sandbox.pid 2> /dev/null`
+ kill $PID || true
+ wait $PID
+ rm libeufin-sandbox.pid
fi
if test -f libeufin-nexus.pid
then
echo "Killing libeufin nexus"
- kill `cat libeufin-nexus.pid 2> /dev/null` &> /dev/null || true
+ PID=`cat libeufin-nexus.pid 2> /dev/null`
+ kill $PID || true
+ wait $PID
+ rm libeufin-nexus.pid
fi
+ echo "killing libeufin DONE"
}
# Cleanup exchange and libeufin between runs.
@@ -84,12 +91,10 @@ function cleanup()
echo -n "Stopping exchange $EPID..."
kill -TERM $EPID
wait $EPID
- echo " DONE"
+ echo "DONE"
unset EPID
fi
-
stop_libeufin
- echo DONE
}
# Cleanup to run whenever we exit
@@ -324,7 +329,8 @@ function full_reload()
createdb -T template0 $DB || exit_skip "could not create database $DB (at $PGHOST)"
# Import pre-generated database, -q(ietly) using single (-1) transaction
psql -Aqt $DB -q -1 -f ${BASEDB}.sql > /dev/null || exit_skip "Failed to load database $DB from ${BASEDB}.sql"
- echo "Loading libeufin basedb: ${BASEDB}-libeufin.sql"
+ echo "DONE"
+ echo -n "Loading libeufin basedb: ${BASEDB}-libeufin.sql"
sqlite3 $DB.sqlite3 < ${BASEDB}-libeufin.sql || exit_skip "Failed to load libEufin database"
echo "DONE"
}
@@ -2037,7 +2043,6 @@ 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"
-MYDIR=`mktemp -d /tmp/taler-auditor-basedbXXXXXX`
echo -n "Testing for Postgres"
@@ -2072,11 +2077,11 @@ echo " DONE"
PGHOST="$TMPDIR/sockets"
export PGHOST
-
+MYDIR=`mktemp -d /tmp/taler-auditor-basedbXXXXXX`
echo "Generating fresh database at $MYDIR"
-if faketime -f '-1 d' ./generate-auditor-basedb.sh $MYDIR/auditor-basedb
+if faketime -f '-1 d' ./generate-auditor-basedb.sh $MYDIR/$DB
then
- check_with_database $MYDIR/auditor-basedb
+ check_with_database $MYDIR/$DB
if test x$fail != x0
then
exit $fail
diff --git a/src/auditor/test-revocation.sh b/src/auditor/test-revocation.sh
index fcffd05b7..011585340 100755
--- a/src/auditor/test-revocation.sh
+++ b/src/auditor/test-revocation.sh
@@ -54,33 +54,63 @@ function exit_fail() {
exit 1
}
+function stop_libeufin()
+{
+ echo "killing libeufin..."
+ if test -f libeufin-sandbox.pid
+ then
+ echo "Killing libeufin sandbox"
+ PID=`cat libeufin-sandbox.pid 2> /dev/null`
+ kill $PID || true
+ wait $PID
+ rm libeufin-sandbox.pid
+ fi
+ if test -f libeufin-nexus.pid
+ then
+ echo "Killing libeufin nexus"
+ PID=`cat libeufin-nexus.pid 2> /dev/null`
+ kill $PID || true
+ wait $PID
+ rm libeufin-nexus.pid
+ fi
+ echo "killing libeufin DONE"
+}
+
+
# Cleanup to run whenever we exit
function cleanup()
{
+ if test ! -z ${EPID:-}
+ then
+ echo -n "Stopping exchange $EPID..."
+ kill -TERM $EPID
+ wait $EPID
+ echo " DONE"
+ unset EPID
+ fi
+ stop_libeufin
+}
+
+# Cleanup to run whenever we exit
+function exit_cleanup()
+{
+ echo "Running exit-cleanup"
if test ! -z ${POSTGRES_PATH:-}
then
+ echo "Stopping Postgres at ${POSTGRES_PATH}"
${POSTGRES_PATH}/pg_ctl -D $TMPDIR -l /dev/null stop &> /dev/null || true
fi
+ cleanup
for n in `jobs -p`
do
kill $n 2> /dev/null || true
done
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
+ echo "DONE"
}
# Install cleanup handler (except for kill -9)
-trap cleanup EXIT
+trap exit_cleanup EXIT
# Downloads new transactions from the bank.
function nexus_fetch_transactions () {
@@ -214,10 +244,8 @@ function audit_only () {
# Cleanup to run after the auditor
function post_audit () {
- echo -n "Cleanup ..."
cleanup
- echo " DONE"
- echo -n "TeXing ."
+ echo -n "TeXing ."
taler-helper-auditor-render.py test-audit-aggregation.json test-audit-coins.json test-audit-deposits.json test-audit-reserves.json test-audit-wire.json < ../../contrib/auditor-report.tex.j2 > test-report.tex || exit_fail "Renderer failed"
echo -n "."
@@ -246,9 +274,11 @@ function full_reload()
echo -n "Doing full reload of the database... "
dropdb $DB 2> /dev/null || true
rm -f $DB.sqlite3 || true # libeufin
- createdb -T template0 $DB || exit_skip "could not create database"
+ createdb -T template0 $DB || exit_skip "could not create database $DB (at $PGHOST)"
# Import pre-generated database, -q(ietly) using single (-1) transaction
- psql -Aqt $DB -q -1 -f ${BASEDB}.sql > /dev/null || exit_skip "Failed to load database"
+ psql -Aqt $DB -q -1 -f ${BASEDB}.sql > /dev/null || exit_skip "Failed to load database $DB from ${BASEDB}.sql"
+ echo "DONE"
+ echo "Loading libeufin basedb: ${BASEDB}-libeufin.sql"
sqlite3 $DB.sqlite3 < ${BASEDB}-libeufin.sql || exit_skip "Failed to load libEufin database"
echo "DONE"
# Exchange payto URI contains the (dynamically generated)
@@ -584,8 +614,9 @@ function check_with_database()
# *************** Main logic starts here **************
# ####### Setup globals ######
-# Postgres database to use (must match revoke-basedb.conf)
-DB=taler-auditor-test
+# Postgres database to use
+DB=revoke-basedb
+
# test required commands exist
echo "Testing for jq"
@@ -633,9 +664,9 @@ export PGHOST
MYDIR=`mktemp -d /tmp/taler-auditor-basedbXXXXXX`
echo "Generating fresh database at $MYDIR"
-if faketime -f '-1 d' ./generate-revoke-basedb.sh $MYDIR/revoke-basedb
+if faketime -f '-1 d' ./generate-revoke-basedb.sh $MYDIR/$DB
then
- check_with_database $MYDIR/revoke-basedb
+ check_with_database $MYDIR/$DB
if test x$fail != x0
then
exit $fail