Prhub

#25831 [Test] Stage-a sanity kits; consolidate core/ + models_e2e/ tests

原始 PR 作者 hnyls2002 合并时间 2026-05-20 16:58 文件变更 36 提交数 13 评论 1 代码增减 +572 / -639

执行摘要

引入 stage-a 检测套件并重组测试目录

替换 test_srt_backend.py 为阶段 A 门禁测试,精简 dsv4 e2e 测试减少重复代码,重新组织 test/registered/core/ 使其只保留框架级测试,并将模型族 e2e 测试合并到 models_e2e/,以降低 CI 维护成本并提升测试覆盖的清晰度。

推荐测试基础设施维护者精读,其 mixin 化设计和共享资源策略值得在大型项目中推广。

讨论亮点

无审核评论;PR 由作者直接合并。

实现拆解

  1. 创建三个基础检测套件 (kits):新增 basic_api_contract_kit.pybasic_decode_correctness_kit.pybasic_scheduler_stress_kit.py,分别针对协议层、输出质量和调度/流式路径。删除旧 server_sanity_kit.py,其 12 条检测被拆分到三个新套件中。
  2. 构建阶段 A 门禁测试:新增 test/registered/core/test_basic_sanity.py,组合上述三个 mixin 并私有添加 hellaswag 准确率阈值测试(test_accuracy_floor),作为下游阶段的依赖。
  3. 精简 dsv4 测试:将 dsv4 各文件中的内联 _gsm8k_check 替换为 GSM8KMixin,仅保留 BasicDecodeCorrectnessMixin(API 契约和压力已在门禁覆盖),并移动到 models_e2e/ 下。
  4. 清理 core/ 目录:删除 test_srt_backend.py(被门禁替代)和 test_cuda_coredump.py;裁剪 test_srt_endpoint.pytest_srt_engine.py 冗余用例;将 test_hidden_states.pytest_engine_child_pids.py 改为共享 sgl.Engine 实例(通过 setUpClass),减少启动耗时约 40-60s。
  5. 文件搬迁与重命名:将误分类的测试移到对应子目录(如 attention/radix_cache/models/),将 test_gemma4_moe_deterministic.py 重命名为 test_gemma4_swa_triton_oob_regression.py。更新所有导入路径。
文件 模块 状态 重要度
python/sglang/test/kits/basic_scheduler_stress_kit.py 调度压力套件 added 7.76
python/sglang/test/kits/basic_api_contract_kit.py API 契约套件 added 7.33
python/sglang/test/kits/basic_decode_correctness_kit.py 解码正确性套件 added 7.21
test/registered/core/test_basic_sanity.py 基础检测 added 7.84
python/sglang/test/kits/server_sanity_kit.py 旧检测套件 removed 7.46
test/registered/language/test_srt_backend.py 旧后端测试 removed 6.81

关键符号

BasicSchedulerStressMixin._stress_generate BasicSchedulerStressMixin.test_streaming_response BasicSchedulerStressMixin.test_concurrent_requests BasicSchedulerStressMixin.test_long_prompt BasicAPIContractMixin.test_health BasicAPIContractMixin.test_health_generate BasicAPIContractMixin.test_openai_chat_completion BasicDecodeCorrectnessMixin.test_capital_france BasicDecodeCorrectnessMixin.test_ascii_ratio TestBasicSanity.test_accuracy_floor

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

主要风险来自文件删除和资源共享:

  • 删除 test_srt_backend.pytest_cuda_coredump.py 可能移除未被其他套件覆盖的测试场景,但已通过门禁补充覆盖。
  • test_hidden_states.py 共享 Engine 并设置 mem_fraction_static=0.7 可能影响 HF 参考模型共存,但通过 flush_cache() 维持语义。
  • 文件搬迁后若 CI 配置未同步更新可能导致部分测试遗漏,但 CI 已通过验证。

对开发者的影响:更清晰的测试目录结构和可复用的 mixin,降低编写新模型 e2e 测试的成本。对 CI 的影响:阶段 A 门禁更稳定,减少冗余测试执行时间。对系统无运行时影响。

核心门禁替换 测试文件删除 共享 Engine 状态 文件搬迁可能丢失覆盖

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论