From 0eab8a0bfa55c96f1b553a3083472d81d2b1be80 Mon Sep 17 00:00:00 2001 From: Yaro Kasear Date: Wed, 16 Apr 2025 12:43:08 -0500 Subject: [PATCH] Add retry mechanism for speed test in runtest.sh and update settings for max retries and delay --- runtest.sh | 36 +++++++++++++++++++++++++++++++++--- settings.env.default | 3 +++ 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/runtest.sh b/runtest.sh index 5472c98..915e2bb 100755 --- a/runtest.sh +++ b/runtest.sh @@ -67,8 +67,29 @@ while [ "$COUNTER" -lt "$NUM_TESTS" ]; do link_level_noise=$(awk 'NR==3 {gsub(/\./, "", $3); gsub(/\./, "", $4); gsub(/\./, "", $5); print $3","$4","$5}' /proc/net/wireless) bssid_and_bitrate=$(iw dev $INTERFACE link | awk '/Connected/ {bssid=$3} /tx bitrate/ {tx=$3} /rx bitrate/ {rx=$3} END {print bssid","tx","rx}') - # Speed test - speed_results=$(speedtest --secure --csv) + speed_results="" + for ((retry=1; retry<=MAX_RETRIES; retry++)); do + echo " Attempting speed test (try $retry)..." + speed_results=$(speedtest --secure --csv 2>/dev/null) + + if [[ -n "$speed_results" ]]; then + break + fi + + echo " [!] Speedtest failed at $(date -Iseconds). Retrying in $RETRY_DELAY seconds..." + sleep $RETRY_DELAY + done + + if [[ -z "$speed_results" ]]; then + TIMESTAMP=$(date -Iseconds) + echo " [!] Speedtest permanently failed at $TIMESTAMP. Skipping sample $i of test $COUNTER." + + # Optionally log failure to a sidecar file for later nerd rage + echo "$TIMESTAMP,Test $COUNTER,Sample $i" >> "${TEST_FILE%.csv}-failures.log" + + continue # Skip this sample + fi + # TX failure delta FAILED_NOW=$(get_tx_failed) @@ -110,8 +131,17 @@ fi python3 $SCRIPT_DIRECTORY/enrich.py --csv $TEST_FILE --pcapng "$KISMET_LOG" --output "$ENRICHED_FILE" +ATTACHMENTS="$ENRICHED_FILE" + +# Check if a failure log exists and add it to the attachments +FAILURE_LOG="${TEST_FILE%.csv}-failures.log" +if [ -f "$FAILURE_LOG" ]; then + ATTACHMENTS="$ATTACHMENTS -a $FAILURE_LOG" + echo "[+] Attaching failure log: $FAILURE_LOG" +fi + # Final email with attachment echo "The test with UID ${BOOT_ID} is complete. Please collect the probe. Data is attached." | \ -mutt -s "Test ${BOOT_ID} Complete" -a "$ENRICHED_FILE" -- "$RECIPIENT" +mutt -s "Test ${BOOT_ID} Complete" $ATTACHMENTS -- "$RECIPIENT" sudo kill $SUDO_KEEPALIVE_PID diff --git a/settings.env.default b/settings.env.default index 40b873f..1468218 100644 --- a/settings.env.default +++ b/settings.env.default @@ -13,4 +13,7 @@ INTERFACE=wlan0 PING_COUNT=25 PING_TARGET=1.1.1.1 +MAX_RETRIES=5 +RETRY_DELAY=10 # seconds + RECIPIENT=