gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-anastasis] branch master updated: recovery test basics


From: gnunet
Subject: [taler-anastasis] branch master updated: recovery test basics
Date: Mon, 01 Mar 2021 19:41:37 +0100

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository anastasis.

The following commit(s) were added to refs/heads/master by this push:
     new 73fe788  recovery test basics
73fe788 is described below

commit 73fe7889b1b411a2e2443e0ed8bb963f745048a0
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Mon Mar 1 19:41:35 2021 +0100

    recovery test basics
---
 ...tasis_reducer_recovery_enter_user_attributes.sh | 252 +++++++++++++++++----
 1 file changed, 207 insertions(+), 45 deletions(-)

diff --git a/src/cli/test_anastasis_reducer_recovery_enter_user_attributes.sh 
b/src/cli/test_anastasis_reducer_recovery_enter_user_attributes.sh
index e7509f6..6d50e89 100755
--- a/src/cli/test_anastasis_reducer_recovery_enter_user_attributes.sh
+++ b/src/cli/test_anastasis_reducer_recovery_enter_user_attributes.sh
@@ -4,13 +4,13 @@ set -eu
 
 # Exit, with status code "skip" (no 'real' failure)
 function exit_skip() {
-    echo $1
+    echo " SKIP: $1"
     exit 77
 }
 
 # Exit, with error message (hard failure)
 function exit_fail() {
-    echo $1
+    echo " FAIL: $1"
     exit 1
 }
 
@@ -21,65 +21,218 @@ function cleanup()
     do
         kill $n 2> /dev/null || true
     done
-    rm -f $CONF $CONF_1 $CONF_2 $CONF_3 $CONF_4
-    rm -f $TFILE
+    rm -rf $CONF $WALLET_DB $TFILE $UFILE $TMP_DIR
     wait
 }
 
-# Install cleanup handler (except for kill -9)
-AFN=`which anastasis-reducer`
-ADN=`dirname $AFN`
-RESOURCES=$ADN/../share/anastasis
-SFILE=$RESOURCES/test_reducer_recovery_stateUACSTATE
-TFILE=`mktemp test_reducer_stateXXXXXX`
+
+CONF_1="test_anastasis_reducer_1.conf"
+CONF_2="test_anastasis_reducer_2.conf"
+CONF_3="test_anastasis_reducer_3.conf"
+CONF_4="test_anastasis_reducer_4.conf"
+
+
+# Exchange configuration file will be edited, so we create one
+# from the template.
 CONF=`mktemp test_reducerXXXXXX.conf`
-CONF_1=`mktemp test_reducerXXXXXX_1.conf`
-CONF_2=`mktemp test_reducerXXXXXX_2.conf`
-CONF_3=`mktemp test_reducerXXXXXX_3.conf`
-CONF_4=`mktemp test_reducerXXXXXX_4.conf`
+cp test_reducer.conf $CONF
+
+TMP_DIR=`mktemp -d keys-tmp-XXXXXX`
+WALLET_DB=`mktemp test_reducer_walletXXXXXX.json`
+TFILE=`mktemp test_reducer_statePPXXXXXX`
+UFILE=`mktemp test_reducer_stateBFXXXXXX`
 
+# Install cleanup handler (except for kill -9)
 trap cleanup EXIT
 
 # Check we can actually run
 echo -n "Testing for jq"
 jq -h > /dev/null || exit_skip "jq required"
 echo " FOUND"
+echo -n "Testing for anastasis-reducer ..."
+anastasis-reducer -h > /dev/null || exit_skip "anastasis-reducer required"
+echo " FOUND"
+
+echo -n "Testing for taler"
+taler-exchange-httpd -h > /dev/null || exit_skip " taler-exchange required"
+taler-merchant-httpd -h > /dev/null || exit_skip " taler-merchant required"
+echo " FOUND"
+
+echo -n "Testing for taler-bank-manage"
+taler-bank-manage --help >/dev/null </dev/null || exit_skip " MISSING"
+echo " FOUND"
+echo -n "Testing for taler-wallet-cli"
+taler-wallet-cli -v >/dev/null </dev/null || exit_skip " MISSING"
+echo " FOUND"
 
 echo -n "Testing for anastasis-httpd"
 anastasis-httpd -h >/dev/null </dev/null || exit_skip " MISSING"
 echo " FOUND"
 
+echo -n "Initialize anastasis database ..."
 # Name of the Postgres database we will use for the script.
 # Will be dropped, do NOT use anything that might be used
 # elsewhere
-TALER_DB=talercheck
-ANASTASIS_DB=anastasischeck
-ANASTASIS_DB_1=anastasischeck1
+TARGET_DB_1=`anastasis-config -c $CONF_1 -s stasis-postgres -o CONFIG | sed -e 
"s/^postgres:\/\/\///"`
+TARGET_DB_2=`anastasis-config -c $CONF_2 -s stasis-postgres -o CONFIG | sed -e 
"s/^postgres:\/\/\///"`
+TARGET_DB_3=`anastasis-config -c $CONF_3 -s stasis-postgres -o CONFIG | sed -e 
"s/^postgres:\/\/\///"`
+TARGET_DB_4=`anastasis-config -c $CONF_4 -s stasis-postgres -o CONFIG | sed -e 
"s/^postgres:\/\/\///"`
 
-# Configuration file will be edited, so we create one
-# from the template.
-cp test_reducer.conf $CONF
-cp test_anastasis_reducer.conf $CONF_1
-cp test_anastasis_reducer_1.conf $CONF_2
+dropdb $TARGET_DB_1 >/dev/null 2>/dev/null || true
+createdb $TARGET_DB_1 || exit_skip "Could not create database $TARGET_DB_1"
+anastasis-dbinit -c $CONF_1 2> anastasis-dbinit_1.log
+dropdb $TARGET_DB_2 >/dev/null 2>/dev/null || true
+createdb $TARGET_DB_2 || exit_skip "Could not create database $TARGET_DB_2"
+anastasis-dbinit -c $CONF_2 2> anastasis-dbinit_2.log
+dropdb $TARGET_DB_3 >/dev/null 2>/dev/null || true
+createdb $TARGET_DB_3 || exit_skip "Could not create database $TARGET_DB_3"
+anastasis-dbinit -c $CONF_3 2> anastasis-dbinit_3.log
+dropdb $TARGET_DB_4 >/dev/null 2>/dev/null || true
+createdb $TARGET_DB_4 || exit_skip "Could not create database $TARGET_DB_4"
+anastasis-dbinit -c $CONF_4 2> anastasis-dbinit_4.log
+
+echo " OK"
+
+echo -n "Generating Taler auditor, exchange and merchant configurations ..."
 
-# Clean up
 DATA_DIR=`taler-config -f -c $CONF -s PATHS -o TALER_HOME`
-rm -rf $DATA_DIR || true
+rm -rf $DATA_DIR
+
+# obtain key configuration data
+MASTER_PRIV_FILE=`taler-config -f -c $CONF -s EXCHANGE -o MASTER_PRIV_FILE`
+MASTER_PRIV_DIR=`dirname $MASTER_PRIV_FILE`
+mkdir -p $MASTER_PRIV_DIR
+gnunet-ecc -g1 $MASTER_PRIV_FILE > /dev/null 2> /dev/null
+MASTER_PUB=`gnunet-ecc -p $MASTER_PRIV_FILE`
+EXCHANGE_URL=`taler-config -c $CONF -s EXCHANGE -o BASE_URL`
+MERCHANT_PORT=`taler-config -c $CONF -s MERCHANT -o PORT`
+MERCHANT_URL=http://localhost:${MERCHANT_PORT}/
+BANK_PORT=`taler-config -c $CONF -s BANK -o HTTP_PORT`
+BANK_URL=http://localhost:${BANK_PORT}/
+AUDITOR_URL=http://localhost:8083/
+AUDITOR_PRIV_FILE=`taler-config -f -c $CONF -s AUDITOR -o AUDITOR_PRIV_FILE`
+AUDITOR_PRIV_DIR=`dirname $AUDITOR_PRIV_FILE`
+mkdir -p $AUDITOR_PRIV_DIR
+gnunet-ecc -g1 $AUDITOR_PRIV_FILE > /dev/null 2> /dev/null
+AUDITOR_PUB=`gnunet-ecc -p $AUDITOR_PRIV_FILE`
+
+# patch configuration
+TALER_DB=talercheck
+taler-config -c $CONF -s exchange -o MASTER_PUBLIC_KEY -V $MASTER_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:///$TALER_DB
+taler-config -c $CONF -s auditordb-postgres -o CONFIG -V postgres:///$TALER_DB
+taler-config -c $CONF -s merchantdb-postgres -o CONFIG -V postgres:///$TALER_DB
+taler-config -c $CONF -s bank -o database -V postgres:///$TALER_DB
+taler-config -c $CONF -s exchange -o KEYDIR -V "${TMP_DIR}/keydir/"
+taler-config -c $CONF -s exchange -o REVOCATION_DIR -V "${TMP_DIR}/revdir/"
+
+echo " OK"
+
+echo -n "Setting up exchange ..."
 
 # reset database
 dropdb $TALER_DB >/dev/null 2>/dev/null || true
 createdb $TALER_DB || exit_skip "Could not create database $TALER_DB"
-psql -U $USER -d $TALER_DB -f $RESOURCES/test_reducer_recovery_talercheck.sql 
|| exit_skip "Could not import database $TALER_DB"
-dropdb $ANASTASIS_DB >/dev/null 2>/dev/null || true
-createdb $ANASTASIS_DB || exit_skip "Could not create database $ANASTASIS_DB"
-psql -U $USER -d $ANASTASIS_DB -f $RESOURCES/test_reducer_recovery_00.sql || 
exit_skip "Could not import database $ANASTASIS_DB"
-dropdb $ANASTASIS_DB_1 >/dev/null 2>/dev/null || true
-createdb $ANASTASIS_DB_1 || exit_skip "Could not create database 
$ANASTASIS_DB_1"
-psql -U $USER -d $ANASTASIS_DB_1 -f $RESOURCES/test_reducer_recovery_01.sql || 
exit_skip "Could not import database $ANASTASIS_DB_1"
-
-echo "Launching anastasis service"
-valgrind anastasis-httpd -c $CONF_1 2> anastasis-httpd_1.log &
-valgrind anastasis-httpd -c $CONF_2 2> anastasis-httpd_2.log &
+taler-exchange-dbinit -c $CONF
+taler-merchant-dbinit -c $CONF
+taler-auditor-dbinit -c $CONF
+taler-auditor-exchange -c $CONF -m $MASTER_PUB -u $EXCHANGE_URL
+
+echo " OK"
+
+# Launch services
+echo -n "Launching taler services ..."
+taler-bank-manage-testing $CONF postgres:///$TALER_DB serve > taler-bank.log 
2> taler-bank.err &
+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-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 &
+
+echo " OK"
+
+echo -n "Launching anastasis services ..."
+PREFIX="" #valgrind
+$PREFIX anastasis-httpd -c $CONF_1 2> anastasis-httpd_1.log &
+$PREFIX anastasis-httpd -c $CONF_2 2> anastasis-httpd_2.log &
+$PREFIX anastasis-httpd -c $CONF_3 2> anastasis-httpd_3.log &
+$PREFIX anastasis-httpd -c $CONF_4 2> anastasis-httpd_4.log &
+
+# Wait for bank to be available (usually the slowest)
+for n in `seq 1 50`
+do
+    echo -n "."
+    sleep 0.2
+    OK=0
+    # bank
+    wget --tries=1 --timeout=1 http://localhost:8082/ -o /dev/null -O 
/dev/null >/dev/null || continue
+    OK=1
+    break
+done
+
+if [ 1 != $OK ]
+then
+    exit_skip "Failed to launch services (bank)"
+fi
+
+# Wait for all other taler services to be available
+for n in `seq 1 50`
+do
+    echo -n "."
+    sleep 0.1
+    OK=0
+    # exchange
+    wget --tries=1 --timeout=1 http://localhost:8081/seed -o /dev/null -O 
/dev/null >/dev/null || continue
+    # merchant
+    wget --tries=1 --timeout=1 http://localhost:9966/ -o /dev/null -O 
/dev/null >/dev/null || continue
+    # auditor
+    wget --tries=1 --timeout=1 http://localhost:8083/ -o /dev/null -O 
/dev/null >/dev/null || continue
+    OK=1
+    break
+done
+
+if [ 1 != $OK ]
+then
+    exit_skip "Failed to launch taler services"
+fi
+
+echo "OK"
+
+echo -n "Setting up keys ..."
+taler-exchange-offline -c $CONF \
+  download \
+  sign \
+  enable-account payto://x-taler-bank/localhost/Exchange \
+  enable-auditor $AUDITOR_PUB $AUDITOR_URL "TESTKUDOS Auditor" \
+  wire-fee now x-taler-bank TESTKUDOS:0.01 TESTKUDOS:0.01 \
+  upload &> taler-exchange-offline.log
+
+echo -n "."
+
+for n in `seq 1 3`
+do
+    echo -n "."
+    OK=0
+    wget --tries=1 --timeout=1 http://localhost:8081/keys -o /dev/null -O 
/dev/null >/dev/null || continue
+    OK=1
+    break
+done
+
+if [ 1 != $OK ]
+then
+    exit_skip "Failed to setup keys"
+fi
+
+echo " OK"
+
+echo -n "Setting up auditor signatures ..."
+taler-auditor-offline -c $CONF \
+  download sign upload &> taler-auditor-offline.log
+echo " OK"
+
+echo -n "Waiting for anastasis services ..."
 
 # Wait for anastasis services to be available
 for n in `seq 1 50`
@@ -88,9 +241,13 @@ do
     sleep 0.1
     OK=0
    # anastasis_01
-    wget http://localhost:8086/ -o /dev/null -O /dev/null >/dev/null || 
continue
+    wget --tries=1 --timeout=1 http://localhost:8086/ -o /dev/null -O 
/dev/null >/dev/null || continue
     # anastasis_02
-    wget http://localhost:8087/ -o /dev/null -O /dev/null >/dev/null || 
continue
+    wget --tries=1 --timeout=1 http://localhost:8087/ -o /dev/null -O 
/dev/null >/dev/null || continue
+    # anastasis_03
+    wget --tries=1 --timeout=1 http://localhost:8088/ -o /dev/null -O 
/dev/null >/dev/null || continue
+    # anastasis_04
+    wget --tries=1 --timeout=1 http://localhost:8089/ -o /dev/null -O 
/dev/null >/dev/null || continue
     OK=1
     break
 done
@@ -99,33 +256,38 @@ if [ 1 != $OK ]
 then
     exit_skip "Failed to launch anastasis services"
 fi
+echo "OK"
+
+echo -n "Configuring merchant instance ..."
+# Setup merchant
+
+curl -H "Content-Type: application/json" -X POST -d 
'{"payto_uris":["payto://x-taler-bank/localhost/43"],"id":"default","name":"default","address":{},"jurisdiction":{},"default_max_wire_fee":"TESTKUDOS:1",
 
"default_max_deposit_fee":"TESTKUDOS:1","default_wire_fee_amortization":1,"default_wire_transfer_delay":{"d_ms"
 : 3600000},"default_pay_delay":{"d_ms": 3600000}}' 
http://localhost:9966/private/instances
+
 
+echo " DONE"
 
-echo " "
-echo "Beginning with actual reducer test"
+bash
 
-# Test user attributes collection in a recovery state
-echo " "
 echo "Test user attributes collection in a recovery state"
-./anastasis-reducer -a \
+anastasis-reducer -a \
   '{"identity_attributes": {
     "full_name": "Max Musterman",
     "ahv_number": "756.9217.0769.85",
     "birth_year": 2000,
-    "birth_month": 1, 
+    "birth_month": 1,
     "birth_day": 1}}' \
   enter_user_attributes $SFILE $TFILE
 
 STATE=`jq -r -e .recovery_state < $TFILE`
 if test "$STATE" != "CHALLENGE_SELECTING"
 then
-    exit_fail "Expected new state to be CHALLENGE_SELECTING, got $STATE"
+    exit_fail "Expected new state to be 'CHALLENGE_SELECTING', got '$STATE'"
 fi
 
 SELECTED_COUNTRY=`jq -r -e .selected_country < $TFILE`
 if test "$SELECTED_COUNTRY" != "ch"
 then
-    exit_fail "Expected selected country to be ch, got $SELECTED_COUNTRY"
+    exit_fail "Expected selected country to be 'ch', got '$SELECTED_COUNTRY'"
 fi
 
 exit 0

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]