]> Untitled Git - bdk/commitdiff
Add script for running the blockchain tests locally
authorLLFourn <lloyd.fourn@gmail.com>
Wed, 19 May 2021 06:22:11 +0000 (16:22 +1000)
committerLLFourn <lloyd.fourn@gmail.com>
Wed, 19 May 2021 06:45:48 +0000 (16:45 +1000)
run_blockchain_tests.sh [new file with mode: 0755]

diff --git a/run_blockchain_tests.sh b/run_blockchain_tests.sh
new file mode 100755 (executable)
index 0000000..9649750
--- /dev/null
@@ -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"