SuperAPI AI 工具集

mz-limits-test

测试与质量

查看项目

更新于 10-16 00:06

技能介绍

用途:limits 测试框架用于对 Materialize 施加压力,创建大量对象、执行复杂查询和大规模数据写入,以捕获回归问题,例如 fixpoint panic、栈溢出、CI 超时(N~1000 时的 O(N^M))以及 OOM panic(2GB 内存限制)。

位置与发现机制:主文件为 test/limits/mzcompose.py,所有 Generator 子类都写在该文件中;子类通过 materialize.util 的 all_subclasses(Generator) 自动发现,无需注册。

Generator 基类:提供 COUNT(默认 1000,创建对象数量,可按测试覆盖)、VERSION(测试逻辑变更时递增)、MAX_COUNT(--find-limit 模式的上限)。需重写 body() 类方法,向 stdout 打印 testdrive 命令。便捷迭代器包括 all()、no_first()、no_last();store_explain_and_run(query) 记录 EXPLAIN 查询用于计时并打印 > {query}。header() 会重置 public schema 并授权,footer() 打印空行,generate() 依次调用 header()、body()、footer()。

新增测试步骤:在 test/limits/mzcompose.py 中添加继承 Generator 的类;实现 body() 类方法并 print() testdrive 命令;仅在 CI 出现问题时才覆盖 COUNT 和 MAX_COUNT。模板中可先通过 postgres-execute connection=mz_system 调整 max_tables、max_objects_per_schema 等系统限制,再创建对象、插入数据并查询验证。

运行方式:本地可执行 bin/mzcompose --find limits down && bin/mzcompose --find limits run main --scenario=MyNewFeature,Release Qualification 模式可加 --find-limit。

限制:资料未提供更多平台、收费或效果信息。