- #!/usr/bin/env bash
- #
- # This is a convenience script that takes a list of testnet manifests
- # as arguments and runs each one of them sequentially. If a testnet
- # fails, the container logs are dumped to stdout along with the testnet
- # manifest, but the remaining testnets are still run.
- #
- # This is mostly used to run generated networks in nightly CI jobs.
- #
-
- set -euo pipefail
-
- if [[ $# == 0 ]]; then
- echo "Usage: $0 [MANIFEST...]" >&2
- exit 1
- fi
-
- FAILED=()
-
- for MANIFEST in "$@"; do
- START=$SECONDS
- echo "==> Running testnet $MANIFEST..."
-
- if ! ./build/runner -f "$MANIFEST"; then
- echo "==> Testnet $MANIFEST failed, dumping manifest..."
- cat "$MANIFEST"
-
- echo "==> Dumping container logs for $MANIFEST..."
- ./build/runner -f "$MANIFEST" logs
-
- echo "==> Cleaning up failed testnet $MANIFEST..."
- ./build/runner -f "$MANIFEST" cleanup
-
- FAILED+=("$MANIFEST")
- fi
-
- echo "==> Completed testnet $MANIFEST in $(( SECONDS - START ))s"
- echo ""
- done
-
- if [[ ${#FAILED[@]} -ne 0 ]]; then
- echo "${#FAILED[@]} testnets failed:"
- for MANIFEST in "${FAILED[@]}"; do
- echo "- $MANIFEST"
- done
- exit 1
- else
- echo "All testnets successful"
- fi
|