feat(@scripts): ✨ cache media file resolution for faster tests
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
parent
278cd67524
commit
96edee4b11
1 changed files with 32 additions and 3 deletions
|
|
@ -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" "----" "----" "----" "-------"
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue