Hi everyone,
Maelstrom is a suite of tools for running tests in hermetic micro-containers locally on your machine or distributed across arbitrarily large clusters. Maelstrom currently has test runners for Rust and Python, with more on the way. 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, eliminating confusing errors caused by inter-test or implicit test-environment dependencies.
* It's scalable. Maelstrom can be run as a cluster. You can add more worker machines to linearly increase test throughput.
* It's clean. Maelstrom has built a rootless container implementation (not relying on Docker or RunC) from scratch, in Rust, optimized to be low-overhead and start quickly.
* It's fast. In most cases, Maelstrom is faster than cargo test, even without using 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.
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.
Feedback and questions are welcome! Thanks for giving it a whirl.
Are you going to sell it somehow?
Does it work nested inside Docker? I already have a CI setup that stripes batches of tests across worker containers.