执行摘要
本 PR 主要改进 SGLang 项目的 CI 和测试文档,通过大幅更新 test/README.md 提供清晰指南,并辅以 CI 工作流调整、测试文件修复和代码清理,旨在提升开发者体验和 CI 稳定性,属于常规维护性变更。
功能与动机
PR 动机源于改善 CI 和测试文档的清晰度,如 PR body 所述:'improve documentation for CI and tests',特别是在 test/README.md 中提供更明确的指导,帮助开发者理解测试流程和 CI 流水线。此外,伴随的 CI 调整和测试修复旨在解决实际运行问题,如 CPU 测试失败和脚本路径不一致。
实现拆解
实现分为三大模块:
- 文档更新:
test/README.md 被重写,添加三阶段 CI 流水线示意图和详细表格,例如:
markdown
- Stage A: 预检测试(~3分钟)
- Stage B: 基础测试(~30分钟)
- Stage C: 高级测试(~30分钟)
- CI 和脚本调整:将 AMD CI 脚本(如
ensure_vram_clear.sh)移动到 scripts/ci/amd/ 目录,更新 .github/workflows/ 文件中的路径引用,确保一致性。
- 测试文件修复:在 87 个测试文件中(如
python/sglang/jit_kernel/tests/test_*.py)添加 import sys 并用 sys.exit(pytest.main(...)) 包裹调用,修复退出码问题;同时使用 register_fake_if_exists 改进 mock 机制,避免 CPU 测试失败。
- 代码清理:移除未使用的文件,如
test/srt/experiment_runner.py 和 test/srt/compare.py,简化代码库。
评论区精华
review 中仅有一次核心讨论:
gemini-code-assist[bot] 指出:'pytest.main() returns an exit code but does not exit the process. To ensure that CI correctly captures test failures, you should wrap the call in sys.exit().'
作者 merrymercy 回复确认已在提交中修复,体现了对测试正确性的重视,无未解决疑虑。
风险与影响
- 风险:CI 脚本路径变更可能导致工作流引用错误(需验证
.github/workflows/ 文件);测试文件修改可能引入语法错误(已通过提交修复);移除未使用代码可能影响遗留依赖(但无已知问题)。
- 影响:开发者获得更清晰的文档,降低学习成本;CI 系统通过修复测试执行问题提升可靠性;团队效率因标准化和清理而提高。影响范围覆盖所有贡献者和 CI 管道,程度为中等。
关联脉络
本 PR 是近期 CI 和测试改进趋势的一部分:
- 与 PR #21187 'ci: unify PR test suite naming' 直接相关,共同推动 CI 标准化。
- 与 PR #21200 '[NPU] bugfix for import sgl-kernel error' 共享代码修复(
hisparse_memory_pool.py)。
- 同系列测试 PR(如 #21010、#21002)为本 PR 的文档更新提供上下文,显示项目正加强测试基础设施。
整体揭示 SGLang 在提升开发体验和代码质量方面的持续演进。
参与讨论