Files
everything-is-suitable/scripts/setup-test-env.sh
T
张翔 08ea5fbe98 feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
2026-03-28 14:37:29 +08:00

133 lines
4.6 KiB
Bash
Executable File

#!/bin/bash
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
COMPOSE_FILE="${PROJECT_ROOT}/docker-compose.test-new.yml"
ENV_FILE="${PROJECT_ROOT}/.env.test"
if [ ! -f "$ENV_FILE" ]; then
echo "警告: .env.test文件不存在,使用默认配置"
fi
if [ ! -f "$COMPOSE_FILE" ]; then
echo "错误: docker-compose.test-new.yml文件不存在"
exit 1
fi
export COMPOSE_FILE
export ENV_FILE
echo "========================================="
echo "测试环境管理脚本"
echo "========================================="
case "${1:-help}" in
start)
echo "启动测试环境..."
docker-compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" up -d
echo "等待服务启动..."
sleep 10
echo "测试环境启动完成!"
echo ""
echo "服务访问地址:"
echo " API Gateway: http://localhost:${TEST_API_PORT:-8081}"
echo " Admin Backend: http://localhost:${TEST_ADMIN_PORT:-8082}"
echo " PostgreSQL: localhost:${TEST_DB_PORT:-5433}"
echo " Redis: localhost:${TEST_REDIS_PORT:-6380}"
;;
stop)
echo "停止测试环境..."
docker-compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" down
echo "测试环境已停止"
;;
restart)
echo "重启测试环境..."
docker-compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" restart
echo "测试环境已重启"
;;
status)
echo "测试环境状态:"
docker-compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" ps
;;
logs)
if [ -z "${2:-}" ]; then
echo "显示所有服务日志..."
docker-compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" logs -f
else
echo "显示 $2 服务日志..."
docker-compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" logs -f "$2"
fi
;;
clean)
echo "清理测试环境..."
docker-compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" down -v
echo "测试环境已清理"
;;
init-db)
echo "初始化测试数据库..."
docker-compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" exec -T test-postgres psql -U ${TEST_DB_USER:-test_user} -d ${TEST_DB_NAME:-everything_test} -f /docker-entrypoint-initdb.d/init-test-db.sql
echo "测试数据库初始化完成"
;;
reset-db)
echo "重置测试数据库..."
docker-compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" exec -T test-postgres psql -U ${TEST_DB_USER:-test_user} -d ${TEST_DB_NAME:-everything_test} -c "CALL reset_test_data();"
echo "测试数据库已重置"
;;
health)
echo "检查服务健康状态..."
echo ""
echo "PostgreSQL:"
docker-compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" exec -T test-postgres pg_isready -U ${TEST_DB_USER:-test_user} || echo " ❌ 不健康"
echo ""
echo "Redis:"
docker-compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" exec -T test-redis redis-cli ping || echo " ❌ 不健康"
echo ""
echo "API Gateway:"
curl -f http://localhost:${TEST_API_PORT:-8081}/actuator/health > /dev/null 2>&1 && echo " ✅ 健康" || echo " ❌ 不健康"
echo ""
echo "Admin Backend:"
curl -f http://localhost:${TEST_ADMIN_PORT:-8082}/actuator/health > /dev/null 2>&1 && echo " ✅ 健康" || echo " ❌ 不健康"
;;
test)
echo "运行测试..."
echo "请使用相应的测试命令运行测试"
echo " - 单元测试: npm run test"
echo " - E2E测试: npm run test:e2e"
echo " - 性能测试: npm run test:performance"
;;
help|*)
echo "用法: $0 {start|stop|restart|status|logs|clean|init-db|reset-db|health|test|help}"
echo ""
echo "命令说明:"
echo " start - 启动测试环境"
echo " stop - 停止测试环境"
echo " restart - 重启测试环境"
echo " status - 查看测试环境状态"
echo " logs - 查看服务日志 [service_name]"
echo " clean - 清理测试环境(包括数据卷)"
echo " init-db - 初始化测试数据库"
echo " reset-db - 重置测试数据"
echo " health - 检查服务健康状态"
echo " test - 运行测试"
echo " help - 显示帮助信息"
echo ""
echo "示例:"
echo " $0 start"
echo " $0 logs test-api-gateway"
echo " $0 health"
;;
esac