#!/bin/bash set -u DATADIR=./benchmark-datadir SHA256CMD="$(command -v sha256sum || echo shasum)" SHA256ARGS="$(command -v sha256sum >/dev/null || echo '-a 256')" function zcash_rpc { ./src/zcash-cli -datadir="$DATADIR" -rpcuser=user -rpcpassword=password -rpcport=5983 "$@" } function zcash_rpc_slow { # Timeout of 1 hour zcash_rpc -rpcclienttimeout=3600 "$@" } function zcash_rpc_veryslow { # Timeout of 2.5 hours zcash_rpc -rpcclienttimeout=9000 "$@" } function zcash_rpc_wait_for_start { zcash_rpc -rpcwait getinfo > /dev/null } function zcashd_generate { zcash_rpc generate 101 > /dev/null } function extract_benchmark_datadir { if [ -f "$1.tar.xz" ]; then # Check the hash of the archive: "$SHA256CMD" $SHA256ARGS -c < /dev/null wait $ZCASHD_PID } function zcashd_massif_start { case "$1" in sendtoaddress|loadwallet|listunspent) case "$2" in 200k-recv) use_200k_benchmark 0 ;; 200k-send) use_200k_benchmark 1 ;; *) echo "Bad arguments to zcashd_massif_start." exit 1 esac ;; *) rm -rf "$DATADIR" mkdir -p "$DATADIR/regtest" touch "$DATADIR/zcash.conf" esac rm -f massif.out valgrind --tool=massif --time-unit=ms --massif-out-file=massif.out ./src/zcashd -regtest -datadir="$DATADIR" -rpcuser=user -rpcpassword=password -rpcport=5983 -showmetrics=0 & ZCASHD_PID=$! zcash_rpc_wait_for_start } function zcashd_massif_stop { zcash_rpc stop > /dev/null wait $ZCASHD_PID ms_print massif.out } function zcashd_valgrind_start { rm -rf "$DATADIR" mkdir -p "$DATADIR/regtest" touch "$DATADIR/zcash.conf" rm -f valgrind.out valgrind --leak-check=yes -v --error-limit=no --log-file="valgrind.out" ./src/zcashd -regtest -datadir="$DATADIR" -rpcuser=user -rpcpassword=password -rpcport=5983 -showmetrics=0 & ZCASHD_PID=$! zcash_rpc_wait_for_start } function zcashd_valgrind_stop { zcash_rpc stop > /dev/null wait $ZCASHD_PID cat valgrind.out } function extract_benchmark_data { if [ -f "block-107134.tar.xz" ]; then # Check the hash of the archive: "$SHA256CMD" $SHA256ARGS -c <