#!/usr/bin/env bash
# One URL × all local∩srcnat on gw1/gw2/gw3, high concurrency.
# Run on jump. MT_PASS must already be exported (or inherited from H69 /proc).
set -euo pipefail
ROOT="${1:?root dir}"
WORKERS="${WORKERS:-12}"
export MT_PASS="${MT_PASS:?}"
mkdir -p "$ROOT"/{gw1,gw2,gw3,logs}
cp -f "$HOME/netflow/scripts/mt_cc_full_matrix.py" "$ROOT/"
printf 'marker-143\thttps://connectivitycheck.gstatic.com/generate_204\n' >"$ROOT/urls.tsv"

run_gw() {
  local lab="$1" host="$2" wan="$3"
  echo "[$(date -u +%H:%M:%SZ)] start $lab workers=$WORKERS" | tee -a "$ROOT/logs/orchestrator.log"
  python3 "$ROOT/mt_cc_full_matrix.py" \
    --host "$host" --wan "$wan" \
    --urls "$ROOT/urls.tsv" \
    --outdir "$ROOT/$lab" --gw-label "$lab" \
    --workers "$WORKERS" --duration 2s \
    --fetch-extra 'check-certificate=no' \
    >"$ROOT/logs/$lab.out" 2>&1
  echo "[$(date -u +%H:%M:%SZ)] done $lab" | tee -a "$ROOT/logs/orchestrator.log"
}

run_gw gw1 198.51.100.1 198.51.100.1 &
PID1=$!
run_gw gw2 203.0.113.250 203.0.113.250 &
PID2=$!
run_gw gw3 203.0.113.65 203.0.113.65 &
PID3=$!
echo "PIDs: gw1=$PID1 gw2=$PID2 gw3=$PID3" | tee -a "$ROOT/logs/orchestrator.log"
wait $PID1; EC1=$?
wait $PID2; EC2=$?
wait $PID3; EC3=$?
echo "exit codes: gw1=$EC1 gw2=$EC2 gw3=$EC3" | tee -a "$ROOT/logs/orchestrator.log"
echo DONE | tee -a "$ROOT/logs/orchestrator.log"
exit $(( EC1 || EC2 || EC3 ))
