#!/bin/bash

# Script to test specific test functions by name
# Usage: ./test_specific.sh [test_name_pattern] [runs]

TEST_PATTERN=${1:-""}
RUNS=${2:-30}

if [ -z "$TEST_PATTERN" ]; then
    echo "Usage: ./test_specific.sh [test_name_pattern] [runs]"
    echo "Example: ./test_specific.sh \"executor\" 30"
    echo "Available test patterns (from cargo test -- --list):"
    cargo test -- --list | grep ": test$" | head -20
    exit 1
fi

SUCCESS_COUNT=0
FAILURE_COUNT=0
TIMEOUT_COUNT=0

TEST_CMD="cargo test $TEST_PATTERN"

echo "Running '$TEST_CMD' $RUNS times..."
echo "Started at: $(date)"
echo

for i in $(seq 1 $RUNS); do
    echo -n "Run $i/$RUNS: "
    
    # Run with timeout and capture exit code
    timeout 30s $TEST_CMD --quiet > /dev/null 2>&1
    EXIT_CODE=$?
    
    if [ $EXIT_CODE -eq 0 ]; then
        SUCCESS_COUNT=$((SUCCESS_COUNT + 1))
        echo "PASS"
    elif [ $EXIT_CODE -eq 124 ]; then
        TIMEOUT_COUNT=$((TIMEOUT_COUNT + 1))
        echo "TIMEOUT"
    else
        FAILURE_COUNT=$((FAILURE_COUNT + 1))
        echo "FAIL"
    fi
done

echo
echo "=== RESULTS FOR PATTERN '$TEST_PATTERN' ==="
echo "Total runs: $RUNS"
echo "Successes: $SUCCESS_COUNT"
echo "Failures: $FAILURE_COUNT"
echo "Timeouts: $TIMEOUT_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 "Timeout rate: $(echo "scale=2; $TIMEOUT_COUNT * 100 / $RUNS" | bc -l)%"
echo "Finished at: $(date)"