Files
OmniSocketGo/scripts/BDAanto_test.sh

162 lines
4.3 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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 &
echo "server D launched (pid=$!)"
EOF
# 等待 server D 端口就绪
echo " 等待 Server D 端口就绪..."
for i in $(seq 1 60); do
if ssh bj-txy "ss -ulnp | grep -q 10909" 2>/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 >/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 "=== 测试完成!==="