diff --git a/scripts/auto_test.sh b/scripts/BACDauto_test.sh similarity index 100% rename from scripts/auto_test.sh rename to scripts/BACDauto_test.sh diff --git a/scripts/BDAanto_test.sh b/scripts/BDAanto_test.sh new file mode 100755 index 0000000..7d7c43d --- /dev/null +++ b/scripts/BDAanto_test.sh @@ -0,0 +1,161 @@ +#!/bin/bash + +echo "=== 开始自动化测试 ===" + +cd /home/limingjie/LMJ_Work/OmniSocketGo +rm -rf logs +mkdir -p logs inbox/a + +# 1. 清理残留 & 启动 Server D +echo ">>> 1. 启动 Server D " + +ssh bj-txy bash -s <<'EOF' +export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin" +pkill -f kcpserver 2>/dev/null || true +pkill -f 'cmd/kcpserver' 2>/dev/null || true +sleep 1 +cd /home/ubuntu/OmniSocketGo +setsid go run ./cmd/kcpserver/ -listen 0.0.0.0:10909 > server_console.log 2>&1 /dev/null; then + echo " Server D 就绪 (${i}s)" + break + fi + if [ "$i" -eq 60 ]; then + echo " ERROR: Server D 60s 内未就绪,退出" + exit 1 + fi + sleep 1 +done + +# 2. 启动本地 Peer-A +echo ">>> 2. 启动本地 Peer-A..." +nohup go run ./cmd/kcppeer/ \ + -id peer-a \ + -server 81.70.156.140:10909 \ + -inbox-dir inbox/a \ + -latency-log logs/a-latency.jsonl \ + -interactive=false > logs/peera_console.log 2>&1 & +PEER_A_PID=$! + +# 等待 peer-a 注册成功 +echo " 等待 Peer-A 注册..." +for i in $(seq 1 30); do + if grep -q "opened KCP session as peer-a" logs/peera_console.log 2>/dev/null; then + echo " Peer-A 就绪 (${i}s)" + break + fi + if [ "$i" -eq 30 ]; then + echo " WARNING: Peer-A 30s 内未就绪" + fi + sleep 1 +done + +# 3. 在远端后台启动 peer-b 整个发送流程,不依赖长 SSH 连接 +echo ">>> 3. 启动远端 Peer-B 并执行 50 轮打流测试..." +ssh omni-peer "cd /home/boll/LMJWork/OmniSocketGo && rm -rf logs && mkdir -p logs inbox/b" + +PEERB_DONE_FLAG="/tmp/peerb_batch_done" +PEERB_BATCH_SCRIPT="/tmp/peerb_batch.sh" + +# 把整个发送脚本写到远端,setsid 后台执行 +ssh omni-peer bash -s <<'DEPLOY_SCRIPT' +export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin" + +DONE_FLAG="/tmp/peerb_batch_done" +BATCH_SCRIPT="/tmp/peerb_batch.sh" +rm -f "$DONE_FLAG" + +cat > "$BATCH_SCRIPT" <<'INNER_EOF' +#!/bin/bash +export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin" +cd /home/boll/LMJWork/OmniSocketGo + +CMD_FIFO=/tmp/peerb_commands +DONE_FLAG="/tmp/peerb_batch_done" +rm -f "$CMD_FIFO" "$DONE_FLAG" +mkfifo "$CMD_FIFO" + +# 启动 peer-b +go run ./cmd/kcppeer/ \ + -id peer-b \ + -server 81.70.156.140:10909 \ + -inbox-dir inbox/b \ + -latency-log logs/b-latency.jsonl \ + < "$CMD_FIFO" > logs/peerb_console.log 2>&1 & +PEER_B_PID=$! + +exec 3>"$CMD_FIFO" + +# 等 peer-b 就绪 +for i in $(seq 1 60); do + if grep -q "opened KCP session as peer-b" logs/peerb_console.log 2>/dev/null; then + break + fi + sleep 1 +done + +# 50 轮发送 +for i in $(seq 1 50); do + echo "file peer-a /tmp/test30k.bin" >&3 + sleep 1 + echo "file peer-a /tmp/test5.bin" >&3 + sleep 1 +done + +sleep 5 +echo "quit" >&3 +exec 3>&- +rm -f "$CMD_FIFO" +wait $PEER_B_PID 2>/dev/null || true + +# 写完成标记 +echo "done" > "$DONE_FLAG" +INNER_EOF + +chmod +x "$BATCH_SCRIPT" +setsid bash "$BATCH_SCRIPT" /dev/null 2>&1 & +echo "peer-b batch launched in background" +DEPLOY_SCRIPT + +# 本地轮询等待远端完成(短 SSH 连接,不怕断开) +echo " 等待 peer-b 发送完成(预计 ~110 秒)..." +for i in $(seq 1 180); do + if ssh omni-peer "test -f /tmp/peerb_batch_done" 2>/dev/null; then + echo " peer-b 发送完成 (${i}s)" + break + fi + if [ "$i" -eq 180 ]; then + echo " ERROR: peer-b 180s 内未完成" + fi + # 每 5 秒查一次,减少 SSH 连接频率 + sleep 5 +done + +# 4. 清理 +echo ">>> 4. 清理所有进程..." +kill $PEER_A_PID 2>/dev/null || true +ssh bj-txy "pkill -f kcpserver || true; pkill -f 'cmd/kcpserver' || true" +ssh sz-txy "pkill -f kcpserver || true; pkill -f 'cmd/kcpserver' || true" + +# 获取当前时间戳,格式为 YYYYMMDD_HHMMSS +TIMESTAMP=$(date +"%Y%m%d_%H%M%S") +# 5. 拉取数据 & 生成报告 +echo ">>> 5. 拉取数据并生成汇总报告..." +mkdir -p ./BCAlogs/$TIMESTAMP +scp -o ServerAliveInterval=15 -P 10022 boll@175.178.116.187:/home/boll/LMJWork/OmniSocketGo/logs/b-latency.jsonl ./logs/b-latency.jsonl + +mv ./logs/a-latency.jsonl ./BCAlogs/$TIMESTAMP/a-latency.jsonl +mv ./logs/b-latency.jsonl ./BCAlogs/$TIMESTAMP/b-latency.jsonl + +go run ./cmd/latencysummary \ + -input ./BCAlogs/$TIMESTAMP/a-latency.jsonl \ + -input ./BCAlogs/$TIMESTAMP/b-latency.jsonl \ + -output ./BCAlogs/$TIMESTAMP/latency-summary.jsonl + +echo "=== 测试完成!==="