AxonHub Scripts
项目脚本工具集,包含测试、部署和开发辅助脚本。
📁 脚本列表
E2E 测试脚本
e2e/e2e-test.sh
一键运行完整的 E2E 测试套件。
# 运行所有 E2E 测试
./scripts/e2e/e2e-test.sh
# 运行特定测试
./scripts/e2e/e2e-test.sh tests/auth.spec.ts
功能:
- 自动启动后端服务
- 运行 Playwright E2E 测试
- 测试完成后自动清理
e2e/e2e-backend.sh
管理 E2E 测试后端服务。
# 启动后端
./scripts/e2e/e2e-backend.sh start
# 停止后端
./scripts/e2e/e2e-backend.sh stop
# 查看状态
./scripts/e2e/e2e-backend.sh status
# 重启后端
./scripts/e2e/e2e-backend.sh restart
# 清理所有 E2E 文件
./scripts/e2e/e2e-backend.sh clean
配置:
- 端口: 8099
- 数据库:
scripts/e2e/axonhub-e2e.db - 日志:
scripts/e2e/e2e-backend.log
数据库迁移测试脚本
migration/migration-test.sh
测试从指定 tag 到当前分支的数据库迁移。
# 测试从 v0.1.0 迁移
./scripts/migration/migration-test.sh v0.1.0
# 跳过 E2E 测试
./scripts/migration/migration-test.sh v0.1.0 --skip-e2e
# 保留测试产物
./scripts/migration/migration-test.sh v0.1.0 --keep-artifacts
# 使用缓存的二进制文件
./scripts/migration/migration-test.sh v0.1.0 --skip-download
功能:
- 从 GitHub 下载指定 tag 的二进制文件
- 缓存下载的二进制文件
- 使用旧版本初始化数据库
- 使用当前版本运行迁移
- 运行 E2E 测试验证迁移结果
详细文档: MIGRATION_TEST.md
migration/migration-test-all.sh
批量测试多个版本的数据库迁移。
# 自动测试最近 3 个稳定版本
./scripts/migration/migration-test-all.sh
# 测试指定版本
./scripts/migration/migration-test-all.sh --tags v0.1.0,v0.2.0,v0.2.1
# 批量测试但跳过 E2E
./scripts/migration/migration-test-all.sh --skip-e2e
功能:
- 自动检测最近的稳定版本
- 批量运行迁移测试
- 生成测试摘要报告
Load Balance 日志分析脚本
utils/filter-load-balance-logs.sh
过滤和分析负载均衡日志,便于分析 load balance 是否如预期工作。
# 显示最近 10 分钟的负载均衡日志
./scripts/filter-load-balance-logs.sh --since 10m server.log
# 按渠道 ID 过滤
./scripts/filter-load-balance-logs.sh --channel-id 1 server.log
# 显示特定模型的统计信息
./scripts/filter-load-balance-logs.sh --model gpt-4 --stats server.log
# 显示详细的策略分解
./scripts/filter-load-balance-logs.sh --details --limit 5 server.log
# 显示最近 1 小时的决策摘要
./scripts/filter-load-balance-logs.sh --since 1h --summary server.log
# 导出为 CSV
./scripts/filter-load-balance-logs.sh --format csv --limit 1000 server.log > output.csv
# 按分数范围过滤
./scripts/filter-load-balance-logs.sh --min-score 1000 --max-score 2000 server.log
# 仅显示排名第一的渠道
./scripts/filter-load-balance-logs.sh --max-rank 1 server.log
功能:
- 按时间范围过滤日志(--since, --until)
- 按渠道 ID 过滤(--channel-id)
- 按模型名称过滤(--model)
- 按分数范围过滤(--min-score, --max-score)
- 按排名过滤(--min-rank, --max-rank)
- 显示决策摘要(--summary)
- 显示统计信息(--stats)
- 显示详细的策略分解(--details)
- 仅显示决策日志或渠道详情(--decision-only, --channel-only)
- 限制输出条数(--limit)
- 多种输出格式:table, json, csv(--format)
日志类型:
Load balancing decision completed- 总体决策信息Channel load balancing details- 每个渠道的详细信息
📚 文档
- QUICK_START.md - E2E 测试快速入门
- MIGRATION_TEST.md - 数据库迁移测试详细文档
- USAGE_EXAMPLE.md - 使用示例
🔧 环境要求
E2E 测试
- Node.js 和 pnpm
- Go 1.21+
- SQLite3
迁移测试
- Go 1.21+
- unzip
- curl
- SQLite3
- 可选: jq (用于 JSON 解析)
📦 目录结构
scripts/
├── README.md # 本文件
├── QUICK_START.md # E2E 测试快速入门
├── MIGRATION_TEST.md # 迁移测试详细文档
├── USAGE_EXAMPLE.md # 使用示例
│
├── e2e-test.sh # E2E 测试主脚本
├── e2e-backend.sh # E2E 后端管理脚本
├── migration-test.sh # 单版本迁移测试
├── migration-test-all.sh # 批量迁移测试
│
├── axonhub-e2e # E2E 测试二进制文件(自动生成)
├── axonhub-e2e.db # E2E 测试数据库(自动生成)
├── e2e-backend.log # E2E 后端日志(自动生成)
├── .e2e-backend.pid # E2E 后端进程 ID(自动生成)
│
└── migration-test/ # 迁移测试工作目录(自动生成)
├── cache/ # 二进制文件缓存
│ ├── v0.1.0/
│ │ └── axonhub
│ └── v0.2.0/
│ └── axonhub
└── work/ # 临时工作目录
├── axonhub-current
├── migration-test.db
├── migration-test.log
└── migration-plan.json
🚀 快速开始
运行 E2E 测试
# 方式 1: 使用 pnpm(推荐)
cd frontend
pnpm test:e2e
# 方式 2: 直接运行脚本
./scripts/e2e-test.sh
测试数据库迁移
# 测试单个版本
./scripts/migration-test.sh v0.1.0
# 测试多个版本
./scripts/migration-test-all.sh
🔍 故障排查
E2E 测试失败
# 查看后端日志
cat scripts/e2e-backend.log
# 检查后端状态
./scripts/e2e-backend.sh status
# 手动重启后端
./scripts/e2e-backend.sh restart
# 查看测试报告
cd frontend
pnpm test:e2e:report
迁移测试失败
# 保留测试产物以便调试
./scripts/migration-test.sh v0.1.0 --keep-artifacts
# 查看迁移日志
cat scripts/migration-test/work/migration-test.log
# 查看迁移计划
cat scripts/migration-test/work/migration-plan.json
# 检查数据库
sqlite3 scripts/migration-test/work/migration-test.db
端口占用
# 检查端口 8099 是否被占用
lsof -i :8099
# 停止占用端口的进程
./scripts/e2e-backend.sh stop
清理环境
# 清理 E2E 环境
./scripts/e2e-backend.sh clean
# 清理迁移测试缓存
rm -rf scripts/migration-test/
# 清理前端测试报告
cd frontend
rm -rf playwright-report test-results
🌟 最佳实践
E2E 测试
- 使用
pnpm test:e2e一键运行所有测试 - 使用
pw-test-前缀标识测试数据 - 每个测试应该独立,不依赖其他测试
- 使用
waitForGraphQLOperation()等待异步操作
迁移测试
- 在发布前测试所有主要版本的迁移路径
- 使用
migration-test-all.sh批量测试 - 保留失败的测试产物以便调试
- 定期清理缓存目录以释放磁盘空间
数据库迁移测试 (Migration Testing)
测试数据库版本升级迁移:
# 测试从 v0.1.0 迁移到当前分支
./scripts/migration-test.sh v0.1.0
# 批量测试最近 3 个稳定版本
./scripts/migration-test-all.sh
# 查看详细文档
cat scripts/MIGRATION_TEST.md
详细说明请参考 MIGRATION_TEST.md
📝 环境变量
E2E 测试
AXONHUB_SERVER_PORT=8099 # 后端端口
AXONHUB_DB_DSN="file:..." # 数据库连接
AXONHUB_LOG_OUTPUT="stdio" # 日志输出
AXONHUB_LOG_LEVEL="debug" # 日志级别
AXONHUB_LOG_ENCODING="console" # 日志格式
迁移测试
GITHUB_TOKEN="your_token" # GitHub API Token(可选)
🤝 贡献
如果你发现脚本有问题或有改进建议,欢迎提交 Issue 或 PR。
📄 许可证
与项目主体相同的许可证。