执行摘要
本PR通过提取PD解耦服务器的公共启动逻辑到基类PDDisaggregationServerBase,简化了四个测试类的代码,删除约150行重复代码,提升了测试维护性和可扩展性。变更已通过CI验证,无直接影响用户,但为团队测试基础设施带来改进。
功能与动机
动机源于减少代码重复,根据PR body表述:"Move duplicated start_prefill(), start_decode() into PDDisaggregationServerBase"。具体要解决四个解耦测试类中相同服务器启动代码的冗余问题,通过基类化提高代码复用和自定义能力。
实现拆解
- 基类增强:在
python/sglang/test/server_fixtures/disaggregation_fixture.py中,PDDisaggregationServerBase新增类变量extra_prefill_args和extra_decode_args,以及方法start_prefill()、start_decode()和launch_all()。launch_all()封装了完整启动序列:
python
@classmethod
def launch_all(cls):
cls.start_prefill()
cls.start_decode()
cls.wait_server_ready(cls.prefill_url + "/health", process=cls.process_prefill)
cls.wait_server_ready(cls.decode_url + "/health", process=cls.process_decode)
cls.launch_lb()
- 测试类简化:在
test/registered/disaggregation/test_disaggregation_basic.py中,四个测试类(如TestDisaggregationAccuracy)删除重复的start_prefill和start_decode方法实现,改为调用cls.launch_all(),并移除相关导入如DEFAULT_TIMEOUT_FOR_SERVER_LAUNCH和popen_launch_pd_server。
评论区精华
无review评论,变更直接被接受,表明设计简洁且风险可控,团队通过CI测试验证了功能正确性。
风险与影响
- 技术风险:基类逻辑错误可能波及其所有继承测试,但CI覆盖降低了回归风险;自定义参数变量需确保列表类型处理正确(如
list(cls.extra_prefill_args))。
- 影响分析:对用户无感知;系统层面优化了测试代码结构,减少维护成本;团队需适应新基类,但长期看提升测试开发效率。
关联脉络
与近期PR如#21937(测试套件修复)和#22045(CI超时调整)同属测试基础设施演进,反映团队持续优化测试可靠性和代码质量。本PR是解耦测试重构线的一部分,为未来测试扩展奠定基础。
参与讨论