#!/bin/bash

START_TIME=$(date +%s)

NUM_INSTANCES=5
TARGET_SCRIPT="./client.sh"
PIDS=() 

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
FULL_TARGET_SCRIPT="$SCRIPT_DIR/${TARGET_SCRIPT#./}"

rm -f TestLog*
rm -f my-server*
rm -f *.log

if [ ! -x "$FULL_TARGET_SCRIPT" ]; then
    echo "Error: Target script '$FULL_TARGET_SCRIPT' is not executable."
    echo "Please ensure the file exists and has execute permissions (chmod +x $TARGET_SCRIPT)."
    exit 1
fi

echo "Starting $NUM_INSTANCES instances of $TARGET_SCRIPT in the background (no new windows will open)..."
echo "---"

for i in $(seq 1 $NUM_INSTANCES); do
    $FULL_TARGET_SCRIPT &
    
    PIDS+=($!)
    echo "Launched Worker $i (PID: $!)"
    
done

echo "---"
echo "All $NUM_INSTANCES workers launched. Waiting for them to finish..."

for pid in "${PIDS[@]}"; do
    wait "$pid"
done

END_TIME=$(date +%s)
TOTAL_TIME=$((END_TIME - START_TIME))

H=$((TOTAL_TIME / 3600))
R1=$((TOTAL_TIME % 3600))
M=$((R1 / 60))
S=$((R1 % 60))

TIME_OUTPUT=""

if [ "$H" -gt 0 ]; then
    TIME_OUTPUT+="${H} hours "
fi

if [ "$M" -gt 0 ]; then
    TIME_OUTPUT+="${M} minutes "
fi

if [ "$S" -gt 0 ] || ([ "$H" -eq 0 ] && [ "$M" -eq 0 ]); then
    TIME_OUTPUT+="${S} seconds"
fi

echo "---"
echo "All parallel processes have finished."
echo "Total execution time: ${TIME_OUTPUT}"
