用途:Platform Checks 是 Materialize 的“写一次、到处运行”测试框架,用单个测试在重启、升级等多种场景下验证同一功能。
主要能力:核心概念包括 Check(用 testdrive 片段测试一个功能的 Python 类)、Scenario(运行检查的上下文,如重启、升级)、Action(场景中的单个步骤,如停止容器)。所有检查位于 misc/python/materialize/checks/all_checks/,init.py 会自动发现该目录下每个 .py 文件,新增文件即完成注册。
使用方式:Check 类继承 Check 并实现 initialize()、manipulate()、validate() 三个方法,各自返回包装 testdrive 片段字符串的 Testdrive 对象。manipulate() 必须返回恰好 2 个 Testdrive 片段;validate() 可能被多次调用,必须幂等,其中创建的对象须为 TEMPORARY 或显式 DROP。执行顺序为 StartMz → initialize() → [重启/升级] → manipulate(phase=0) → [重启/升级] → manipulate(phase=1) → [重启/升级] → validate()。可用 @disabled 禁用检查、@externally_idempotent(False) 标注非幂等外部交互、重写 _can_run 做版本门控,并用 [version>=VVMMPP] 前缀处理版本差异语法。
运行命令:bin/mzcompose --find platform-checks run default --scenario=RestartEntireMz --check=MyFeature;调试可用 --scenario=NoRestartNoUpgrade。
适用场景:验证功能在重启、升级等场景下的正确性,调试 CI 失败。
限制:manipulate() 必须恰好返回 2 个元素;validate() 必须幂等;对象名需加唯一前缀避免冲突;所有 testdrive 字符串需用 dedent()。其余细节暂未提供。