SuperAPI AI 工具集

mz-test

测试与质量

查看项目

更新于 10-16 00:07

技能介绍

用途:在 Materialize 仓库中运行与编写测试,并根据被测内容选择合适框架。

主要能力与用法: 单元测试用 cargo test,可用时改用 cargo nextest;若报 METADATA_BACKEND_URL 相关错误则用 bin/cargo-test。-p 指定包时通常带 mz- 前缀,如 mz-adapter。数据驱动测试期望值用 REWRITE=1 cargo test ... 重写;不要手动改 *.snap,改用 cargo test 后执行 cargo insta accept。部分测试需元数据存储,设置 COCKROACH_URL=postgres://root@localhost:26257 与 METADATA_BACKEND_URL=postgres://root@localhost:26257。日志用 MZ_TEST_LOG_FILTER=<level> 控制。首次运行含 cargo build,可能数分钟,测试命令建议超时至少 600000ms。

sqllogictest:bin/sqllogictest --optimized -- PATH,PATH 相对仓库根,通常在 test/sqllogictest/;重写结果用 bin/sqllogictest -- --rewrite-results PATH;大文件用 --optimized 提速;-v 可逐条打印查询。

testdrive:bin/mzcompose --find testdrive run default -- FILENAME.td,文件位于 test/testdrive/ 且相对该目录。涉及多版本输出差异时用版本守卫,如 >[version<2602300] 与 >[version>=2602300],版本编码为 MMmmmpp。

pgtest:bin/cargo-test -p mz-environmentd pgtest;单个文件用 bin/cargo-test -p mz-environmentd test_pgtest_FILE_NAME。

mzcompose:bin/mzcompose --find NAME run WORKFLOW;另有 list、list-workflows、logs、down。多数测试要求干净状态,每次运行前执行 down。默认构建优化二进制,--release 构建完整发布版较慢,--dev 构建未优化调试版。

复现缺陷:属手动流程,需向用户索取复现步骤或参考 GitHub issue、Buildkite 注解。复现前先 down。不稳定测试可循环运行直至失败,本地无法复现可建议通过 https://ci.dev.materialize.com/trigger 手动触发 CI,移除 Target Branch 可生成随机标识并行运行,10-20 次复现属正常。可加 log_filter 日志,并附 TODO 引用 issue。

新增测试:SQL 正确性、类型、函数用 sqllogictest(.slt,mode cockroach,测 NULL 与边界,不改 test/sqllogictest/sqlite 与 cockroach 上游文件,优先追加到已有 slt);源/汇、Kafka、catalog、pgwire 用 testdrive(.td);原始 pgwire 消息用 pgtest(.pt,并在 src/environmentd/tests/pgwire.rs 接线);纯逻辑用 Rust #[mz_ore::test];重启/升级用 Platform Checks;并发 panic 扩展 Parallel Workload;对象/限制用 Generator;OOM 用 bounded-memory Scenario;性能微基准用 Feature Benchmark。功能问题建议至少两个框架独立检测。详见 doc/developer/guide-testing.md。

限制:资料未提供安装方式、收费、平台支持与效果数据。