Prhub

#49655 [BUGFIX] Fix log capture in KV test

原始 PR 作者 zhenwei-intel 合并时间 2026-07-25 08:36 文件变更 1 提交数 2 评论 1 代码增减 +2 / -2

执行摘要

修复 KV 测试日志捕获问题

PR #48776 引入的 KV 缓存变更导致一个测试用例(test_mla_with_incompatible_swa_uses_one_full_allocation_group)失败。失败的根本原因是 vLLM 的 logger 设置了 propagate=False,因此 pytest 的内置 caplog fixture 无法捕获任何日志记录,导致 caplog.text 为空,断言 "attention compute is unchanged" in caplog.text 失败。

快速合并。该 PR 虽小但解决了 CI 稳定性问题,值得合入。建议关注 caplog_vllm fixture 的实现,未来类似场景可直接复用。

讨论亮点

变更简单,无实质性讨论。审核者 jikunshang 直接批准。

实现拆解

  1. 定位问题:通过错误信息确定 caplog.text 为空,结合 vLLM 日志传播配置定位根本原因。
  2. 修改 fixture:将测试函数参数中的 caplog 替换为 caplog_vllmcaplog_vllm 是一个自定义 fixture,它在使用前后临时启用日志传播到 pytest 的日志处理器。
  3. 更新断言:将断言语句中的 caplog.text 更新为 caplog_vllm.text,确保读取的是启用了传播的日志记录。
文件 模块 状态 重要度
tests/v1/core/test_kv_cache_utils.py 测试 modified 4.03

关键符号

test_mla_with_incompatible_swa_uses_one_full_allocation_group

关键源码片段

tests/v1/core/test_kv_cache_utils.py test-coverage

唯一修改的文件,将 `caplog` 替换为 `caplog_vllm` 修复测试失败。

# tests/v1/core/test_kv_cache_utils.py# 原代码使用 caplog fixture,由于 vLLM 日志 propagate=False,
# 导致 pytest 的日志捕获机制失效,caplog.text 始终为空。
# 修改后使用自定义的 caplog_vllm fixture,它临时启用日志传播。def test_mla_with_incompatible_swa_uses_one_full_allocation_group(caplog_vllm):
    # ... 测试代码不变 ...
    # 关键断言:验证日志中包含了预期的警告信息
    assert "attention compute is unchanged" in caplog_vllm.text

评论区精华

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

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

风险与影响

风险极低:仅修改测试文件中的 fixture 名称,不影响生产代码或核心逻辑。自定义 fixture 在测试使用期间启用日志传播,不会影响其他测试。

  • 对用户:无直接影响。
  • 对系统:仅修复测试稳定性,无功能影响。
  • 对团队:确保 CI 中 KV 缓存相关测试稳定运行,避免误报。
仅测试变更

关联 Issue

#48776 [Bugfix][KV cache] Support sparse-MLA targets with SWA drafts

完整报告

参与讨论