Overview
Jepsen is a Clojure testing framework for distributed systems.
A Jepsen test case defines operations on a system, expected responses to the operations, and a schedule for injecting faults to inject and the operations.
The test case executes the operations, introduces faults as scheduled, and validates whether the system’s response meets expectations.
Jepsen appears to be well-regarded in the field of distributed systems.
Tests results for major distributed systems using Jepsen are published on its official website.
Additionally, A Jepsen test result for etcd, a key-value store used within Kubernetes, is available on its official website.
Despite its recognition, the tutorial of Jepsen wasn’t informative enough for me to learn the basic usage of Jepsen.
For instance, while the tutorial uses etcd as an example, the client library for etcd is outdated, making it impossible to execute the tutorial as instructed.
Instead, by researching Jepsen’s source code, I implemented an application with two-phase commits and a test case for it.
The implemented application and test caseare available in one of my GitHub repository.
Despite of the insufficent reference, using Jepsen to implement test cases is still more efficient than building them from scratch.
For a future reference, I will explore an advanced usage of Jepsen compared with the tutorial.