This library provides the compositional generator system at the heart of Jepsen.
Generators produce a series of operations Jepsen would like to perform against
a system, like "Set key x to 3". They also react to operations as they
happen. For example, if a write fails, the generator could decide to retry
it.
In addition to the generators themselves, this library provides:
jepsen.random: Pluggable random valuesjepsen.generator.test: Helpers for testing generatorsjepsen.generator.context: A high-performance, pure data structure which
keeps track of the state used by generatorsjepsen.generator.translation-table: Maps worker threads to integers(gen/phases (->> (gen/mix [(repeat {:f :read})
(map (fn [x] {:f :write, :value x}) (range))])
(gen/stagger 1/10)
(gen/nemesis (->> (cycle [{:f :break}
{:f :repair}])
(gen/stagger 5)))
(gen/time-limit 30))
(gen/log "Recovering")
(gen/nemesis {:f :repair})
(gen/sleep 10)
(gen/log "Final read")
(gen/clients (gen/each-thread (gen/until-ok {:f :read}))))
Copyright © Jepsen, LLC
This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0.
This Source Code may also be made available under the following Secondary Licenses when the conditions for such availability set forth in the Eclipse Public License, v. 2.0 are satisfied: GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version, with the GNU Classpath Exception which is available at https://www.gnu.org/software/classpath/license.html.
Can you improve this documentation?Edit on GitHub
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 |