103 lines
8.0 KiB
Bash
Executable File
103 lines
8.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# show the commands we are executing
|
|
set -x
|
|
# exit if a command fails
|
|
set -e
|
|
# exit if any command in a pipeline fails
|
|
set -o pipefail
|
|
|
|
# TODO: expand this section if needed (#4363)
|
|
echo "Test variables:"
|
|
echo "ZEBRA_TEST_LIGHTWALLETD=$ZEBRA_TEST_LIGHTWALLETD"
|
|
echo "Hard-coded Zebra full sync directory: /zebrad-cache"
|
|
echo "ZEBRA_CACHED_STATE_DIR=$ZEBRA_CACHED_STATE_DIR"
|
|
echo "LIGHTWALLETD_DATA_DIR=$LIGHTWALLETD_DATA_DIR"
|
|
|
|
case "$1" in
|
|
-- | cargo)
|
|
# For these tests, we activate the gRPC feature to avoid recompiling `zebrad`,
|
|
# but we might not actually run any gRPC tests.
|
|
if [[ "$RUN_ALL_TESTS" -eq "1" ]]; then
|
|
# Run all the available tests for the current environment.
|
|
# If the lightwalletd environmental variables are set, we will also run those tests.
|
|
cargo test --locked --release --features lightwalletd-grpc-tests --workspace -- --nocapture --include-ignored
|
|
|
|
# For these tests, we activate the gRPC feature to avoid recompiling `zebrad`,
|
|
# but we don't actually run any gRPC tests.
|
|
elif [[ "$TEST_FULL_SYNC" -eq "1" ]]; then
|
|
# Run a Zebra full sync test.
|
|
cargo test --locked --release --features lightwalletd-grpc-tests --package zebrad --test acceptance -- --nocapture --include-ignored full_sync_mainnet
|
|
# List directory generated by test
|
|
# TODO: replace with $ZEBRA_CACHED_STATE_DIR in Rust and workflows
|
|
ls -lh "/zebrad-cache"/*/* || (echo "No /zebrad-cache/*/*"; ls -lhR "/zebrad-cache" | head -50 || echo "No /zebrad-cache directory")
|
|
elif [[ "$TEST_DISK_REBUILD" -eq "1" ]]; then
|
|
# Run a Zebra sync up to the mandatory checkpoint.
|
|
#
|
|
# TODO: use environmental variables instead of Rust features (part of #2995)
|
|
cargo test --locked --release --features "test_sync_to_mandatory_checkpoint_${NETWORK,,},lightwalletd-grpc-tests" --package zebrad --test acceptance -- --nocapture --include-ignored "sync_to_mandatory_checkpoint_${NETWORK,,}"
|
|
# TODO: replace with $ZEBRA_CACHED_STATE_DIR in Rust and workflows
|
|
ls -lh "/zebrad-cache"/*/* || (echo "No /zebrad-cache/*/*"; ls -lhR "/zebrad-cache" | head -50 || echo "No /zebrad-cache directory")
|
|
elif [[ "$TEST_UPDATE_SYNC" -eq "1" ]]; then
|
|
# Run a Zebra sync starting at the cached tip, and syncing to the latest tip.
|
|
#
|
|
# List directory used by test
|
|
ls -lh "$ZEBRA_CACHED_STATE_DIR"/*/* || (echo "No $ZEBRA_CACHED_STATE_DIR/*/*"; ls -lhR "$ZEBRA_CACHED_STATE_DIR" | head -50 || echo "No $ZEBRA_CACHED_STATE_DIR directory")
|
|
cargo test --locked --release --features lightwalletd-grpc-tests --package zebrad --test acceptance -- --nocapture --include-ignored zebrad_update_sync
|
|
elif [[ "$TEST_CHECKPOINT_SYNC" -eq "1" ]]; then
|
|
# Run a Zebra sync starting at the cached mandatory checkpoint, and syncing past it.
|
|
#
|
|
# List directory used by test
|
|
# TODO: replace with $ZEBRA_CACHED_STATE_DIR in Rust and workflows
|
|
ls -lh "/zebrad-cache"/*/* || (echo "No /zebrad-cache/*/*"; ls -lhR "/zebrad-cache" | head -50 || echo "No /zebrad-cache directory")
|
|
# TODO: use environmental variables instead of Rust features (part of #2995)
|
|
cargo test --locked --release --features "test_sync_past_mandatory_checkpoint_${NETWORK,,},lightwalletd-grpc-tests" --package zebrad --test acceptance -- --nocapture --include-ignored "sync_past_mandatory_checkpoint_${NETWORK,,}"
|
|
elif [[ "$TEST_LWD_RPC_CALL" -eq "1" ]]; then
|
|
# Starting at a cached Zebra tip, test a JSON-RPC call to Zebra.
|
|
ls -lh "$ZEBRA_CACHED_STATE_DIR"/*/* || (echo "No $ZEBRA_CACHED_STATE_DIR/*/*"; ls -lhR "$ZEBRA_CACHED_STATE_DIR" | head -50 || echo "No $ZEBRA_CACHED_STATE_DIR directory")
|
|
cargo test --locked --release --features lightwalletd-grpc-tests --package zebrad --test acceptance -- --nocapture --include-ignored fully_synced_rpc_test
|
|
elif [[ "$TEST_LWD_FULL_SYNC" -eq "1" ]]; then
|
|
# Starting at a cached Zebra tip, run a lightwalletd sync to tip.
|
|
ls -lh "$ZEBRA_CACHED_STATE_DIR"/*/* || (echo "No $ZEBRA_CACHED_STATE_DIR/*/*"; ls -lhR "$ZEBRA_CACHED_STATE_DIR" | head -50 || echo "No $ZEBRA_CACHED_STATE_DIR directory")
|
|
cargo test --locked --release --features lightwalletd-grpc-tests --package zebrad --test acceptance -- --nocapture --include-ignored lightwalletd_full_sync
|
|
ls -lhR "$LIGHTWALLETD_DATA_DIR/db" || (echo "No $LIGHTWALLETD_DATA_DIR/db"; ls -lhR "$LIGHTWALLETD_DATA_DIR" | head -50 || echo "No $LIGHTWALLETD_DATA_DIR directory")
|
|
elif [[ "$TEST_LWD_UPDATE_SYNC" -eq "1" ]]; then
|
|
# Starting with a cached Zebra and lightwalletd tip, run a quick update sync.
|
|
ls -lh "$ZEBRA_CACHED_STATE_DIR"/*/* || (echo "No $ZEBRA_CACHED_STATE_DIR/*/*"; ls -lhR "$ZEBRA_CACHED_STATE_DIR" | head -50 || echo "No $ZEBRA_CACHED_STATE_DIR directory")
|
|
ls -lhR "$LIGHTWALLETD_DATA_DIR/db" || (echo "No $LIGHTWALLETD_DATA_DIR/db"; ls -lhR "$LIGHTWALLETD_DATA_DIR" | head -50 || echo "No $LIGHTWALLETD_DATA_DIR directory")
|
|
cargo test --locked --release --features lightwalletd-grpc-tests --package zebrad --test acceptance -- --nocapture --include-ignored lightwalletd_update_sync
|
|
|
|
# These tests actually use gRPC.
|
|
elif [[ "$TEST_LWD_GRPC" -eq "1" ]]; then
|
|
# Starting with a cached Zebra and lightwalletd tip, test all gRPC calls to lightwalletd, which calls Zebra.
|
|
ls -lh "$ZEBRA_CACHED_STATE_DIR"/*/* || (echo "No $ZEBRA_CACHED_STATE_DIR/*/*"; ls -lhR "$ZEBRA_CACHED_STATE_DIR" | head -50 || echo "No $ZEBRA_CACHED_STATE_DIR directory")
|
|
ls -lhR "$LIGHTWALLETD_DATA_DIR/db" || (echo "No $LIGHTWALLETD_DATA_DIR/db"; ls -lhR "$LIGHTWALLETD_DATA_DIR" | head -50 || echo "No $LIGHTWALLETD_DATA_DIR directory")
|
|
cargo test --locked --release --features lightwalletd-grpc-tests --package zebrad --test acceptance -- --nocapture --include-ignored lightwalletd_wallet_grpc_tests
|
|
elif [[ "$TEST_LWD_TRANSACTIONS" -eq "1" ]]; then
|
|
# Starting with a cached Zebra and lightwalletd tip, test sending transactions gRPC call to lightwalletd, which calls Zebra.
|
|
ls -lh "$ZEBRA_CACHED_STATE_DIR"/*/* || (echo "No $ZEBRA_CACHED_STATE_DIR/*/*"; ls -lhR "$ZEBRA_CACHED_STATE_DIR" | head -50 || echo "No $ZEBRA_CACHED_STATE_DIR directory")
|
|
ls -lhR "$LIGHTWALLETD_DATA_DIR/db" || (echo "No $LIGHTWALLETD_DATA_DIR/db"; ls -lhR "$LIGHTWALLETD_DATA_DIR" | head -50 || echo "No $LIGHTWALLETD_DATA_DIR directory")
|
|
cargo test --locked --release --features lightwalletd-grpc-tests --package zebrad --test acceptance -- --nocapture --include-ignored sending_transactions_using_lightwalletd
|
|
elif [[ "$TEST_GET_BLOCK_TEMPLATE" -eq "1" ]]; then
|
|
# Starting with a cached Zebra tip, test getting a block template from Zebra's RPC server.
|
|
ls -lh "$ZEBRA_CACHED_STATE_DIR"/*/* || (echo "No $ZEBRA_CACHED_STATE_DIR/*/*"; ls -lhR "$ZEBRA_CACHED_STATE_DIR" | head -50 || echo "No $ZEBRA_CACHED_STATE_DIR directory")
|
|
cargo test --locked --release --features getblocktemplate-rpcs --package zebrad --test acceptance -- --nocapture --include-ignored get_block_template
|
|
elif [[ "$TEST_SUBMIT_BLOCK" -eq "1" ]]; then
|
|
# Starting with a cached Zebra tip, test sending a block to Zebra's RPC port.
|
|
ls -lh "$ZEBRA_CACHED_STATE_DIR"/*/* || (echo "No $ZEBRA_CACHED_STATE_DIR/*/*"; ls -lhR "$ZEBRA_CACHED_STATE_DIR" | head -50 || echo "No $ZEBRA_CACHED_STATE_DIR directory")
|
|
cargo test --locked --release --features getblocktemplate-rpcs --package zebrad --test acceptance -- --nocapture --include-ignored submit_block
|
|
|
|
# These command-lines are provided by the caller.
|
|
#
|
|
# TODO: test that the following 3 cases actually work, or remove them
|
|
else
|
|
exec "$@"
|
|
fi
|
|
;;
|
|
zebrad)
|
|
exec zebrad "$@"
|
|
;;
|
|
*)
|
|
exec "$@"
|
|
esac
|