Faults, the third axis. A user names an intent -- :crash, :pause,
:partition -- and Lite picks the implementation that fits the target-type.
Which faults are possible is a property of how the target is deployed, not of
the workload or of the target's protocol.
Nemesis code never branches on the workload, and workloads never know a nemesis exists. The nemesis perturbs the target; the checkers simply observe what follows.
Faults, the third axis. A user names an *intent* -- `:crash`, `:pause`, `:partition` -- and Lite picks the implementation that fits the target-type. Which faults are possible is a property of how the target is deployed, not of the workload or of the target's protocol. Nemesis code never branches on the workload, and workloads never know a nemesis exists. The nemesis perturbs the target; the checkers simply observe what follows.
(build target-type target {:keys [intents] :as opts})Returns a nemesis package for the requested intents against this target, or nil if none were asked for:
:nemesis carries the ops out
:generator the faults to inject during the run
:final-generator what to do at the end so the run doesn't finish with a
fault still in force -- lite.core runs this after the
clients stop and before the workload's closing reads
Intent -> implementation is dispatched here and nowhere else; later target-types add a branch.
Returns a nemesis package for the requested intents against this target, or
nil if none were asked for:
:nemesis carries the ops out
:generator the faults to inject during the run
:final-generator what to do at the end so the run doesn't finish with a
fault still in force -- `lite.core` runs this after the
clients stop and before the workload's closing reads
Intent -> implementation is dispatched here and nowhere else; later
target-types add a branch.(validate! target-type requested)Checks the requested intents against the target-type, and explains itself if they don't fit. Run this before anything is built or opened.
Checks the requested intents against the target-type, and explains itself if they don't fit. Run this before anything is built or opened.
Which faults each target-type can inject. This table is the whole of Jepsen Lite's static validation, and the only authority on the question -- later target-types enable their row here, and nothing else needs to change.
Which faults each target-type can inject. This table is the whole of Jepsen Lite's static validation, and the only authority on the question -- later target-types enable their row here, and nothing else needs to change.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |