# 测试和健康检查脚本 ## 使用流程 ### 1️⃣ 启动基础服务 ```bash # 启动 Redis redis-server --daemonize yes # 或使用 Docker docker compose up -d redis ``` ### 2️⃣ 启动 Blockchain Service ```bash # 在项目根目录 npm run start:dev ``` ### 3️⃣ 运行健康检查 ```bash # 进入 scripts 目录 cd scripts # 运行健康检查 ./health-check.sh ``` **期望输出:** ``` 🏥 开始健康检查... === 数据库服务 === Checking PostgreSQL ... ✓ OK === 缓存服务 === Checking Redis ... ✓ OK === 消息队列服务 === Checking Kafka ... ✓ OK === 区块链 RPC === Checking KAVA RPC ... ✓ OK Checking BSC RPC ... ✓ OK === 应用服务 === Checking Blockchain Service ... ✓ OK === API 文档 === Checking Swagger UI ... ✓ OK ====================================== 健康检查完成! 正常: 7 异常: 0 ====================================== ✓ 所有服务正常! 现在可以运行测试: ./scripts/quick-test.sh ``` ### 4️⃣ 运行快速功能测试 ```bash ./quick-test.sh ``` 这个脚本会自动测试所有核心功能: - ✅ 健康检查 - ✅ 余额查询(单链/多链) - ✅ 地址派生 - ✅ 用户地址查询 - ✅ 错误场景处理 - ✅ API 文档可访问性 --- ## 脚本说明 ### `health-check.sh` - **作用**: 检查所有依赖服务是否正常运行 - **使用场景**: 部署前、调试时 - **检查项目**: - PostgreSQL 数据库 - Redis 缓存 - Kafka 消息队列 - KAVA/BSC RPC 端点 - Blockchain Service 应用 ### `quick-test.sh` - **作用**: 快速测试所有核心 API 功能 - **使用场景**: 验证功能完整性、回归测试 - **前置条件**: `health-check.sh` 通过 ### `start-all.sh` - **作用**: 一键启动所有服务 - **使用场景**: 初次启动、快速启动环境 - **前置条件**: 依赖已安装 ### `stop-service.sh` - **作用**: 停止 Blockchain Service - **使用场景**: 需要停止服务时 ### `rebuild-kafka.sh` - **作用**: 重建 Kafka 容器 - **使用场景**: Kafka 配置变更后 --- ## 主要 API 端点 | 端点 | 方法 | 描述 | |------|------|------| | `/health` | GET | 健康检查 | | `/health/ready` | GET | 就绪检查 | | `/balance` | GET | 查询单链余额 | | `/balance/multi-chain` | GET | 查询多链余额 | | `/internal/derive-address` | POST | 从公钥派生地址 | | `/internal/user/:userId/addresses` | GET | 获取用户地址 | | `/api` | GET | Swagger 文档 | --- ## 部署脚本 (deploy.sh) 主部署脚本位于项目根目录,提供以下命令: ```bash # 构建 Docker 镜像 ./deploy.sh build # 启动服务 ./deploy.sh start # 停止服务 ./deploy.sh stop # 重启服务 ./deploy.sh restart # 查看日志 ./deploy.sh logs # 健康检查 ./deploy.sh health # 运行数据库迁移 ./deploy.sh migrate # 打开 Prisma Studio ./deploy.sh prisma-studio # 进入容器 shell ./deploy.sh shell # 查询余额 ./deploy.sh check-balance KAVA 0x1234... # 触发区块扫描 ./deploy.sh scan-blocks ``` --- ## 常见问题 ### Q: 为什么 RPC 检查失败? **A:** 检查网络连接,或者 RPC 端点可能暂时不可用 ### Q: Redis 启动失败? **A:** 检查是否已经在运行 ```bash ps aux | grep redis redis-cli shutdown # 如果已运行 redis-server --daemonize yes ``` ### Q: Kafka 连接失败? **A:** 重建 Kafka 容器 ```bash ./scripts/rebuild-kafka.sh ``` --- ## 完整测试流程 ```bash # 1. 进入项目目录 cd ~/work/rwadurian/backend/services/blockchain-service # 2. 安装依赖(首次) npm install # 3. 生成 Prisma Client npx prisma generate # 4. 运行数据库迁移 npx prisma migrate dev # 5. 启动所有服务 ./scripts/start-all.sh # 6. 运行健康检查 ./scripts/health-check.sh # 7. 运行快速测试 ./scripts/quick-test.sh # 8. 运行完整测试 npm test npm run test:e2e ``` --- ## 区块链特定测试 ### 测试余额查询 ```bash # KAVA 链 curl "http://localhost:3012/balance?chainType=KAVA&address=0x..." # 多链查询 curl "http://localhost:3012/balance/multi-chain?address=0x..." ``` ### 测试地址派生 ```bash curl -X POST "http://localhost:3012/internal/derive-address" \ -H "Content-Type: application/json" \ -d '{ "userId": "12345", "publicKey": "0x02..." }' ```