Prhub

#7797 [hardware] test: include AMD in platform auto-detection expectations

原始 PR 作者 tmm77 合并时间 2026-09-09 08:55 文件变更 1 提交数 1 评论 0 代码增减 +6 / -1

执行摘要

为 AMD/ROCm 平台补充自动检测和注册断言的测试用例。

为支持 AMD/ROCm 硬件,需要确保平台自动检测逻辑和注册表测试能够覆盖该新平台。PR body 指出:'Include AMD/ROCm in platform auto-detection tests alongside nvidia and huawei' 和 'Confirm AMD CI no longer fails test_empty_triggers_auto_detection when _detect_platform_name() returns amd',明确了补全测试以消除 AMD CI 失败的动机。

这是一个标准、低风险的测试补充 PR,旨在提升硬件兼容性测试覆盖。建议精读以了解 verl 平台抽象层的测试设计模式,特别是如何通过模拟环境变量和断言注册表来验证多平台支持。对于负责平台适配或 CI 配置的工程师,此 PR 值得参考。

讨论亮点

本次 PR 的 review 过程非常简单,没有产生任何讨论或争议。审核者 wuxibin89 直接批准了变更,表明这是一个明确、低风险的测试补充。

实现拆解

  1. 新增环境变量覆盖测试:在 tests/plugin/test_platform_abstraction.py 的 TestPlatformDetection 类中,新增 test_env_override_amd 方法。该测试通过 mock.patch.dict 设置 VERL_PLATFORM=amd,断言 _detect_platform_name() 返回 "amd",覆盖了 AMD 平台的显式指定路径。
  2. 扩展自动检测断言:修改 test_empty_triggers_auto_detection 方法。当 VERL_PLATFORM 为空时,自动检测逻辑返回的平台名称断言从 ("nvidia", "huawei") 扩展为 ("nvidia", "huawei", "amd"),允许自动检测在 ROCm 环境下返回 "amd"。
  3. 补充平台注册断言:在 TestPlatformRegistry 类的 test_builtin_platforms_registered 方法中,新增 assert "amd" in names。这确保了 PlatformRegistry.registered_names() 的返回结果中包含了 "amd",验证了 AMD 平台插件的正确注册。
文件 模块 状态 重要度
tests/plugin/test_platform_abstraction.py 平台抽象 modified 3.99

关键符号

test_env_override_amd test_empty_triggers_auto_detection test_builtin_platforms_registered

关键源码片段

tests/plugin/test_platform_abstraction.py test-coverage

唯一的变更文件,包含了所有测试逻辑的补充和修改,用于验证 AMD 平台的自动检测和注册。

# 测试套件新增对 AMD 平台的覆盖,确保自动检测和注册逻辑正确。
class TestPlatformDetection:
    # ...
    def test_env_override_amd(self):
        # 验证显式设置 VERL_PLATFORM=amd 时,_detect_platform_name() 能正确返回 "amd"
        with mock.patch.dict(os.environ, {"VERL_PLATFORM": "amd"}):
            assert _detect_platform_name() == "amd"
​
    def test_empty_triggers_auto_detection(self):
        # 当 VERL_PLATFORM 为空时,自动检测逻辑现在允许返回 "amd",
        # 以适配在 AMD/ROCm 环境下运行的 CI。
        with mock.patch.dict(os.environ, {"VERL_PLATFORM": ""}):
            assert _detect_platform_name() in ("nvidia", "huawei", "amd")
​
class TestPlatformRegistry:
    # ...
    def test_builtin_platforms_registered(self):
        names = PlatformRegistry.registered_names()
        assert "nvidia" in names
        assert "huawei" in names
        assert "amd" in names # 新增断言,确保 AMD 平台插件已注册

评论区精华

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

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

风险与影响

本次变更仅修改了一个测试文件,不涉及任何生产代码逻辑。风险极低。唯一潜在的风险是测试断言过于宽松(例如自动检测断言允许任一平台返回),但这是为了兼容不同 CI 环境的必要设计。无性能、安全或兼容性风险。

对用户的影响:无直接影响。用户无需感知此变更。
对系统的影响:提升了测试套件对 AMD/ROCm 硬件的支持验证能力,间接增强了系统在多平台上的可靠性。
对团队的影响:为 AMD/ROCm 平台的开发者提供了测试信心,确保新平台功能在 CI 中得到验证。简化了未来与平台相关的功能或 bugfix 的测试工作。

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论