#!/usr/bin/env bash # Disaster Recovery Test Runner # Executes all DR test scenarios set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../../../.." && pwd)" DR_TEST_DIR="$PROJECT_ROOT/smom-dbis-138/tests/disaster-recovery" echo "Disaster Recovery Test Suite" echo "=============================" echo "" # Ensure DR test directory exists mkdir -p "$DR_TEST_DIR" # Check if test scenarios exist if [ ! -f "$DR_TEST_DIR/test-pause-recovery.sh" ]; then echo "Creating DR test scenarios..." bash "$SCRIPT_DIR/disaster-recovery-test.sh" > /dev/null 2>&1 fi SCENARIOS=( "test-pause-recovery.sh:Pause and Recovery" "test-rpc-outage.sh:RPC Outage Recovery" "test-liquidity-crisis.sh:Liquidity Crisis Recovery" "test-multisig-recovery.sh:Multisig Recovery" ) PASSED=0 FAILED=0 SKIPPED=0 for scenario in "${SCENARIOS[@]}"; do IFS=':' read -r script name <<< "$scenario" script_path="$DR_TEST_DIR/$script" if [ ! -f "$script_path" ]; then echo "⚠️ SKIPPED: $name (script not found)" SKIPPED=$((SKIPPED + 1)) continue fi echo "Running: $name" echo "----------------------------------------" # Make script executable chmod +x "$script_path" 2>/dev/null || true # Run test (capture output) if bash "$script_path" 2>&1 | tee /tmp/dr-test-output.log; then echo "✅ PASSED: $name" PASSED=$((PASSED + 1)) else echo "❌ FAILED: $name" FAILED=$((FAILED + 1)) fi echo "" done echo "==========================================" echo "Disaster Recovery Test Results" echo "==========================================" echo " ✅ Passed: $PASSED" echo " ❌ Failed: $FAILED" echo " ⚠️ Skipped: $SKIPPED" echo " 📊 Total: $((PASSED + FAILED + SKIPPED))" echo "" if [ $FAILED -eq 0 ] && [ $SKIPPED -eq 0 ]; then echo "✅ All disaster recovery tests passed" exit 0 elif [ $FAILED -eq 0 ]; then echo "⚠️ Some tests were skipped, but all executed tests passed" exit 0 else echo "❌ Some disaster recovery tests failed" echo "" echo "Review test output above for details" exit 1 fi