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 private boolean killMetaRs;
35
36 @Override
37 public ChaosMonkey build() {
38 loadProperties();
39 Policy chaosPolicy = new PeriodicRandomActionPolicy(chaosEveryMilliSec,
40 new UnbalanceKillAndRebalanceAction(waitForUnbalanceMilliSec, waitForKillMilliSec,
41 waitAfterBalanceMilliSec, killMetaRs));
42
43 return new PolicyBasedChaosMonkey(util, chaosPolicy);
44 }
45
46 private void loadProperties() {
47 chaosEveryMilliSec = Long.parseLong(this.properties.getProperty(
48 MonkeyConstants.UNBALANCE_CHAOS_EVERY_MS,
49 MonkeyConstants.DEFAULT_UNBALANCE_CHAOS_EVERY_MS + ""));
50 waitForUnbalanceMilliSec = Long.parseLong(this.properties.getProperty(
51 MonkeyConstants.UNBALANCE_WAIT_FOR_UNBALANCE_MS,
52 MonkeyConstants.DEFAULT_UNBALANCE_WAIT_FOR_UNBALANCE_MS + ""));
53 waitForKillMilliSec = Long.parseLong(this.properties.getProperty(
54 MonkeyConstants.UNBALANCE_WAIT_FOR_KILLS_MS,
55 MonkeyConstants.DEFAULT_UNBALANCE_WAIT_FOR_KILLS_MS + ""));
56 waitAfterBalanceMilliSec = Long.parseLong(this.properties.getProperty(
57 MonkeyConstants.UNBALANCE_WAIT_AFTER_BALANCE_MS,
58 MonkeyConstants.DEFAULT_UNBALANCE_WAIT_AFTER_BALANCE_MS + ""));
59 killMetaRs = Boolean.parseBoolean(this.properties.getProperty(
60 MonkeyConstants.UNBALANCE_KILL_META_RS,
61 MonkeyConstants.DEFAULT_UNBALANCE_KILL_META_RS + ""));
62 }
63 }