Trinity#
Trinity is a simulation testing library for the Elixir programming language.
Trinity can simulate the execution of a distributed Elixir application. Processes are deterministically scheduled, with only one process executing at any given time. This scheduling is done entirely in "user-space"; there are no modifications to the runtime (BEAM) itself.
Trinity reimplements a number of OTP primitives in order to guarantee deterministic execution. A simulated clock and filesystem are provided, and Elixir's default PRNG is deterministically seeded when a process is spawned. Trinity also includes tools for (simulated) fault injection, logging, and hashing (to check for determinism bugs).
Status#
Trinity is experimental and under active development. Documentation and an eventual release are planned.