83 lines
3.7 KiB
Bash
Executable File
83 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# 三态控制成功率对比(无人值守):Android + iOS,各测 BLE+WiFi / 仅BLE / 仅WiFi 三种连接态,产出对比报告。
|
|
# 只测控制(CONTROL_ONLY=1,不复位不添加)—— 前提:两端首页设备已齐全(沿用上一轮已加设备)。
|
|
# 复用已调通的老脚本,不改动它们;仅编排 + 按态切日志:
|
|
# 状态映射:
|
|
# BLE+WiFi(两开) = NO_PROTO_SPLIT=1 单轮(不切 radio)
|
|
# 仅BLE = 默认 split 的 PROTO=ble(关 WiFi、开蓝牙)
|
|
# 仅WiFi = 默认 split 的 PROTO=wifi(开 WiFi、关蓝牙)
|
|
# Android: run-p0-all.sh 两次调用(both 一次 + split 一次[含 ble+wifi])
|
|
# iOS: run-ios-controls.sh 两次调用(both 一次 + split 一次[含 ble+wifi])
|
|
# 每次调用前把对应老脚本日志清空,跑完 cp 到 ctrl3-*.log,最后用 gen-3state-report.py 汇总。
|
|
# 启动:nohup caffeinate -dimsu bash scripts/run-ctrl-3states.sh > reports/ctrl-3states.out 2>&1 &
|
|
set -u
|
|
cd "$(dirname "$0")/.."
|
|
log(){ echo "[$(date '+%m-%d %H:%M:%S')] $*"; }
|
|
|
|
TS=$(date '+%Y%m%d-%H%M%S')
|
|
mkdir -p reports/archive
|
|
|
|
# 归档上次三态产物,避免混淆
|
|
log "===== 归档上次三态产物 ====="
|
|
for f in reports/ctrl3-*.log reports/三态控制对比_*.md; do
|
|
[ -e "$f" ] && mv "$f" "reports/archive/$(basename "$f" | sed "s/\(\.[^.]*\)$/_$TS\1/")" 2>/dev/null
|
|
done
|
|
|
|
# ---------- Android ----------
|
|
log "等待 Android adb 就绪..."
|
|
ANDROID_OK=0
|
|
for i in $(seq 1 15); do
|
|
adb devices 2>/dev/null | grep -qE "device$" && { log " adb 就绪"; ANDROID_OK=1; break; }
|
|
log " 无 adb 设备,等待 ${i}/15 min..."; sleep 60
|
|
done
|
|
|
|
if [ "$ANDROID_OK" = "1" ]; then
|
|
log "===== Android 状态① BLE+WiFi(两开, 不切 radio)开始 ====="
|
|
: > reports/p0-all.log
|
|
CONTROL_ONLY=1 NO_PROTO_SPLIT=1 bash scripts/run-p0-all.sh
|
|
cp reports/p0-all.log reports/ctrl3-android-both.log
|
|
log "===== Android 状态① 结束 → reports/ctrl3-android-both.log ====="
|
|
|
|
log "===== Android 状态②③ 仅BLE + 仅WiFi(split, 切 radio)开始 ====="
|
|
: > reports/p0-all.log
|
|
CONTROL_ONLY=1 bash scripts/run-p0-all.sh
|
|
cp reports/p0-all.log reports/ctrl3-android-split.log
|
|
log "===== Android 状态②③ 结束 → reports/ctrl3-android-split.log ====="
|
|
else
|
|
log "!! 无 Android 设备,跳过 Android 三态"
|
|
fi
|
|
|
|
# ---------- iOS ----------
|
|
log "===== iOS 阶段前:刷新 iproxy 端口转发(不重装 WDA)====="
|
|
pkill -f "iproxy 8100" 2>/dev/null; sleep 1
|
|
UDID=$(idevice_id -l 2>/dev/null | head -1)
|
|
nohup iproxy 8100 8100 -u "$UDID" >/dev/null 2>&1 &
|
|
sleep 5
|
|
|
|
if curl -s --max-time 5 http://localhost:8100/status 2>/dev/null | grep -q '"ready"'; then
|
|
log "WDA 连通正常"
|
|
|
|
log "===== iOS 状态① BLE+WiFi(两开, 不切 radio)开始 ====="
|
|
NO_PROTO_SPLIT=1 bash scripts/run-ios-controls.sh
|
|
cp reports/ios-controls.log reports/ctrl3-ios-both.log
|
|
log "===== iOS 状态① 结束 → reports/ctrl3-ios-both.log ====="
|
|
|
|
log "===== iOS 状态②③ 仅BLE + 仅WiFi(split, 切 radio)开始 ====="
|
|
bash scripts/run-ios-controls.sh
|
|
cp reports/ios-controls.log reports/ctrl3-ios-split.log
|
|
log "===== iOS 状态②③ 结束 → reports/ctrl3-ios-split.log ====="
|
|
else
|
|
log "!! WDA(8100)不在线,跳过 iOS 三态(检查 iproxy/WDA)"
|
|
fi
|
|
|
|
# ---------- 汇总三态对比报告 ----------
|
|
log "===== 生成三态对比报告 ====="
|
|
OUT="reports/三态控制对比_${TS}.md"
|
|
python3 scripts/gen-3state-report.py "$OUT" \
|
|
--android-both reports/ctrl3-android-both.log \
|
|
--android-split reports/ctrl3-android-split.log \
|
|
--ios-both reports/ctrl3-ios-both.log \
|
|
--ios-split reports/ctrl3-ios-split.log 2>&1 | tail -20
|
|
|
|
log "全链完成。对比报告:$OUT;分态日志:reports/ctrl3-*.log;编排输出:reports/ctrl-3states.out"
|