-
Notifications
You must be signed in to change notification settings - Fork 110
/
steps.go
54 lines (48 loc) · 1.76 KB
/
steps.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package main
type Step struct {
action interface{}
state State
}
func concatSteps(steps ...[]Step) []Step {
var concat []Step
for _, s := range steps {
concat = append(concat, s...)
}
return concat
}
var happyPathSteps = concatSteps(
stepsStartChains([]string{"consu"}, false),
stepsDelegate("consu"),
stepsAssignConsumerKeyOnStartedChain("consu", "bob"),
stepsUnbond("consu"),
stepsRedelegate("consu"),
stepsDowntime("consu"),
stepsRejectEquivocationProposal("consu", 2), // prop to tombstone bob is rejected
stepsDoubleSignOnProviderAndConsumer("consu"), // carol double signs on provider, bob double signs on consumer
stepsSubmitEquivocationProposal("consu", 2), // now prop to tombstone bob is submitted and accepted
stepsStartHermes(),
stepsConsumerRemovalPropNotPassing("consu", 3), // submit removal prop but vote no on it - chain should stay
stepsStopChain("consu", 4), // stop chain
)
var slashThrottleSteps = concatSteps(
stepsStartChains([]string{"consu"}, false),
stepsDelegate("consu"),
stepsThrottledDowntime("consu"),
stepsStopChain("consu", 2),
)
var democracySteps = concatSteps(
// democracySteps requires a transfer channel
stepsStartChains([]string{"democ"}, true),
// delegation needs to happen so the first VSC packet can be delivered
stepsDelegate("democ"),
stepsDemocracy("democ"),
)
var multipleConsumers = concatSteps(
stepsStartChains([]string{"consu", "densu"}, false),
stepsMultiConsumerDelegate("consu", "densu"),
stepsMultiConsumerUnbond("consu", "densu"),
stepsMultiConsumerRedelegate("consu", "densu"),
stepsMultiConsumerDowntimeFromConsumer("consu", "densu"),
stepsMultiConsumerDowntimeFromProvider("consu", "densu"),
stepsMultiConsumerDoubleSign("consu", "densu"), // double sign on one of the chains
)