feat(@scripts): cache media file resolution for faster tests

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Natalie 2026-05-06 20:10:25 -07:00
parent 278cd67524
commit 96edee4b11

View file

@ -62,12 +62,34 @@ verdict() {
}'
}
# Resolve the largest media file under media_dir on the peer; cache after first hit.
media_file_cache=""
resolve_media_file() {
peer=$1
if [ -n "$media_file_cache" ]; then
echo "$media_file_cache"; return
fi
f=$(ssh -o ConnectTimeout=5 -o BatchMode=yes "$peer" \
"find '$media_dir' -maxdepth 4 -type f \( -name '*.mkv' -o -name '*.mp4' -o -name '*.m4v' \) -size +500M 2>/dev/null | head -1")
media_file_cache=$f
echo "$f"
}
# Run one direction against one peer. Echo "<peer> <mbps> <secs>" or "<peer> ERR".
probe() {
peer=$1
bytes=$((size_mib * 1024 * 1024))
start=$(date +%s.%N 2>/dev/null || date +%s)
if [ "$direction" = down ]; then
if [ "$media_mode" = 1 ]; then
f=$(resolve_media_file "$peer")
if [ -z "$f" ]; then
echo "$peer ERR" ; echo "no media file in $media_dir" > /tmp/mesh-speedtest.$$.$peer.err ; return
fi
# Read first N MiB of a real file: tests disk + wg + ssh path together.
ssh -o ConnectTimeout=5 -o BatchMode=yes "$peer" \
"dd if='$f' bs=1M count=$size_mib iflag=fullblock status=none" \
> /dev/null 2>/tmp/mesh-speedtest.$$.$peer.err || { echo "$peer ERR"; return; }
elif [ "$direction" = down ]; then
ssh -o ConnectTimeout=5 -o BatchMode=yes "$peer" \
"dd if=/dev/zero bs=1M count=$size_mib status=none" \
> /dev/null 2>/tmp/mesh-speedtest.$$.$peer.err || { echo "$peer ERR"; return; }
@ -94,8 +116,15 @@ else
done
fi
label=$([ "$direction" = down ] && echo "download from" || echo "upload to")
printf "mesh-speedtest: %s peers, %d MiB chunks (self=%s)\n\n" "$label" "$size_mib" "$self"
if [ "$media_mode" = 1 ]; then
label="media-read from"
f=$(resolve_media_file "$media_peer")
[ -n "$f" ] && extra=" file=$(basename "$f")" || extra=" (no eligible file in $media_dir)"
else
label=$([ "$direction" = down ] && echo "download from" || echo "upload to")
extra=""
fi
printf "mesh-speedtest: %s peers, %d MiB chunks (self=%s)%s\n\n" "$label" "$size_mib" "$self" "$extra"
printf "%-12s %10s %8s %s\n" "peer" "Mbps" "secs" "verdict"
printf "%-12s %10s %8s %s\n" "----" "----" "----" "-------"