24d8fbd366
- wizard.sh + connect.conf: TUNNEL_LOCAL_SSH_PORT back to 2223 (Synology SSH port) - port-registry: renamed x6340 → x4662 (matches QuickConnect ID) - port-registry: added MR2200ac mesh satellite note for x4662 - deployment checklist: added kit-connect section, post-deployment rules, incident log, and complete fleet port registry table - memory: added fleet-router-inventory.md with full fleet state - hub README: updated with current status and locations Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
72 lines
2.7 KiB
Bash
72 lines
2.7 KiB
Bash
LIBDIR="$(cd "$BATS_TEST_DIRNAME/../.."/package/kit-busrouter/files/usr/lib/busrouter && pwd)"
|
|
|
|
setup() {
|
|
export LIB_DIR="$LIBDIR"
|
|
export STATE_DIR="$BATS_TMPDIR/daemon_state"
|
|
rm -rf "$STATE_DIR"
|
|
mkdir -p "$STATE_DIR"
|
|
export SCORE_SAMPLES=3
|
|
export CELL_IFACE=rmnet_mhi0 CELL_MBR=modem_0001
|
|
export ETH_IFACE=eth0 ETH_MBR=wan
|
|
export INTERVAL=30
|
|
# Load all libs (daemon.sh's while loop is guarded by case "${0##*/}" so safe to load)
|
|
load '../../package/kit-busrouter/files/usr/lib/busrouter/lib-decide.sh'
|
|
load '../../package/kit-busrouter/files/usr/lib/busrouter/lib-score.sh'
|
|
load '../../package/kit-busrouter/files/usr/lib/busrouter/metrics-net.sh'
|
|
load '../../package/kit-busrouter/files/usr/lib/busrouter/speedtest.sh'
|
|
load '../../package/kit-busrouter/files/usr/lib/busrouter/modem-sim.sh'
|
|
load '../../package/kit-busrouter/files/usr/lib/busrouter/starlink.sh'
|
|
load '../../package/kit-busrouter/files/usr/lib/busrouter/wan-mwan.sh'
|
|
load '../../package/kit-busrouter/files/usr/lib/busrouter/telemetry.sh'
|
|
load '../../package/kit-busrouter/files/usr/lib/busrouter/daemon.sh'
|
|
}
|
|
|
|
@test "daemon.sh loads without error and does not start loop" {
|
|
run true
|
|
[ "$status" -eq 0 ]
|
|
# If we reach here, the load in setup() did not hang -> loop guard works
|
|
}
|
|
|
|
@test "_score_history_update: primes from default 50 50 50 and appends new score" {
|
|
run _score_history_update "modem_0001" 70
|
|
[ "$status" -eq 0 ]
|
|
echo "$output" | grep -qE '^50 50 70$'
|
|
}
|
|
|
|
@test "_score_history_update: keeps last SCORE_SAMPLES scores only" {
|
|
export SCORE_SAMPLES=3
|
|
_score_history_update "modem_0001" 60 >/dev/null
|
|
_score_history_update "modem_0001" 70 >/dev/null
|
|
_score_history_update "modem_0001" 80 >/dev/null
|
|
run _score_history_update "modem_0001" 90
|
|
[ "$status" -eq 0 ]
|
|
# Should be "70 80 90" (last 3 of: 50 50 50 60 70 80 90)
|
|
echo "$output" | grep -qE '^70 80 90$'
|
|
}
|
|
|
|
@test "_collect_wan: writes metric and score files" {
|
|
net_probe_iface() { echo "20 5 0"; }
|
|
speed_test_due() { return 0; }
|
|
speed_test_iface() { echo "50.0 10.0"; }
|
|
score_composite() { echo "75"; }
|
|
rolling_avg() { echo "72"; }
|
|
|
|
run _collect_wan "eth0" "wan"
|
|
[ "$status" -eq 0 ]
|
|
[ -f "${STATE_DIR}/metric_wan" ]
|
|
[ -f "${STATE_DIR}/score_wan" ]
|
|
score=$(cat "${STATE_DIR}/score_wan")
|
|
[ "$score" -eq 72 ]
|
|
}
|
|
|
|
@test "_collect_wan: fail-open when net_probe_iface returns error" {
|
|
net_probe_iface() { return 1; }
|
|
speed_test_due() { return 1; }
|
|
score_composite() { echo "0"; }
|
|
rolling_avg() { echo "0"; }
|
|
|
|
run _collect_wan "rmnet_mhi0" "modem_0001" "-99"
|
|
[ "$status" -eq 0 ]
|
|
[ -f "${STATE_DIR}/metric_modem_0001" ]
|
|
}
|