Merged
test: add strict serial gtest stress runner #1327
test: add strict serial gtest stress runner #1327
Merged
liuxingsenAdd on 25 days ago
liuxingsenCollaborators
25 days ago

当前PR是否有AI参与:

[x ] 否
[] 是
__1. AI Agent 平台:
__2. AI 模型:
__3. Prompt上下文 :

PR功能描述 / 为什么需要这个合入:

多轮测试需要核对每轮程序清单和用例完成情况。仅看到 Meson 退出成功,无法发现 gtest 跳过、缺失或未完成的用例;后台日志与 gtest 输出交错也会影响统计。本 PR 提供严格串行统计器,保存可核查的每轮证据,并在首轮失败时停止。

修改方案:

  • 从已配置的 Meson 测试清单确定程序范围,串行运行指定轮次,记录控制台输出、Meson JSON/TXT/XML 和 summary.json。
  • 将程序缺失、重复、意外结果、失败、跳过、零用例以及未完成用例判为失败;以首个成功轮次固定后续实际用例数,并处理交错日志标记。
  • 超时或中断时回收本轮 Meson 进程组;summary 分别记录超时 124、SIGINT 130、SIGTERM 143,并保留 interrupted 标记。测试自身启动的外部服务仍由测试环境管理。
  • 捕获 Meson 启动时的系统错误,将原因写入控制台日志和轮次 errors,并保存 summary.json;进程未启动时 meson_exit_code 为 null。保持首轮失败即停止,不把未运行轮次记成已执行失败。
  • 前缀恢复先选已知最长用例名,再核对是否仍未完成,避免重复长名称结束标记误补仍在等待的短名称;程序预检只检查 cmd[0],后续参数可能是尚不存在的输出路径。
  • 在 !1327 的 tests/README.md 新增十主题背景、关键修复、PR 链接及验证边界;明确本轮仅主题3/6承担版本与CHANGELOG更新,其他运行时代码主题不因此被称为纯测试。
  • 将可复跑命令、动态库选择、隔离与 sanitizer 的实际边界写入 tests/README.md;历史 50 轮记录明确标为旧构建结果,同时完整保留最新主线已合入的 LLDP MAC 字段长度回归说明。本 PR 不新增 docs/gtest-stress-50-20260927.md。
  • 未提交旧来源中的 scripts/sanitizers/libmcpp-vptr.supp:该文件未被工具引用,其整个外部头文件范围的抑制并非本次脚本验证所需;本工具不设置默认 sanitizer 抑制。
  • 独立基于 main@e4db788734f0d222c48294256f8ea1aa3e339dbb,仅包含两个脚本和 tests/README.md;测试与文档变更不升服务版本。

验证方案:

运行统计器单元测试及真实微型 Meson 工程,验证通过轮次和被跳过用例的失败判定;检查 CLI 参数、完整文件头、差异格式及提交钩子。新全仓压力运行需先重新构建并记录实际依赖,不复用历史结果。

测试建议:

在正式 CI 的已构建目录先运行一轮,再执行多轮压力;记录源码 SHA、构建选项、过滤条件和实际加载依赖。需内存检测时,使用实际启用 ASan/UBSan 插桩的构建。本轮未运行新的全仓 50 轮压力或 sanitizer 验收。

自验证报告:

  • 当前提交 6e3e6ec2b58ab6a49982c9823696af04414217d0 实际执行 python3 -B scripts/test_run_memory_audit_stress.py -v:17/17 通过,失败、错误和跳过均为 0;含两个真实 CLI 启动失败场景、真实 Meson 成功/跳过场景及既有统计回归。未复用历史运行替代本次执行。
  • 启动失败回归完成 RED→GREEN:在旧实现 b020d5ce0fc85bb7460f61d540ef2941e7836219 上加入新测试后,17 项中有 2 项准确失败,分别为 PATH 中没有 Meson 和 Meson 文件不可执行;两者都复现未保存 summary.json。修复后错误原因、失败轮次、未启动状态和首败停止均由真实子进程验证。
  • 当前提交的 git diff --check、原版上游文件头全树检查、全部 pre-commit 和提交消息钩子通过;CLI --help 已核查。文件头检查器来自 openubmc-ci@6afb6f7。README、版本文件与 CHANGELOG 相对 b020d5ce0fc85bb7460f61d540ef2941e7836219 逐字节不变。
  • 先前信号/名称解析整改的 RED 结果仍属于历史提交;本次17项重新覆盖这些已修路径,包括重复长名称、SIGINT/SIGTERM与超时、wrapper库路径及损坏JSON定位。进程/信号边界使用受控替身,本次新增的启动失败与 Meson 场景实际运行。
  • 新增脚本版权和许可证使用社区模板;原有 LLDP、十主题背景、压力历史记录和 sanitizer 限制均保留。README 中的历史计数不属于当前提交验证;未执行新的全仓压力、C++构建、目标板或sanitizer测试。
  • 远端流水线仍需对应当前提交 SHA 核实;旧提交的成功不视为新提交门禁通过。

该PR关联的issue

fixes #752

希望检视人员了解:

本 PR 是 !1307 按问题类型拆分的第 9/10 项,它可独立合入上述 main 基线。计数器不主动启用 DISABLED_ 用例,也不创建命名空间隔离;包装器可能优先使用工作区中的预编译 libmcpp/Lua,运行前须核实实际依赖。未执行合入。

likedislike
Pull Request has been successfully merged by openUBMC-robot.
(Thank you for liuxingsen's contribution.)
LliuxingsenCollaborators
25 days ago Created pull request, commit 8ecff919
LliuxingsenCollaborators
25 days ago Associated issue: [任务]: 整合驱动内存边界和异步生命周期修复并完成回归验收,[任务]: 增加严格逐轮计数的 gtest 串行压力工具,并将复跑说明及历史记录整合到 tests/README.md
openUBMC-robotopenUBMC-robotCollaborators
25 days ago Added label: sig/sig-component-drivers
openUBMC-robot
openUBMC-robotCollaborators
25 days ago Comments:

欢迎来到 openUBMC 社区

Hey @xiaoxinglxs , 感谢你对社区的贡献.

机器人使用手册

有关指令的使用,可以点击 说明文档 或 论坛 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。您可以自助配置此仓库的 PR 合并规则,更多详情,请参阅机器人自助配置使用手册。

联系指引

有疑问可以联系 SIG: sig-component-drivers ,
维护者是: @dongyushan, @net_swift_wangchen, @sam_h1973, @u012924942, @weixin_37569011, @xiaoxinglxs ,
优秀贡献者是: @adellonzzy, @avery-j, @changxingOpenUBMC, @chenshengfan, @dli_bmc, @huangjiapei, @leessential, @net_swift_tianwen, @xiapengc1, @yelvsub .

likedislike
openUBMC-robotopenUBMC-robotCollaborators
25 days ago Added label: ai-co-authored
69 messages are collapsed here。 See more
changdexingCollaborators
25 days ago Comments:

/check-pr

likedislike
openUBMC-robotopenUBMC-robotCollaborators
25 days ago Removed label: unresolved-reviews
openUBMC-robotopenUBMC-robotCollaborators
25 days ago Closed associated issue
openUBMC-robotopenUBMC-robotCollaborators
25 days ago Merged pull request, merge node SHA: 60e14a8b6938c9ff6140001299a483ef15610bfb
openUBMC-robot
openUBMC-robotCollaborators
25 days ago Comments:

合并PR失败

  • reason: {"message":"Pull Request 已合并或已关闭。"}
likedislike