diff --git a/run_blockchain_tests.sh b/run_blockchain_tests.sh new file mode 100755 index 00000000..96497502 --- /dev/null +++ b/run_blockchain_tests.sh @@ -0,0 +1,54 @@ +#!/bin/sh +# +# Script for running the tests for a specific blockchain by starting up the backends in docker. +# simply run ./run_blockchain_tests [esplora|electrum] + +eprintln(){ + echo "$@" >&2 +} + +cleanup() { + if test "$id"; then + eprintln "cleaning up $blockchain docker container $id"; + docker rm -fv "$id"; + fi +} + +# Makes sure we clean up the container at the end or if ^C +trap 'rc=$?; cleanup; exit $rc' EXIT INT +blockchain=${1:-electrum} + +case "$blockchain" in + electrum) + eprintln "starting electrs docker container" + id="$(docker run -d -p 127.0.0.1:18443-18444:18443-18444/tcp -p 127.0.0.1:60401:60401/tcp bitcoindevkit/electrs)" + ;; + esplora) + eprintln "starting esplora docker container" + id="$(docker run -d -p 127.0.0.1:18443-18444:18443-18444/tcp -p 127.0.0.1:60401:60401/tcp -p 127.0.0.1:3002:3002/tcp bitcoindevkit/esplora)" + export BDK_ESPLORA_URL=http://127.0.0.1:3002 + ;; + *) + echo "'$blockchain' is not a blockchain we can test (electrum,esplora)"; + exit 1; + esac + +# taken from https://github.com/bitcoindevkit/bitcoin-regtest-box +export BDK_RPC_AUTH=USER_PASS +export BDK_RPC_USER=admin +export BDK_RPC_PASS=passw +export BDK_RPC_URL=127.0.0.1:18443 +export BDK_RPC_WALLET=bdk-test +export BDK_ELECTRUM_URL=tcp://127.0.0.1:60401 + +cli(){ + docker exec -it "$id" /root/bitcoin-cli -regtest -rpcuser=admin -rpcpassword=passw $@ +} + +eprintln "running getwalletinfo unitl bitcoind seems to be alive" +while ! cli getwalletinfo >/dev/null; do sleep 1; done + +# sleep again for good measure! +sleep 1; + +cargo test --features "test-blockchains,$blockchain" --no-default-features "$blockchain::bdk_blockchain_tests"