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 java.util.Map;
22 import java.util.Properties;
23 import java.util.Set;
24
25 import org.apache.hadoop.hbase.IntegrationTestingUtility;
26 import org.apache.hadoop.hbase.TableName;
27 import org.apache.hadoop.hbase.chaos.monkies.ChaosMonkey;
28
29 import com.google.common.collect.ImmutableMap;
30
31
32
33
34 public abstract class MonkeyFactory {
35
36 protected TableName tableName;
37 protected Set<String> columnFamilies;
38 protected IntegrationTestingUtility util;
39 protected Properties properties = new Properties();
40
41 public MonkeyFactory setTableName(TableName tableName) {
42 this.tableName = tableName;
43 return this;
44 }
45
46 public MonkeyFactory setColumnFamilies(Set<String> columnFamilies) {
47 this.columnFamilies = columnFamilies;
48 return this;
49 }
50
51 public MonkeyFactory setUtil(IntegrationTestingUtility util) {
52 this.util = util;
53 return this;
54 }
55
56 public MonkeyFactory setProperties(Properties props) {
57 if (props != null) {
58 this.properties = props;
59 }
60 return this;
61 }
62
63 public abstract ChaosMonkey build();
64
65 public static final String CALM = "calm";
66
67 public static final String SLOW_DETERMINISTIC = "slowDeterministic";
68 public static final String UNBALANCE = "unbalance";
69 public static final String SERVER_KILLING = "serverKilling";
70 public static final String STRESS_AM = "stressAM";
71 public static final String NO_KILL = "noKill";
72 public static final String MASTER_KILLING = "masterKilling";
73 public static final String MOB_NO_KILL = "mobNoKill";
74 public static final String MOB_SLOW_DETERMINISTIC = "mobSlowDeterministic";
75
76 public static Map<String, MonkeyFactory> FACTORIES = ImmutableMap.<String,MonkeyFactory>builder()
77 .put(CALM, new CalmMonkeyFactory())
78 .put(SLOW_DETERMINISTIC, new SlowDeterministicMonkeyFactory())
79 .put(UNBALANCE, new UnbalanceMonkeyFactory())
80 .put(SERVER_KILLING, new ServerKillingMonkeyFactory())
81 .put(STRESS_AM, new StressAssignmentManagerMonkeyFactory())
82 .put(NO_KILL, new NoKillMonkeyFactory())
83 .put(MASTER_KILLING, new MasterKillingMonkeyFactory())
84 .put(MOB_NO_KILL, new MobNoKillMonkeyFactory())
85 .put(MOB_SLOW_DETERMINISTIC, new MobNoKillMonkeyFactory())
86 .build();
87
88 public static MonkeyFactory getFactory(String factoryName) {
89 return FACTORIES.get(factoryName);
90 }
91 }