Merge branch 'main' of https://106.52.207.92:9103/limingjie/OmniSocketGo
This commit is contained in:
161
scripts/BDAanto_test.sh
Executable file
161
scripts/BDAanto_test.sh
Executable file
@@ -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 &
|
||||||
|
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 "=== 测试完成!==="
|
||||||
Reference in New Issue
Block a user