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

