Files
MapLibreParticleLab/docs/报告/STEP-097_A1_第19项GTest运行验证报告_v1.md
tei 237a3e6608
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
docs: verify STEP-097 A1 diagnostic GTest on Mac
2026-09-26 08:07:20 +09:00

3.6 KiB
Raw Blame History

STEP-097 A1 第 19 项 GTest 运行验证报告 v1

1. 执行结论

第 19 项 F09/O01 的现有原生单元测试:PASS。 专项 RenderSegmentDiagnostics.OldCacheReleaseCannotChargeReplacementAtSameIndex 实测 1/1 通过、退出码 0;相关 RenderSegmentDiagnostics.* 5/5 通过、退出码 0。这是 Core 诊断计数验证,并非 GPU 内存泄漏测试或 A1 整体验收。

  • 执行机器:Mac-mini-tei.lan,日期 2026-09-26(日本时间);仓库 /Users/tei/dev/MapLibreParticleLab;分支 particle/main。
  • 实测源码 HEAD:0d13552bed84f427dd43cae9856391bd26622179;其中第 19 项生产/测试源码提交 e67e4961b5b1a1ff8fa7c1e3263799d63f89cadc;开始时工作树 clean。
  • Integration main 已由 RDC 同步核实至 318f8ccf911ac3136c3086a1d14e61f83e2d4bce。本次无公共契约或生产源码修改。

2. 构建和运行

在已有、可追踪源码的 build-step088-opengl CMake/Ninja 配置中,针对 mbgl-test-runner 增量重编译:

cmake --build build-step088-opengl --target mbgl-test-runner --parallel 3
build-step088-opengl/mbgl-test-runner --gtest_filter=RenderSegmentDiagnostics.OldCacheReleaseCannotChargeReplacementAtSameIndex --gtest_color=no
build-step088-opengl/mbgl-test-runner '--gtest_filter=RenderSegmentDiagnostics.*' --gtest_color=no
  • 构建:exit 0,95/95 Ninja steps,实际耗时 261.74 秒;测试程序确实重新链接且新增测试列在 --gtest_list_tests 输出中,未复用旧二进制代替新测试。
  • 编译有 Boost header 未使用形参与 vendor 静态库 macOS deployment target 链接警告;无构建失败,本次未更改工具链/警告规则。
  • 产物:build-step088-opengl/mbgl-test-runner;SHA-256 9fbbc08c44d8445114040ef3a127f5efdad29d0e6d0d1437617421c8a392de52。

3. 测试和断言证据

专项用例源码:test/renderer/retained_underlay_cache.test.cpp,RenderSegmentDiagnostics.OldCacheReleaseCannotChargeReplacementAtSameIndex。

测试先配置旧 Segment 拓扑并取得 oldRevision,再将 Continuous 边界由 weather 改为 land,要求 newRevision != oldRevision。对相同 index=0 分别发送两种资源释放:

  1. recordSegmentResourceRelease(0, oldRevision):新 topology 第 0 段的 resourceRelease 必须仍为 0。
  2. recordSegmentResourceRelease(0, newRevision):同一当前段的 resourceRelease 必须变为 1。

本轮真实输出:

[ RUN      ] RenderSegmentDiagnostics.OldCacheReleaseCannotChargeReplacementAtSameIndex
[       OK ] RenderSegmentDiagnostics.OldCacheReleaseCannotChargeReplacementAtSameIndex (0 ms)
[==========] 1 test from 1 test suite ran.
[  PASSED  ] 1 test.

相邻诊断组的 5 个用例亦全部通过:可见性元数据、旧缓存释放、缓存关闭保持拓扑、非法计划的 Style 顺序、快照序列化。全部无失败和跳过。

4. 事实边界、证据与后续

  • 该测试仅验证当前 topology 的按段释放计数不被旧 revision 污染;不证明底层 GPU 纹理的实际释放、总分配平衡、没有显存泄漏或 FZG1/iOS 运行态表现。Aggregate release 仍由源码语义保证,本用例未单独断言 aggregate 数值。
  • 第 19 项的已有 GTest 执行检查点可标为 PASS;STEP-097 A1 仍 PARTIAL:01 同 vector source/same tiles stencil、02 Metal 附件、03 真正 LayerGroup 绘制异常注入均没有被此测试覆盖。
  • 保存日志:忽略目录 artifacts/maplibre-particle/step097-gtest19/build.log、gtest19.log、diagnostics-suite.log、build-metadata.txt。本轮没有执行 Jest、APK 构建/重装、性能或新版本发布。