forked from Deuxfleurs/garage
jepsen: fix nemesis to actually generate many operations
This commit is contained in:
parent
d13bde5e26
commit
d7ab2c639e
1 changed files with 33 additions and 24 deletions
|
@ -32,9 +32,12 @@
|
||||||
[test]
|
[test]
|
||||||
(let [layout-show (c/on (jepsen/primary test) (c/exec grg/binary :layout :show))
|
(let [layout-show (c/on (jepsen/primary test) (c/exec grg/binary :layout :show))
|
||||||
[_ layout-next-version] (re-find #"apply --version (\d+)\n" layout-show)]
|
[_ layout-next-version] (re-find #"apply --version (\d+)\n" layout-show)]
|
||||||
(info "layout show: " layout-show "; next-version: " layout-next-version)
|
(if layout-next-version
|
||||||
(c/on (jepsen/primary test)
|
(do
|
||||||
(c/exec grg/binary :layout :apply :--version layout-next-version))))
|
(info "layout show: " layout-show "; next-version: " layout-next-version)
|
||||||
|
(c/on (jepsen/primary test)
|
||||||
|
(c/exec grg/binary :layout :apply :--version layout-next-version)))
|
||||||
|
(info "no layout changes to apply"))))
|
||||||
|
|
||||||
(defn reconfigure-subset
|
(defn reconfigure-subset
|
||||||
"Reconfigure cluster with only a subset of nodes"
|
"Reconfigure cluster with only a subset of nodes"
|
||||||
|
@ -65,22 +68,28 @@
|
||||||
|
|
||||||
; ---- nemesis scenari ----
|
; ---- nemesis scenari ----
|
||||||
|
|
||||||
|
(defn nemesis-op
|
||||||
|
"A generator for a single nemesis operation"
|
||||||
|
[op]
|
||||||
|
(fn [_ _] {:type :info, :f op}))
|
||||||
|
|
||||||
(defn scenario-c
|
(defn scenario-c
|
||||||
"Clock scramble scenario"
|
"Clock scramble scenario"
|
||||||
[opts]
|
[opts]
|
||||||
{:generator (cycle [(gen/sleep 5)
|
{:generator (->>
|
||||||
{:type :info, :f :clock-scramble}])
|
(nemesis-op :clock-scramble)
|
||||||
|
(gen/stagger 5))
|
||||||
:nemesis (nemesis/compose
|
:nemesis (nemesis/compose
|
||||||
{{:clock-scramble :scramble} (nemesis/clock-scrambler 20.0)})})
|
{{:clock-scramble :scramble} (nemesis/clock-scrambler 20.0)})})
|
||||||
|
|
||||||
(defn scenario-cp
|
(defn scenario-cp
|
||||||
"Clock scramble + partition scenario"
|
"Clock scramble + partition scenario"
|
||||||
[opts]
|
[opts]
|
||||||
{:generator (->>
|
{:generator (->>
|
||||||
(gen/mix [{:type :info, :f :clock-scramble}
|
(gen/mix [(nemesis-op :clock-scramble)
|
||||||
{:type :info, :f :partition-stop}
|
(nemesis-op :partition-stop)
|
||||||
{:type :info, :f :partition-start}])
|
(nemesis-op :partition-start)])
|
||||||
(gen/stagger 3))
|
(gen/stagger 5))
|
||||||
:final-generator (gen/once {:type :info, :f :partition-stop})
|
:final-generator (gen/once {:type :info, :f :partition-stop})
|
||||||
:nemesis (nemesis/compose
|
:nemesis (nemesis/compose
|
||||||
{{:clock-scramble :scramble} (nemesis/clock-scrambler 20.0)
|
{{:clock-scramble :scramble} (nemesis/clock-scrambler 20.0)
|
||||||
|
@ -91,9 +100,9 @@
|
||||||
"Cluster reconfiguration scenario"
|
"Cluster reconfiguration scenario"
|
||||||
[opts]
|
[opts]
|
||||||
{:generator (->>
|
{:generator (->>
|
||||||
(gen/mix [{:type :info, :f :reconfigure-start}
|
(gen/mix [(nemesis-op :reconfigure-start)
|
||||||
{:type :info, :f :reconfigure-stop}])
|
(nemesis-op :reconfigure-stop)])
|
||||||
(gen/stagger 3))
|
(gen/stagger 5))
|
||||||
:nemesis (nemesis/compose
|
:nemesis (nemesis/compose
|
||||||
{{:reconfigure-start :start
|
{{:reconfigure-start :start
|
||||||
:reconfigure-stop :stop} (reconfigure-subset 3)})})
|
:reconfigure-stop :stop} (reconfigure-subset 3)})})
|
||||||
|
@ -102,11 +111,11 @@
|
||||||
"Partition + cluster reconfiguration scenario"
|
"Partition + cluster reconfiguration scenario"
|
||||||
[opts]
|
[opts]
|
||||||
{:generator (->>
|
{:generator (->>
|
||||||
(gen/mix [{:type :info, :f :partition-start}
|
(gen/mix [(nemesis-op :partition-start)
|
||||||
{:type :info, :f :partition-stop}
|
(nemesis-op :partition-stop)
|
||||||
{:type :info, :f :reconfigure-start}
|
(nemesis-op :reconfigure-start)
|
||||||
{:type :info, :f :reconfigure-stop}])
|
(nemesis-op :reconfigure-stop)])
|
||||||
(gen/stagger 3))
|
(gen/stagger 5))
|
||||||
:final-generator (gen/once {:type :info, :f :partition-stop})
|
:final-generator (gen/once {:type :info, :f :partition-stop})
|
||||||
:nemesis (nemesis/compose
|
:nemesis (nemesis/compose
|
||||||
{{:partition-start :start
|
{{:partition-start :start
|
||||||
|
@ -118,12 +127,12 @@
|
||||||
"Clock scramble + partition + cluster reconfiguration scenario"
|
"Clock scramble + partition + cluster reconfiguration scenario"
|
||||||
[opts]
|
[opts]
|
||||||
{:generator (->>
|
{:generator (->>
|
||||||
(gen/mix [{:type :info, :f :clock-scramble}
|
(gen/mix [(nemesis-op :clock-scramble)
|
||||||
{:type :info, :f :partition-start}
|
(nemesis-op :partition-start)
|
||||||
{:type :info, :f :partition-stop}
|
(nemesis-op :partition-stop)
|
||||||
{:type :info, :f :reconfigure-start}
|
(nemesis-op :reconfigure-start)
|
||||||
{:type :info, :f :reconfigure-stop}])
|
(nemesis-op :reconfigure-stop)])
|
||||||
(gen/stagger 3))
|
(gen/stagger 5))
|
||||||
:final-generator (gen/once {:type :info, :f :partition-stop})
|
:final-generator (gen/once {:type :info, :f :partition-stop})
|
||||||
:nemesis (nemesis/compose
|
:nemesis (nemesis/compose
|
||||||
{{:clock-scramble :scramble} (nemesis/clock-scrambler 20.0)
|
{{:clock-scramble :scramble} (nemesis/clock-scrambler 20.0)
|
||||||
|
|
Loading…
Reference in a new issue