#!/bin/bash ## Test btc_wire ability to recover from errors in correctness critical paths set -eu source "${BASH_SOURCE%/*}/setup.sh" echo "----- Setup fail -----" echo "Load config file" load_config echo "Start database" setup_db echo "Start bitcoin node" init_btc echo "Start bitcoin regtest" setup_btc echo "Start failing btc-wire" fail_btc_wire echo "Start gateway" gateway echo "" SEQ="seq 10 40" echo "----- Handle incoming -----" echo -n "Making wire transfer to exchange:" for n in `$SEQ`; do btc-wire-cli -d $BTC_DIR transfer 0.000$n mine_btc # Mine transactions done next_btc # Trigger btc_wire echo " OK" echo -n "Requesting exchange incoming transaction list:" check_delta "incoming?delta=-100" "$SEQ" "0.000" echo " OK" echo -n "Check balance:" check_balance 9.99200479 0.00775000 echo " OK" echo "----- Handle outgoing -----" echo -n "Making wire transfer from exchange:" for n in `$SEQ`; do taler-exchange-wire-gateway-client \ -b $BANK_ENDPOINT \ -C payto://bitcoin/$CLIENT \ -a BTC:0.0000$n > /dev/null done sleep 20 mine_btc # Mine transactions echo " OK" echo -n "Requesting exchange outgoing transaction list:" check_delta "outgoing?delta=-100" "$SEQ" echo " OK" echo -n "Check balance:" check_balance 9.99277979 0.00691331 echo " OK" echo "----- Handle bounce -----" echo -n "Clear wire wallet:" $BTC_CLI -rpcwallet=wire sendtoaddress $CLIENT `$BTC_CLI -rpcwallet=wire getbalance` "" "" true > /dev/null echo " OK" echo -n "Making incomplete wire transfer to exchange:" for n in `$SEQ`; do $BTC_CLI -rpcwallet=client sendtoaddress $WIRE 0.000$n > /dev/null mine_btc done sleep 20 echo " OK" echo -n "Check balance:" check_balance "*" 0.00031000 echo " OK" echo "All tests passed"