Maelstrom

Maelstrom is a workbench for learning distributed systems by writing your own.
It uses the Jepsen testing library to
test toy implementations of distributed systems. Maelstrom provides
standardized tests for things like "a commutative set" or "a transactional
key-value store", and lets you learn by writing implementations which those
test suites can exercise. It's used as a part of a distributed systems workshop
by Jepsen.
Maelstrom provides a range of tests for different kinds of
distributed systems, built on top of a simple JSON
protocol via STDIN and STDOUT. Users write servers in any
language. Maelstrom runs those servers, sends them requests, routes
messages via a simulated network, and checks that clients observe expected
behavior. You want to write Plumtree in Bash? Byzantine Paxos in Intercal?
Maelstrom is for you.
Maelstrom's tooling lets users experiment with simulated
latency and message
loss. Every test includes timeline
visualizations of concurrency structure,
statistics on messages
exchanged, timeseries graphs to understand how
latency, availability, and throughput respond to changing conditions, and
Lamport diagrams so you can understand
exactly how messages flow through your system. Maelstrom's checkers can verify
sophisticated safety properties up to