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

49 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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` 增量重编译:
```sh
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**。
本轮真实输出:
```text
[ 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 构建/重装、性能或新版本发布。