uzbek-plus/b6j/n-run.sh

47 lines
4.8 KiB
Bash

#!/bin/sh
# B6N harness: ONE modem start (rmtfs + MSS once, registration <= T_REG), then NB bearer cycles without MSS/rmtfs/MM/radio restart:
# cycle 1 = the connect done by 'start'; cycles 2..NB = 'start' (reuses rmtfs/MSS/MM, simple-connect only); each: datatest -> 'disconnect'.
# Then full clean shutdown ('stop'). Stops at the first failure (snapshot before any stop). RAM only.
NAME=$1; NB=${2:-6}; O=/tmp/$NAME; mkdir -p $O; M="sh /tmp/aurora-modem"; D=/tmp/aurora-modem.d
export MODEM_CONF=/tmp/n.conf MODEM_KEEP_ON_FAIL=1
B=/sys/bus/platform/devices/4080000.remoteproc:bam-dmux; RPS=/sys/class/remoteproc/remoteproc0/state
mask() { sed -E 's/([0-9]{6,})([0-9]{4})/******\2/g'; }
up() { cut -d' ' -f1 /proc/uptime; }
mk() { echo "<5>[$NAME] $*" > /dev/kmsg; echo "[$(up)] $*" | tee -a $O/run.log; }
nv() { for want in modemst1 modemst2 fsg fsc persist; do for p in /sys/class/block/mmcblk0p*; do
[ "$(sed -n 's/^PARTNAME=//p' $p/uevent)" = "$want" ] && echo "$want $(basename $p) $(sha256sum /dev/$(basename $p) | cut -d' ' -f1)"; done; done; }
ERR='Failed to resume|-110|[ (=]-22\b|EAGAIN|Resource temporarily|crash detected|fatal error|[Ww]atchdog|wdog|Oops|Kernel panic|Unable to handle|BUG:'
nv > $O/nv-before.txt; cat /sys/block/mmcblk0/stat > $O/stat-before.txt; D0=$(dmesg | wc -l); LO=$(wc -l < $D/lifecycle.log 2>/dev/null || echo 0)
printf 'cycle\tconnect\tipv4\tdns\tping\thttp\thttps\tdisconnect\tstale_routes\twwan_up\tbam_after\tmss\trmtfs\tmm\tusb\temmc_w\tdmesg_err\n' > $O/n-table.tsv
FAIL=
for c in $(seq 1 $NB); do
X=$O/b$c; mkdir -p $X; mk "BEARER $c begin: mss=$(cat $RPS) rmtfs='$(pidof rmtfs)' mm='$(pidof ModemManager)'"
lo=$(wc -l < $D/lifecycle.log 2>/dev/null || echo 0)
$M start > $X/start.out 2>&1; SR=$?; mk "BEARER $c start/connect rc=$SR"
cp $D/reg-trans.tsv $D/reg-denied-count $D/reg-*.txt $X/ 2>/dev/null; cp $D/ipcfg $X/ 2>/dev/null
if [ $SR != 0 ]; then mk "BEARER $c FAILED in $(cat $D/state) - snapshot BEFORE stop"; sh /tmp/j-snap.sh $X/snap > $X/snap.out 2>&1
FAIL="start/connect in $(cat $D/state)"; tail -n +$((lo+1)) $D/lifecycle.log | mask > $X/lifecycle.log; break; fi
IP=$(sed -n 's/^A=//p' $X/ipcfg)
sh /tmp/aurora-modem-datatest $X/dt > $X/dt.out 2>&1; DR=$?; V=$(cat $X/dt/verdict.txt 2>/dev/null); mk "BEARER $c $V"
$M disconnect > $X/disc.out 2>&1; PR=$?; mk "BEARER $c disconnect rc=$PR"
ST=$(ip route | grep -c " dev wwan"); WU=$(for d in /sys/class/net/wwan*; do [ $(( $(cat $d/flags) & 1 )) -ne 0 ] && echo ${d##*/}; done | tr '\n' ' ')
WA=$(for d in /sys/class/net/wwan*; do ip -4 addr show ${d##*/} | grep -q "inet " && echo ${d##*/}; done | tr '\n' ' ')
U=$(ping -c2 -W2 172.16.42.2 >/dev/null 2>&1 && echo ok || echo FAIL); E=$(dmesg | tail -n +$((D0+1)) | grep -cE "$ERR")
tail -n +$((lo+1)) $D/lifecycle.log | mask > $X/lifecycle.log
printf '%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n' $c "rc=$SR" "${IP:--}" "$(echo "$V" | grep -oE 'dns=[0-9]')" "$(echo "$V" | grep -oE 'ping=[0-9+]*')" \
"$(echo "$V" | grep -oE 'http=code=[0-9]*')" "$(echo "$V" | grep -oE 'https=\[[^]]*\]\([^)]*\)')" "rc=$PR" $ST "${WU:-none}${WA:+ addr:$WA}" "$(cat $B/power/runtime_status)" \
"$(cat $RPS)" "$(pidof rmtfs)" "$(pidof ModemManager)" $U "$(awk '{print $5"/"$7}' /sys/block/mmcblk0/stat)" $E >> $O/n-table.tsv
F=""; [ $DR = 0 ] || F="$F data"; [ $PR = 0 ] || F="$F disconnect"; [ $ST = 0 ] || F="$F stale-routes"; [ -z "$WU$WA" ] || F="$F wwan"
[ $U = ok ] || F="$F usb"; [ $E = 0 ] || F="$F dmesg-errs"; awk '{exit !($5==0 && $7==0)}' /sys/block/mmcblk0/stat || F="$F emmc-writes"
[ "$(cat $RPS)" = running ] || F="$F mss-$(cat $RPS)"; [ -n "$(pidof rmtfs)" ] || F="$F rmtfs-gone"
mk "BEARER $c RESULT ${F:-PASS}"
[ -z "$F" ] || { FAIL="bearer $c:$F"; mk "STOP: bearer $c failure:$F (no shutdown before snapshot)"; sh /tmp/j-snap.sh $X/snap > $X/snap.out 2>&1; break; }
sleep 5
done
mk "SHUTDOWN (full clean stop): $(cat $D/state)"; $M stop > $O/stop.out 2>&1; SP=$?; sleep 2
dmesg | tail -n +$((D0+1)) > $O/dmesg-delta.txt; grep -E "$ERR" $O/dmesg-delta.txt > $O/dmesg-errs.txt
nv > $O/nv-after.txt; cat /sys/block/mmcblk0/stat > $O/stat-after.txt; cmp -s $O/nv-before.txt $O/nv-after.txt && NVR=unchanged || NVR=CHANGED
tail -n +$((LO+1)) $D/lifecycle.log | mask > $O/lifecycle.log; cp $D/rmtfs.log $O/rmtfs.log 2>/dev/null
for f in $D/mm-*.log; do [ -f $f ] && mask < $f > $O/$(basename $f); done
mk "FINAL: ${FAIL:-all bearer cycles PASS}; stop rc=$SP; nv $NVR; emmc $(awk '{print "w="$5" s="$7}' $O/stat-after.txt); mss=$(cat $RPS) rmtfs='$(pidof rmtfs)' mm='$(pidof ModemManager)' bam=$(cat $B/power/runtime_status) wwan-up=$(for d in /sys/class/net/wwan*; do [ $(( $(cat $d/flags) & 1 )) -ne 0 ] && echo ${d##*/}; done | tr '\n' ' ') dmesg-errs=$(wc -l < $O/dmesg-errs.txt) usb=$(ping -c2 -W2 172.16.42.2 >/dev/null 2>&1 && echo ok || echo FAIL)"
tar -C /tmp -cf /tmp/$NAME.tar $NAME; mk "$NAME-RUN-END"