What problem does it solve?
Materialize engineers need to verify the system survives extreme scale—thousands of tables, views, sources, and indexes—without regressions like fixpoint panics, stack overflows, CI timeouts, or OOM crashes. Writing these stress tests by hand is error-prone and requires knowing the Generator framework conventions.
Core Features & Use Cases
- Generator Subclass Authoring: Guides creation of new Generator subclasses in test/limits/mzcompose.py with auto-discovery via all_subclasses(Generator), requiring no manual registration.
- Testdrive Command Generation: Implements body() classmethods that print testdrive commands, using helpers like all(), no_first(), no_last(), and store_explain_and_run() for EXPLAIN timing.
- Limit Tuning: Advises on overriding COUNT and MAX_COUNT, bumping system limits like max_tables via ALTER SYSTEM SET, and running with --find-limit for Release Qualification.
- Use Case: Add a new scaling test for a feature, then run it locally with bin/mzcompose --find limits run main --scenario=MyNewFeature to verify it passes under a 2GB memory limit.
Quick Start
Ask the assistant to add a new limits test Generator subclass in test/limits/mzcompose.py that creates 1000 tables and verifies queries against them.