Ahoy, mateys!
A new Jepsen release, 0.3.10, is now available on GitHub and Clojars.
This release is aimed at controllable entropy and support for running
Jepsen inside Antithesis: a deterministic simulation testing
environment. A new supporting library, `jepsen.generator`, provides the
current generator system along with `jepsen.random`: a new namespace for
pluggable random value generation. Jepsen uses these RNGs throughout,
which makes it possible to run a test with a deterministic seed, or to
source entropy from an external system, like Antithesis. The
`jepsen.antithesis` library provides additional support for assertions,
randomness, and lifecycle operations, plus wrappers for clients and
checkers.
Also, this release introduces a new kind of visualization: op color
plots, which show operations over time with different user-defined
colors. This is particularly helpful for getting a feeling for "when did
we lose data?" or "did only read-only queries succeed during a partition?"
## New Features
- `nemesis.file` now supports a new `:f :truncate-file` operation`
- `generator` is now its own library
- `random`: a new namespace for controllable, optionally deterministic
random values. All Jepsen random calls now go through this library.
- `jepsen.antithesis`: a new supporting library for running tests inside
the Antithesis testing environment
- `checker/op-color-plot`: draw plots of operations over time, with
different kinds of operations in different colors
## Minor Improvements
- `control.util/ls` now supports `:recursive?` and `:types` options,
which makes it easier to (e.g.) pick a random data file for a database
- `nemesis.membership`: document an example of how to provide `:perf`
and `:final-generator` in packages
- `
control.net/ip`: now uses the control node's DNS, then falls back to
SSH. This makes `ip` usable when we have no SSH access.
- `checker`: all `reify` instances are now defrecords. This makes them
print nicer, and allows doing some interesting tree-walking and
rewriting of checkers.
## Dependency Updates
- Clojure 1.12.3
- tools.cli 1.2.245
- elle 0.2.5
- jepsen.generator 0.1.0
- knossos 0.3.13
- http-kit 2.8.1
- ring 1.15.3
- sshj 0.40.0
- hiccup 2.0.0
- data.codec 0.2.0
- LazyFS 0.3.0
Happy testing!
--Kyle