1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.chaos.factories;
20
21 import org.apache.hadoop.hbase.chaos.actions.UnbalanceKillAndRebalanceAction;
22 import org.apache.hadoop.hbase.chaos.monkies.ChaosMonkey;
23 import org.apache.hadoop.hbase.chaos.monkies.PolicyBasedChaosMonkey;
24 import org.apache.hadoop.hbase.chaos.policies.PeriodicRandomActionPolicy;
25 import org.apache.hadoop.hbase.chaos.policies.Policy;
26
27 public class UnbalanceMonkeyFactory extends MonkeyFactory {
28
29
30 private long chaosEveryMilliSec;
31 private long waitForUnbalanceMilliSec;
32 private long waitForKillMilliSec;
33 private long waitAfterBalanceMilliSec;
34
35 @Override
36 public ChaosMonkey build() {
37 loadProperties();
38 Policy chaosPolicy = new PeriodicRandomActionPolicy(chaosEveryMilliSec,
39 new UnbalanceKillAndRebalanceAction(waitForUnbalanceMilliSec, waitForKillMilliSec,
40 waitAfterBalanceMilliSec));
41
42 return new PolicyBasedChaosMonkey(util, chaosPolicy);
43 }
44
45 private void loadProperties() {
46 chaosEveryMilliSec = Long.parseLong(this.properties.getProperty(
47 MonkeyConstants.UNBALANCE_CHAOS_EVERY_MS,
48 MonkeyConstants.DEFAULT_UNBALANCE_CHAOS_EVERY_MS + ""));
49 waitForUnbalanceMilliSec = Long.parseLong(this.properties.getProperty(
50 MonkeyConstants.UNBALANCE_WAIT_FOR_UNBALANCE_MS,
51 MonkeyConstants.DEFAULT_UNBALANCE_WAIT_FOR_UNBALANCE_MS + ""));
52 waitForKillMilliSec = Long.parseLong(this.properties.getProperty(
53 MonkeyConstants.UNBALANCE_WAIT_FOR_KILLS_MS,
54 MonkeyConstants.DEFAULT_UNBALANCE_WAIT_FOR_KILLS_MS + ""));
55 waitAfterBalanceMilliSec = Long.parseLong(this.properties.getProperty(
56 MonkeyConstants.UNBALANCE_WAIT_AFTER_BALANCE_MS,
57 MonkeyConstants.DEFAULT_UNBALANCE_WAIT_AFTER_BALANCE_MS + ""));
58 }
59 }