Skip to content

test(disk): 增加六项磁盘改动的组合回归工具 - #66

Closed
jinghero wants to merge 2 commits into
ModAVD:mainfrom
jinghero:test/95-combined-regression
Closed

jinghero wants to merge 2 commits into
ModAVD:mainfrom
jinghero:test/95-combined-regression

Conversation

@jinghero

@jinghero jinghero commented Nov 5, 2026

Copy link
Copy Markdown
Collaborator

六个磁盘 PR 的独立测试不能直接证明链接拒绝、整理锁、qemu-img 生命周期、低收益跳过和 trim 展示可以一起工作。本 PR 加入可复跑的组合验证工具,补充完整 DiskCompact 中断后恢复和相邻 GUI 状态的回归覆盖。

只增加脚本、测试夹具和运行说明。六个实现 PR 继续作为各子项的交付入口,临时整合分支没有带入本 PR。

Refs ModAVD/ModAVD#95, ModAVD/ModAVD#106

依赖与运行

运行目标必须已组合 #56、#59、#60、#63、#64、#65。工具以 --source 指定该源码,通过 Go file overlay 注入 testdata 下的夹具;缺少依赖或必需用例跳过都会失败。main 的普通构建、测试不编译这些依赖尚未合并的夹具。

使用本地已有 Go 1.26.5、Node 和 SDK qemu-img,复制到独立测试根。输出目录必须是源码树外的新目录,不下载文件,不运行 adb 或模拟器,不访问或同步 AOSP。命令和边界见 scripts/testdata/disk_combined/README.md。

验证

2026-11-05,Windows,upstream/main dc6501a;组合源码最终为 a308661,包含 #56 8d3576e、#59 b212734、#60 0683fa6、#63 22f3481、#64 6595b10、#65 29018d7。

  • 正式包 qemu-img 2.12.0 的 backing/overlay 真实数据回归通过。test(emu): 覆盖 compact 对 backing 数据的保留 #56 BackingData 未跳过,覆盖确认实际经过 convert、compare、sync、替换。编译后的 CLI 实际占用从 33,947,648 降到 393,216 字节,再次整理跳过,整盘来宾读数和 backing 字节不变。
  • 完整 DiskCompact 在 convert/compare 阶段分别执行父进程强制结束、用户取消和缩短到 5 秒的超时。受控 Windows 子进程持有原盘及临时盘句柄;正常阶段透传正式 qemu-img。验证及时且准确的 busy、info 不启动额外 qemu-img、进程退出、锁释放、原盘身份和字节、失败清理、成功重试与第二次跳过。
  • 真正低收益镜像改为硬链接或符号链接后,即使整理锁被占用,也先报 unsupported;别名和遗留副本均不变。压缩盘低收益时跳过扩张。既有受控增长管线及 CLI、GUI HTTP、JSON、MCP 结果测试通过。
  • 新增两项 JavaScript 测试执行实际通知与活动行逻辑,覆盖 trim 已触发、请求耗时、info 降级、增长、跳过、取消按钮和旧事件回放。
  • 3/3 反向验证被新交互断言捕获:去掉链接检查、去掉 disk 锁、禁用 kill-on-close。编译错误和清理失败不计为捕获。未改动目标源码。
  • 最终六项整合全量通过,19 包、654 个顶层测试、898 个含子用例通过事件。CLI/GUI/客体代理构建、三平台 vet、6 项既有浏览器测试、6 项 trim 解析测试通过。新增文件 gofmt、diff、隐私扫描和作者检查通过。
  • 按 pstack blast-radius、fix-root-causes、prove-it-works、build-the-lever、technical-writing、unslop 审查。发现的测试准备问题已补回 fix(disk): 让 qemu-img 随管理器进程结束 #60,组合后的测试日志适配已补回 fix(disk): 按工作量设置整理预算并准确报告占用变化 #65。本 PR 没有待修复的审查发现。

没有启动真实 AVD,未验证成功 Android discard 完成、物理慢盘或断电、原生 Linux/macOS、桌面 GUI 窗口交互。增长结果用受控进程产生;真实压缩盘的结果是正确跳过,不声称实际发生增长。29 个条件性跳过仍保留。原始失败和完整日志保存在本次独立证据目录,#106 汇总全部结果。

@qiyinxi

qiyinxi commented Nov 5, 2026

Copy link
Copy Markdown
Member

谢谢你把六个改动合在一起回归了一遍,这份结果对我们判断合并顺序很有用。不过这个工具我们倾向先不合进 main,留在这个 PR 和 ModAVD/ModAVD#106 里当这次的验证证据:它要等六个 PR 都合进去才能跑,用到了 #60、#63、#65 里没导出的辅助函数、变异检查要找的源码原文和 #64、#65 的界面文字,CI 既不编译也不运行它,以后谁改了这些地方它会悄悄坏掉而没人发现。等六个都合完以后,如果你愿意,可以把 fixture 挪进 internal/emu 做成普通的 _windows_test.go(没设 MODAVD_TEST_SDK_ROOT 就跳过,和现有的 disk_integration_test.go 一样),JS 的那部分并进 #63 / #65 的脚本测试,overlay、--source 和前置文件检查就都不需要了,这样它就能跟着 CI 一直跑。几个小地方供改造时参考:os.Symlink 在没有开发者模式的机器上会直接失败,最好改成跳过;go test 的 timeout=180 只结束 go 本身,测试二进制和它的 qemu-img 副本可能活到默认的 10 分钟,给 go test 加 -timeout=150s 更稳;正文里的两个引用分两行写,各带一个 Refs。

@jinghero

jinghero commented Nov 5, 2026

Copy link
Copy Markdown
Collaborator Author

配合 #64 的审查修正,已提交 7aff880:只调整 scripts/test_disk_combined_ui.mjs,断言“不等待安卓回收完成”,并覆盖 trim 仍在运行时显示“已进行”、而非完成后的请求耗时。

2 项 JS 测试在组合 #63/#65 当前 JS 与 #64 修正后的测试副本上通过。分别恢复旧文案和旧运行中耗时显示,均触发预期断言失败。Go 夹具和其它整合脚本未改,本轮没有重复六项 Go 整合实测;原正文中的整合结果保持原记录范围。

本次 CI 42004998563 已全部通过。Refs ModAVD/ModAVD#95。

@qiyinxi

qiyinxi commented Nov 5, 2026

Copy link
Copy Markdown
Member

六个磁盘 PR 都已经随 0.38.0 合进 main 了。这个 PR 我们还是按上次评论说的,不照现在的样子合:工具要靠 overlay 和 --source 注入夹具,CI 不编译也不运行它,以后改到相关代码时它会悄悄坏掉。现在依赖都在 main 上了,如果你愿意,可以把夹具挪进 internal/emu,做成普通的 _windows_test.go(没设 MODAVD_TEST_SDK_ROOT 就跳过,和现有的 disk_integration_test.go 一样),两项 JS 测试并进现有的脚本测试,这样它就能跟着 CI 一直跑,到时另开一个 PR 就行。不打算改的话,我们就把这个 PR 关掉,这次的结果留在 ModAVD/ModAVD#106 里当验证记录。

@jinghero

jinghero commented Nov 5, 2026

Copy link
Copy Markdown
Collaborator Author

按维护者的改造意见,已另开正式 PR #85,基于当前 main 的 7e1d6dc。

组合夹具改为普通 Windows 测试;未设 MODAVD_TEST_SDK_ROOT 时跳过真实镜像,硬链接和有权限的符号链接都已用本地 qemu-img 实际验证。两项界面交互测试并入现有脚本,并接入 CI。不再依赖 overlay、--source 或源码前置检查。

原夹具通过 overlay 缩短完整整理的内部预算。本次完整整理用调用方 deadline 验证中断与恢复,现有底层测试以三秒预算单独覆盖内部超时;两者的范围差异和本机全量测试的 internal/avd 访问拒绝已写进新 PR。旧 PR 保留作为原始验证证据,不在这里关闭。

Refs ModAVD/ModAVD#95
Refs ModAVD/ModAVD#106

@jinghero

jinghero commented Nov 5, 2026 •

Copy link
Copy Markdown
Collaborator Author

由 #85 替代。原组合回归结果继续保留在本 PR 和 ModAVD/ModAVD#106。原生 Go/JS 测试改造已在 #85 提交,CI 已通过。

@jinghero jinghero closed this Nov 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants