jepsen.tests.linearizable-register

Common generators and checkers for linearizability over a set of independent registers. Clients should understand three functions, for writing a value, reading a value, and compare-and-setting a value from v to v’. Reads receive nil, and replace it with the value actually read.

{:type :invoke, :f :write, :value [k v]}
{:type :invoke, :f :read,  :value [k nil]}
{:type :invoke, :f :cas,   :value [k [v v']]}

cas

(cas _ _)

r

(r _ _)

test

(test opts)

A partial test, including a generator, model, and checker. You’ll need to provide a client. Options:

:nodes A set of nodes you’re going to operate on. We only care about the count, so we can figure out how many workers to use per key. :model A model for checking. Default is (model/cas-register). :per-key-limit Maximum number of ops per key. :process-limit Maximum number of processes that can interact with a given key. Default 20.

w

(w _ _)