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.Action;
22 import org.apache.hadoop.hbase.chaos.actions.DumpClusterStatusAction;
23 import org.apache.hadoop.hbase.chaos.actions.RestartActiveMasterAction;
24 import org.apache.hadoop.hbase.chaos.monkies.ChaosMonkey;
25 import org.apache.hadoop.hbase.chaos.monkies.PolicyBasedChaosMonkey;
26 import org.apache.hadoop.hbase.chaos.policies.PeriodicRandomActionPolicy;
27
28
29
30
31
32 public class MasterKillingMonkeyFactory extends MonkeyFactory {
33
34 private long action1Period;
35 private long action2Period;
36
37 private long restartActiveMasterSleepTime;
38
39 @Override
40 public ChaosMonkey build() {
41 loadProperties();
42
43
44 Action[] actions1 = new Action[] {
45 new RestartActiveMasterAction(restartActiveMasterSleepTime),
46 };
47
48
49 Action[] actions2 = new Action[] {
50 new DumpClusterStatusAction()
51 };
52
53 return new PolicyBasedChaosMonkey(util,
54 new PeriodicRandomActionPolicy(action1Period, actions1),
55 new PeriodicRandomActionPolicy(action2Period, actions2));
56 }
57
58 private void loadProperties() {
59
60 action1Period = Long.parseLong(this.properties.getProperty(
61 MonkeyConstants.PERIODIC_ACTION1_PERIOD,
62 MonkeyConstants.DEFAULT_PERIODIC_ACTION1_PERIOD + ""));
63 action2Period = Long.parseLong(this.properties.getProperty(
64 MonkeyConstants.PERIODIC_ACTION2_PERIOD,
65 MonkeyConstants.DEFAULT_PERIODIC_ACTION2_PERIOD + ""));
66 restartActiveMasterSleepTime = Long.parseLong(this.properties.getProperty(
67 MonkeyConstants.RESTART_ACTIVE_MASTER_SLEEP_TIME,
68 MonkeyConstants.DEFAULT_RESTART_ACTIVE_MASTER_SLEEP_TIME + ""));
69 }
70
71 }