Deterministic Simulation Testing with Marionette
ToolingComments
The maintenance concern is a bit overstated. The project uses a wrapper for standard I/O, so you are not writing two different versions of your business logic.
The claim that crashes become perfectly reproducible is a stretch. In a real data center, you have bit rot and power fluctuations that a software simulator often ignores.
makes the sqlnano b-tree claims actually testable.
Seed based replay helps open source contributors immensely. They can report a bug with a single string rather than trying to describe a complex sequence of events that only happens once every ten hours.
Suppose the simulator is too successful at finding bugs that would never actually occur in a production environment. Could this lead to a cycle of fixing phantom issues while the actual critical path remains untested?
We saw a similar promise with some early Erlang testing frameworks. Does this implementation actually handle the clock drift issues that usually kill determinism in network stacks?
This is essentially a concrete implementation of the deterministic execution pattern used in distributed systems research. By abstracting the entropy sources, you are creating a closed system where the state space is finite and searchable.