#!/bin/bash

# Script to test cargo test reliability by running it multiple times
# Usage: ./test_reliability.sh [number_of_runs]

RUNS=${1:-100}
SUCCESS_COUNT=0
FAILURE_COUNT=0
TOTAL_TIME=0

echo "Running 'cargo test' $RUNS times to check reliability..."
echo "Started at: $(date)"
echo

for i in $(seq 1 $RUNS); do
    echo -n "Run $i/$RUNS: "
    
    START_TIME=$(date +%s.%N)
    
    if timeout 30s cargo test --quiet > /dev/null 2>&1; then
        SUCCESS_COUNT=$((SUCCESS_COUNT + 1))
        echo "PASS"
    else
        FAILURE_COUNT=$((FAILURE_COUNT + 1))
        echo "FAIL"
    fi
    
    END_TIME=$(date +%s.%N)
    RUN_TIME=$(echo "$END_TIME - $START_TIME" | bc -l)
    TOTAL_TIME=$(echo "$TOTAL_TIME + $RUN_TIME" | bc -l)
done

echo
echo "=== RESULTS ==="
echo "Total runs: $RUNS"
echo "Successes: $SUCCESS_COUNT"
echo "Failures: $FAILURE_COUNT"
echo "Success rate: $(echo "scale=2; $SUCCESS_COUNT * 100 / $RUNS" | bc -l)%"
echo "Failure rate: $(echo "scale=2; $FAILURE_COUNT * 100 / $RUNS" | bc -l)%"
echo "Average time per run: $(echo "scale=2; $TOTAL_TIME / $RUNS" | bc -l) seconds"
echo "Total time: $(echo "scale=2; $TOTAL_TIME" | bc -l) seconds"
echo "Finished at: $(date)"