Co-authored-by: xiuting.xu <xiutingxt.xu@gmail.com> Reviewed-on: #21 Reviewed-by: huhy <husteryezi@163.com> Reviewed-by: sundapeng <sundp@mail.zgclab.edu.cn> Reviewed-by: yuyr <yuyr@zgclab.edu.cn>
106 lines
2.7 KiB
Bash
106 lines
2.7 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
echo "======================================="
|
|
echo "ARGUS Alert System End-to-End Test"
|
|
echo "======================================="
|
|
echo ""
|
|
|
|
# 记录测试开始时间
|
|
test_start_time=$(date +%s)
|
|
|
|
# 函数:等待服务就绪
|
|
wait_for_services() {
|
|
echo "[INFO] Waiting for all services to be ready..."
|
|
local max_attempts=${SERVICE_WAIT_ATTEMPTS:-120}
|
|
local attempt=1
|
|
|
|
while [ $attempt -le $max_attempts ]; do
|
|
if curl -fs http://localhost:9093/api/v2/status >/dev/null 2>&1; then
|
|
echo "[OK] All services are ready!"
|
|
return 0
|
|
fi
|
|
echo " Waiting for services... ($attempt/$max_attempts)"
|
|
sleep 5
|
|
((attempt++))
|
|
done
|
|
|
|
echo "[ERROR] Services not ready after $max_attempts attempts"
|
|
return 1
|
|
}
|
|
|
|
# 函数:显示测试步骤
|
|
show_step() {
|
|
echo ""
|
|
echo "🔄 Step $1: $2"
|
|
echo "----------------------------------------"
|
|
}
|
|
|
|
# 函数:验证步骤结果
|
|
verify_step() {
|
|
if [ $? -eq 0 ]; then
|
|
echo "✅ $1 - SUCCESS"
|
|
else
|
|
echo "❌ $1 - FAILED"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# 开始端到端测试
|
|
show_step "1" "Bootstrap - Initialize environment"
|
|
./scripts/01_bootstrap.sh
|
|
verify_step "Bootstrap"
|
|
|
|
show_step "2" "Startup - Start all services"
|
|
./scripts/02_up.sh
|
|
verify_step "Service startup"
|
|
|
|
# 等待服务完全就绪
|
|
wait_for_services || exit 1
|
|
|
|
# 发送告警数据
|
|
show_step "3" "Add alerts - Send test alerts to Alertmanager"
|
|
./scripts/03_alertmanager_add_alert.sh
|
|
verify_step "Send test alerts"
|
|
|
|
# 查询告警数据
|
|
show_step "4" "Verify data - Query Alertmanager"
|
|
./scripts/04_query_alerts.sh
|
|
verify_step "Data verification"
|
|
|
|
|
|
# 检查服务健康状态
|
|
show_step "Health" "Check service health"
|
|
echo "[INFO] Checking service health..."
|
|
|
|
# 检查 Alertmanager 状态
|
|
if curl -fs "http://localhost:9093/api/v2/status" >/dev/null 2>&1; then
|
|
am_status="available"
|
|
echo "✅ Alertmanager status: $am_status"
|
|
else
|
|
am_status="unavailable"
|
|
echo "⚠️ Alertmanager status: $am_status"
|
|
fi
|
|
verify_step "Service health check"
|
|
|
|
# 清理环境
|
|
show_step "5" "Cleanup - Stop all services"
|
|
./scripts/05_down.sh
|
|
verify_step "Service cleanup"
|
|
|
|
# 计算总测试时间
|
|
test_end_time=$(date +%s)
|
|
total_time=$((test_end_time - test_start_time))
|
|
|
|
echo ""
|
|
echo "======================================="
|
|
echo "🎉 END-TO-END TEST COMPLETED SUCCESSFULLY!"
|
|
echo "======================================="
|
|
echo "📊 Test Summary:"
|
|
echo " • Total time: ${total_time}s"
|
|
echo " • Alertmanager status: $am_status"
|
|
echo " • All services started and stopped successfully"
|
|
echo ""
|
|
echo "✅ The ARGUS Alert system is working correctly!"
|
|
echo ""
|