About Maelstrom
Maelstrom packages your tests into hermetic micro-containers, then distributes them to be run on an arbitrarily large cluster of test-runners, or locally on your machine. You might use Maelstrom to run your tests because:
- It’s easy. Maelstrom functions as a drop-in replacement for cargo-test and pytest. In most cases, it just works with your existing tests with minimal configuration.
- It’s reliable. Maelstrom runs every test hermetically in its own lightweight container and runs each test independently, eliminating confusing errors caused by inter-test or implicit test-environment dependencies.
- It’s scalable. You can run Maelstrom as a cluster — add more worker machines to linearly increase test throughput.
- It’s clean. Maelstrom has a from-scratch, rootless container implementation (not relying on docker or RunC) written in Rust, optimized to be low-overhead and start quickly.
- It’s fast. In most cases, Maelstrom is faster than cargo test, even without adding clustering. Maelstrom’s test-per-process model is inherently slower than pytest’s shared-process model, but Maelstrom provides test isolation at a low performance cost.
Maelstrom is currently available for Rust and Pytest on Linux. C++, Typescript, and Java are coming soon.
While our focus thus far has been on running tests, Maelstrom’s underlying job execution system is general-purpose. We provide a command line utility to run arbitrary commands, as well a gRPC-based API and Rust bindings for programmatic access and control.
See the book for more information: