#!/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"