#!/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