Prhub

#44146 [XPU][CI] Fix test_audio_in_video flake by using module-scoped server fixture

原始 PR 作者 chaojun-zhang 合并时间 2026-06-01 19:21 文件变更 1 提交数 2 评论 1 代码增减 +5 / -1

执行摘要

修复 XPU 上测试音频视频的间歇失败

修复 XPU CI 中 test_online_audio_in_video_multi_videos 测试的间歇性失败:RuntimeError: Server failed to start in time。在 XPU 上,每个测试启动新服务器会导致第二个服务器静默挂起并超时。

值得合并。该 PR 修复了 XPU 特定的 CI flake,变更简单且经过审核。对于维护者,建议关注测试 fixture 作用域与隔离性的权衡,但当前方案是合理的。无需深入精读。

讨论亮点

审核人 AndreasKaratzas 评论:“Looks good but reduces a bit test isolation.”(减少了测试隔离性)。合并者 DarkLight1337 批准了 PR,未进一步讨论。这是一个已知的 trade-off:模块级 fixture 减少了隔离性,但避免了 XPU 特有的服务器启动挂起问题。

实现拆解

  1. 修改 tests/entrypoints/openai/chat_completion/test_audio_in_video.pyserver fixture 的 scope 参数:从默认的 function 改为 "module",使该文件内的所有测试共享同一个服务器实例。
  2. 在 fixture 定义前添加注释说明改动机:XPU 上每个测试启动新服务器会导致静默挂起和超时,模块作用域可避免此问题。
  3. 这是唯一一处变更,仅涉及测试代码,无源码或配置修改。
文件 模块 状态 重要度
tests/entrypoints/openai/chat_completion/test_audio_in_video.py 测试 modified 3.95

关键源码片段

tests/entrypoints/openai/chat_completion/test_audio_in_video.py test-coverage

唯一变更文件,将 server fixture 的 scope 从 function 改为 module,并添加注释解释动机。

@pytest.fixture(scope="module") # 原为默认 function 作用域
# 使用 module 作用域,使文件内所有测试共享一个服务器实例。
# 在 XPU 上,每个测试启动新服务器会导致第二个服务器静默挂起
# 并超过等待超时,引发 RuntimeError。
def server():
    args = [
        "--max-model-len",
        "16384",
        "--enforce-eager",
        "--limit-mm-per-prompt",
        json.dumps({"audio": 3, "video": 3}),
        *ROCM_EXTRA_ARGS,
    ]
    with RemoteOpenAIServer(MODEL_NAME, args) as remote_server:
        yield remote_server

评论区精华

测试隔离性降低 测试

AndreasKaratzas 评论:Looks good but reduces a bit test isolation. cc @DarkLight1337

结论:合并者已知晓该 trade-off,并批准了 PR。未进一步讨论。 · 已解决

风险与影响

风险较低。变更仅影响测试 fixture 的作用域,将函数级改为模块级。主要风险是测试隔离性降低:一个测试中的副作用(如模型状态污染)可能影响同一模块中的其他测试。但该测试文件原本只有一个测试函数,且测试设计是独立的,因此实际影响很小。此外,如果 XPU 环境的变更解除了该挂起问题,此 workaround 可能导致后续测试难以发现回归,但当前这是必要措施。

影响范围限于 XPU CI 上的 test_audio_in_video.py 测试文件。该变更消除了该测试的间歇性失败,使 XPU CI 更可靠。对非 XPU 平台无影响。对其他测试或生产代码无影响。

测试隔离性降低 XPU 平台特定

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论