This commit is contained in:
parent
4cdd0b07b9
commit
ff65cdf3c1
|
|
@ -0,0 +1,235 @@
|
||||||
|
# 测试和健康检查脚本
|
||||||
|
|
||||||
|
## 使用流程
|
||||||
|
|
||||||
|
### 1️⃣ 启动 Redis(如果未启动)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 启动 Redis
|
||||||
|
redis-server --daemonize yes
|
||||||
|
|
||||||
|
# 或者使用后台启动
|
||||||
|
redis-server &
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2️⃣ 启动 Identity Service
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 在项目根目录
|
||||||
|
npm run start:dev
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3️⃣ 运行健康检查
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 进入 scripts 目录
|
||||||
|
cd scripts
|
||||||
|
|
||||||
|
# 运行健康检查
|
||||||
|
./health-check.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
**期望输出:**
|
||||||
|
```
|
||||||
|
🏥 开始健康检查...
|
||||||
|
|
||||||
|
=== 数据库服务 ===
|
||||||
|
Checking PostgreSQL ... ✓ OK
|
||||||
|
=== 缓存服务 ===
|
||||||
|
Checking Redis ... ✓ OK
|
||||||
|
=== 消息队列服务 ===
|
||||||
|
Checking Kafka ... ✓ OK
|
||||||
|
=== 应用服务 ===
|
||||||
|
Checking Identity Service ... ✓ OK
|
||||||
|
=== API 文档 ===
|
||||||
|
Checking Swagger UI ... ✓ OK
|
||||||
|
|
||||||
|
======================================
|
||||||
|
健康检查完成!
|
||||||
|
正常: 5
|
||||||
|
异常: 0
|
||||||
|
======================================
|
||||||
|
✓ 所有服务正常!
|
||||||
|
|
||||||
|
现在可以运行测试:
|
||||||
|
./scripts/quick-test.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4️⃣ 运行快速功能测试
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./quick-test.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
这个脚本会自动测试所有核心功能:
|
||||||
|
- ✅ 账户创建
|
||||||
|
- ✅ 个人资料管理
|
||||||
|
- ✅ 设备管理
|
||||||
|
- ✅ Token 刷新
|
||||||
|
- ✅ 助记词恢复
|
||||||
|
- ✅ 推荐码查询
|
||||||
|
- ✅ KYC 提交
|
||||||
|
- ✅ 错误场景处理
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 如果健康检查失败
|
||||||
|
|
||||||
|
当 `health-check.sh` 显示服务异常时,它会给出修复建议:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
✗ 存在异常的服务!
|
||||||
|
|
||||||
|
修复建议:
|
||||||
|
• Redis: redis-server --daemonize yes
|
||||||
|
• Identity Service: npm run start:dev
|
||||||
|
|
||||||
|
或者运行一键启动脚本:
|
||||||
|
./scripts/start-all.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### 手动修复步骤
|
||||||
|
|
||||||
|
#### Redis 未启动
|
||||||
|
```bash
|
||||||
|
redis-server --daemonize yes
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Identity Service 未启动
|
||||||
|
```bash
|
||||||
|
# 在项目根目录
|
||||||
|
npm run start:dev
|
||||||
|
```
|
||||||
|
|
||||||
|
#### PostgreSQL 未启动
|
||||||
|
```bash
|
||||||
|
# Ubuntu/Debian
|
||||||
|
sudo systemctl start postgresql
|
||||||
|
|
||||||
|
# macOS
|
||||||
|
brew services start postgresql
|
||||||
|
|
||||||
|
# Windows
|
||||||
|
# 使用 PostgreSQL 服务管理器
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 一键启动(推荐)
|
||||||
|
|
||||||
|
如果想一次性启动所有服务:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/start-all.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
这个脚本会:
|
||||||
|
1. ✅ 启动 Redis(如果未运行)
|
||||||
|
2. ✅ 检查 PostgreSQL 状态
|
||||||
|
3. ✅ 检查 Kafka 状态
|
||||||
|
4. ✅ 启动 Identity Service
|
||||||
|
5. ✅ 等待服务就绪
|
||||||
|
6. ✅ 自动运行健康检查
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 脚本说明
|
||||||
|
|
||||||
|
### `health-check.sh`
|
||||||
|
- **作用**: 检查所有依赖服务是否正常运行
|
||||||
|
- **使用场景**: 部署前、调试时
|
||||||
|
- **前置条件**: 所有服务需要已启动
|
||||||
|
|
||||||
|
### `quick-test.sh`
|
||||||
|
- **作用**: 快速测试所有核心 API 功能
|
||||||
|
- **使用场景**: 验证功能完整性、回归测试
|
||||||
|
- **前置条件**: `health-check.sh` 通过
|
||||||
|
|
||||||
|
### `start-all.sh`
|
||||||
|
- **作用**: 一键启动所有服务
|
||||||
|
- **使用场景**: 初次启动、快速启动环境
|
||||||
|
- **前置条件**: 依赖已安装(PostgreSQL、Redis、Kafka)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 常见问题
|
||||||
|
|
||||||
|
### Q: 为什么 `curl: command not found`?
|
||||||
|
**A:** 安装 curl
|
||||||
|
```bash
|
||||||
|
# Ubuntu/Debian
|
||||||
|
sudo apt-get install curl
|
||||||
|
|
||||||
|
# macOS (通常已安装)
|
||||||
|
brew install curl
|
||||||
|
```
|
||||||
|
|
||||||
|
### Q: 为什么 `jq: command not found`?
|
||||||
|
**A:** `quick-test.sh` 需要 jq 来解析 JSON
|
||||||
|
```bash
|
||||||
|
# Ubuntu/Debian
|
||||||
|
sudo apt-get install jq
|
||||||
|
|
||||||
|
# macOS
|
||||||
|
brew install jq
|
||||||
|
```
|
||||||
|
|
||||||
|
### Q: Redis 启动失败?
|
||||||
|
**A:** 检查是否已经在运行
|
||||||
|
```bash
|
||||||
|
# 查看 Redis 进程
|
||||||
|
ps aux | grep redis
|
||||||
|
|
||||||
|
# 如果已运行,先停止
|
||||||
|
redis-cli shutdown
|
||||||
|
|
||||||
|
# 然后重新启动
|
||||||
|
redis-server --daemonize yes
|
||||||
|
```
|
||||||
|
|
||||||
|
### Q: Identity Service 启动失败?
|
||||||
|
**A:** 检查日志
|
||||||
|
```bash
|
||||||
|
# 查看启动日志
|
||||||
|
npm run start:dev
|
||||||
|
|
||||||
|
# 常见问题:
|
||||||
|
# 1. 端口 3000 已被占用 → 修改 PORT 环境变量
|
||||||
|
# 2. 数据库连接失败 → 检查 .env 配置
|
||||||
|
# 3. Redis 连接失败 → 确保 Redis 已启动
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 完整测试流程
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. 进入项目目录
|
||||||
|
cd ~/work/rwadurian/backend/services/identity-service
|
||||||
|
|
||||||
|
# 2. 安装依赖(首次)
|
||||||
|
npm install
|
||||||
|
|
||||||
|
# 3. 启动所有服务
|
||||||
|
./scripts/start-all.sh
|
||||||
|
|
||||||
|
# 4. 运行健康检查
|
||||||
|
./scripts/health-check.sh
|
||||||
|
|
||||||
|
# 5. 运行快速测试
|
||||||
|
./scripts/quick-test.sh
|
||||||
|
|
||||||
|
# 6. 运行完整测试
|
||||||
|
npm test
|
||||||
|
npm run test:e2e
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 下一步
|
||||||
|
|
||||||
|
所有脚本通过后,可以进行:
|
||||||
|
- 📊 [集成测试](../test/integration-checklist.md)
|
||||||
|
- 🔒 [安全测试](../test/security-test-checklist.md)
|
||||||
|
- ⚡ [性能测试](../test/performance-test.md)
|
||||||
|
- 📝 [手动测试](../test/manual-test-scenarios.md)
|
||||||
|
|
@ -1,24 +1,25 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# 健康检查脚本 - 检查所有依赖服务是否正常
|
# 健康检查脚本 - 检查所有依赖服务是否正常
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
echo "🏥 开始健康检查..."
|
echo "🏥 开始健康检查..."
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
GREEN='\033[0;32m'
|
GREEN='\033[0;32m'
|
||||||
RED='\033[0;31m'
|
RED='\033[0;31m'
|
||||||
YELLOW='\033[1;33m'
|
YELLOW='\033[1;33m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
NC='\033[0m'
|
NC='\033[0m'
|
||||||
|
|
||||||
# 检查计数
|
# 检查计数
|
||||||
PASS=0
|
PASS=0
|
||||||
FAIL=0
|
FAIL=0
|
||||||
|
FAILED_SERVICES=()
|
||||||
|
|
||||||
# 检查函数
|
# 检查函数
|
||||||
check_service() {
|
check_service() {
|
||||||
local service_name=$1
|
local service_name=$1
|
||||||
local check_command=$2
|
local check_command=$2
|
||||||
|
local fix_command=$3
|
||||||
|
|
||||||
echo -n "Checking $service_name ... "
|
echo -n "Checking $service_name ... "
|
||||||
|
|
||||||
|
|
@ -28,28 +29,29 @@ check_service() {
|
||||||
else
|
else
|
||||||
echo -e "${RED}✗ FAIL${NC}"
|
echo -e "${RED}✗ FAIL${NC}"
|
||||||
FAIL=$((FAIL + 1))
|
FAIL=$((FAIL + 1))
|
||||||
|
FAILED_SERVICES+=("$service_name:$fix_command")
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# 检查 PostgreSQL
|
# 检查 PostgreSQL
|
||||||
echo -e "${YELLOW}=== 数据库服务 ===${NC}"
|
echo -e "${YELLOW}=== 数据库服务 ===${NC}"
|
||||||
check_service "PostgreSQL" "pg_isready -h localhost -p 5432"
|
check_service "PostgreSQL" "pg_isready -h localhost -p 5432" "sudo systemctl start postgresql"
|
||||||
|
|
||||||
# 检查 Redis
|
# 检查 Redis
|
||||||
echo -e "${YELLOW}=== 缓存服务 ===${NC}"
|
echo -e "${YELLOW}=== 缓存服务 ===${NC}"
|
||||||
check_service "Redis" "redis-cli -h localhost -p 6379 ping"
|
check_service "Redis" "redis-cli -h localhost -p 6379 ping" "redis-server --daemonize yes"
|
||||||
|
|
||||||
# 检查 Kafka
|
# 检查 Kafka
|
||||||
echo -e "${YELLOW}=== 消息队列服务 ===${NC}"
|
echo -e "${YELLOW}=== 消息队列服务 ===${NC}"
|
||||||
check_service "Kafka" "nc -zv localhost 9092"
|
check_service "Kafka" "nc -zv localhost 9092" "启动 Kafka (需要手动启动)"
|
||||||
|
|
||||||
# 检查应用服务
|
# 检查应用服务
|
||||||
echo -e "${YELLOW}=== 应用服务 ===${NC}"
|
echo -e "${YELLOW}=== 应用服务 ===${NC}"
|
||||||
check_service "Identity Service" "curl -f http://localhost:3000/health"
|
check_service "Identity Service" "curl -f http://localhost:3000/health" "npm run start:dev"
|
||||||
|
|
||||||
# 检查 Swagger 文档
|
# 检查 Swagger 文档
|
||||||
echo -e "${YELLOW}=== API 文档 ===${NC}"
|
echo -e "${YELLOW}=== API 文档 ===${NC}"
|
||||||
check_service "Swagger UI" "curl -f http://localhost:3000/api"
|
check_service "Swagger UI" "curl -f http://localhost:3000/api" "等待 Identity Service 启动"
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo -e "${YELLOW}======================================${NC}"
|
echo -e "${YELLOW}======================================${NC}"
|
||||||
|
|
@ -60,8 +62,21 @@ echo -e "${YELLOW}======================================${NC}"
|
||||||
|
|
||||||
if [ $FAIL -eq 0 ]; then
|
if [ $FAIL -eq 0 ]; then
|
||||||
echo -e "${GREEN}✓ 所有服务正常!${NC}"
|
echo -e "${GREEN}✓ 所有服务正常!${NC}"
|
||||||
|
echo ""
|
||||||
|
echo -e "${BLUE}现在可以运行测试:${NC}"
|
||||||
|
echo " ./scripts/quick-test.sh"
|
||||||
exit 0
|
exit 0
|
||||||
else
|
else
|
||||||
echo -e "${RED}✗ 存在异常的服务!${NC}"
|
echo -e "${RED}✗ 存在异常的服务!${NC}"
|
||||||
|
echo ""
|
||||||
|
echo -e "${BLUE}修复建议:${NC}"
|
||||||
|
for service_info in "${FAILED_SERVICES[@]}"; do
|
||||||
|
service_name="${service_info%%:*}"
|
||||||
|
fix_command="${service_info#*:}"
|
||||||
|
echo -e "${YELLOW} • $service_name:${NC} $fix_command"
|
||||||
|
done
|
||||||
|
echo ""
|
||||||
|
echo -e "${BLUE}或者运行一键启动脚本:${NC}"
|
||||||
|
echo " ./scripts/start-all.sh"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,61 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# 一键启动所有服务
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
echo -e "${YELLOW}🚀 启动所有服务...${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 1. 启动 Redis
|
||||||
|
echo -e "${YELLOW}启动 Redis...${NC}"
|
||||||
|
if ! pgrep -x "redis-server" > /dev/null; then
|
||||||
|
redis-server --daemonize yes
|
||||||
|
echo -e "${GREEN}✓ Redis 已启动${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${GREEN}✓ Redis 已在运行${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 2. 检查 PostgreSQL
|
||||||
|
echo -e "${YELLOW}检查 PostgreSQL...${NC}"
|
||||||
|
if pg_isready -h localhost -p 5432 > /dev/null 2>&1; then
|
||||||
|
echo -e "${GREEN}✓ PostgreSQL 已在运行${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}⚠ PostgreSQL 未运行,请手动启动${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 3. 检查 Kafka
|
||||||
|
echo -e "${YELLOW}检查 Kafka...${NC}"
|
||||||
|
if nc -zv localhost 9092 > /dev/null 2>&1; then
|
||||||
|
echo -e "${GREEN}✓ Kafka 已在运行${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}⚠ Kafka 未运行,请手动启动${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 4. 启动 Identity Service
|
||||||
|
echo -e "${YELLOW}启动 Identity Service...${NC}"
|
||||||
|
cd "$(dirname "$0")/.."
|
||||||
|
npm run start:dev &
|
||||||
|
|
||||||
|
# 等待服务启动
|
||||||
|
echo "等待服务启动 (最多 30 秒)..."
|
||||||
|
for i in {1..30}; do
|
||||||
|
if curl -f http://localhost:3000/health > /dev/null 2>&1; then
|
||||||
|
echo -e "${GREEN}✓ Identity Service 已启动${NC}"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
echo -n "."
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e "${GREEN}✓ 所有服务已启动!${NC}"
|
||||||
|
echo ""
|
||||||
|
echo "运行健康检查:"
|
||||||
|
echo " ./scripts/health-check.sh"
|
||||||
|
echo ""
|
||||||
|
echo "运行快速测试:"
|
||||||
|
echo " ./scripts/quick-test.sh"
|
||||||
Loading…
Reference in New Issue