0.1.16
This release focuses on making it easier to write complex tests with many types of failures and workloads. New protocols in jepsen.db provide hooks for killing, starting, pausing, and resuming databases, as well as identifying current primary nodes. A combined nemesis makes it easy to write test suites which hammer a system with random mixtures of faults, and a new test runner takes some of the busywork out of writing comprehensive test suites. There are no significant API changes, but there are several important bugfixes, including correctness fixes in the experimental jepsen.tests.cycle.append. These issues did not affect any Jepsen report, but may have led to false positives for other users.
Thanks, as always, to everyone who contributed patches and feedback. :)
New Features
- jepsen.cli/test-all-cmd: a CLI command for running a whole test suite in one pass, with unified error reporting.
- jepsen.nemesis.combined: A nemesis (and generator) which mixes process kills, pauses, clock skew, and network partitions. Faults, intervals, and target nodes are tunable. Also provides functions for composing nemesis+generator packages.
- jepsen.db/Primary: an optional protocol for databases that can identify primary nodes.
- jepsen.db/Pause: an optional protocol for databases that can be paused and resumed.
- jepsen.db/Process: an optional protocol for databases that can be killed and started.
- jepsen.generator/flip-flop: alternates between two generators.
Minor Changes
- Integration tests are now much quieter in their logging.
- checker.perf/plot! now includes output from gnuplot when throwing gnuplot-related exceptions.
- docker compose can now expose DB ports for inspection from your docker host.
- jepsen.control.util/grepkill can now take keyword signals, like :kill.
- jepsen.util/parse-long: it's long past time.
- jepsen.control.util/wget can now take usernames and passwords
Dependency Upgrades
- codox 0.10.7
- knossos 0.3.6
- gnuplot 0.1.2
- Fipp 0.6.14
Bugfixes
- jepsen.util/name+: fixed a bug where this function always used pr-str.
- jepsen.tests.cycle.append: fix a bug where internal consistency checks could compute incorrect expected orders after reading
nil
values. - jepsen.tests.cycle.append: we no longer incorrectly find duplicates and incompatible orders in aborted reads.
- jepsen.os.centos: update dpkg version used for installing start-stop-daemon.
- jepsen.nemesis: fixed a misleading error message which said it expected :type :ok, not :type :info