Files
EasyTier/easytier-contrib/easytier-uptime/test-integration.sh

144 lines
3.6 KiB
Bash
Executable File

#!/bin/bash
# EasyTier Uptime Monitor 集成测试脚本
set -e
echo "🧪 Running EasyTier Uptime Monitor Integration Tests..."
# 检查依赖
echo "📦 Checking dependencies..."
# 检查 Rust
if ! command -v cargo &> /dev/null; then
echo "❌ Rust is not installed. Please install Rust first."
exit 1
fi
# 检查 curl
if ! command -v curl &> /dev/null; then
echo "❌ curl is not installed. Please install curl first."
exit 1
fi
# 设置环境变量
export RUST_LOG=info
export NODE_ENV=test
# 创建测试目录
echo "📁 Creating test directories..."
mkdir -p test-results
mkdir -p test-logs
# 复制测试环境配置
if [ ! -f .env ]; then
echo "📝 Creating test environment configuration..."
cp .env.development .env
fi
# 构建项目
echo "🔧 Building project..."
cargo build
# 启动后端服务进行测试
echo "🚀 Starting backend server for testing..."
cargo run &
BACKEND_PID=$!
# 等待后端服务启动
echo "⏳ Waiting for backend server to start..."
sleep 5
# 检查服务是否运行
echo "🔍 Checking if server is running..."
if curl -f http://localhost:8080/health > /dev/null 2>&1; then
echo "✅ Backend server is running"
else
echo "❌ Backend server failed to start"
kill $BACKEND_PID 2>/dev/null || true
exit 1
fi
# 运行API测试
echo "🧪 Running API tests..."
if cargo test api_test --lib -- --nocapture > test-results/api-test.log 2>&1; then
echo "✅ API tests passed"
else
echo "❌ API tests failed"
echo "Check test-results/api-test.log for details"
fi
# 运行健康检查测试
echo "🏥 Running health check tests..."
curl -s http://localhost:8080/health | jq . > test-results/health-check.json
if [ $? -eq 0 ]; then
echo "✅ Health check test passed"
else
echo "❌ Health check test failed"
fi
# 运行节点管理测试
echo "🔧 Running node management tests..."
# 创建测试节点
curl -s -X POST http://localhost:8080/api/nodes \
-H "Content-Type: application/json" \
-d '{
"name": "Test Node",
"host": "127.0.0.1",
"port": 11010,
"protocol": "tcp",
"version": "1.0.0",
"description": "Test node for integration testing",
"max_connections": 100
}' > test-results/create-node.json
# 获取节点列表
curl -s http://localhost:8080/api/nodes > test-results/get-nodes.json
echo "✅ Node management tests completed"
# 停止后端服务
echo "🛑 Stopping backend server..."
kill $BACKEND_PID 2>/dev/null || true
sleep 2
# 强制杀死可能残留的进程
pkill -f easytier-uptime 2>/dev/null || true
echo "✅ Integration tests completed!"
echo "📊 Test results saved to test-results/"
echo "📋 Test logs saved to test-logs/"
# 生成测试报告
echo "📝 Generating test report..."
cat > test-results/test-report.md << EOF
# EasyTier Uptime Monitor Integration Test Report
## Test Summary
- **Test Date**: $(date)
- **Test Environment**: Integration
- **Backend PID**: $BACKEND_PID
## Test Results
### API Tests
- Status: $(grep -q "test result: ok" test-results/api-test.log && echo "PASSED" || echo "FAILED")
- Log: [api-test.log](api-test.log)
### Health Check
- Status: $(jq -r '.success' test-results/health-check.json 2>/dev/null || echo "FAILED")
- Response: $(cat test-results/health-check.json 2>/dev/null || echo "No response")
### Node Management
- Status: COMPLETED
- Create Node: [create-node.json](create-node.json)
- Get Nodes: [get-nodes.json](get-nodes.json)
## System Information
- **Rust Version**: $(rustc --version)
- **Cargo Version**: $(cargo --version)
- **System**: $(uname -a)
EOF
echo "✅ Test report generated: test-results/test-report.md"