SuperAPI AI 工具集

limits-test

测试与质量

查看项目

更新于 10-16 00:06

技能介绍

用途:limits-test 是 Materialize 的极限压力测试框架,用于在大量对象、复杂查询和大规模数据写入场景下发现回归,例如 fixpoint panic、栈溢出、CI 超时(N~1000 时的 O(N^M))以及 2GB 内存限制下的 OOM panic。

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

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

新增测试步骤:在 test/limits/mzcompose.py 中新增继承 Generator 的类;实现 body() 类方法并打印 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,加 --find-limit 进入 Release Qualification 模式。

限制:资料未提供该技能的收费、平台支持范围、具体性能指标或更多使用步骤,相关事实暂未提供。