Files
kitadmin 24d8fbd366 fix: revert TUNNEL_LOCAL_SSH_PORT to 2223, fix registry, add incident docs
- 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>
2026-07-22 21:20:08 +00:00

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" ]
}