AI_UIAutomation/scripts/run-ctrl-3states.sh

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"