1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.hadoop.hbase.client.replication;
19
20 import java.util.List;
21 import java.util.Map;
22 import java.util.TreeMap;
23
24 import org.apache.commons.logging.Log;
25 import org.apache.commons.logging.LogFactory;
26 import org.apache.hadoop.conf.Configuration;
27 import org.apache.hadoop.hbase.*;
28 import org.apache.hadoop.hbase.testclassification.MediumTests;
29 import org.junit.BeforeClass;
30 import org.junit.Test;
31 import org.junit.experimental.categories.Category;
32
33 import com.google.common.collect.Lists;
34
35 import static org.junit.Assert.fail;
36 import static org.junit.Assert.assertEquals;
37 import static org.junit.Assert.assertTrue;
38 import static org.junit.Assert.assertFalse;
39
40
41
42
43 @Category(MediumTests.class)
44 public class TestReplicationAdmin {
45
46 private static final Log LOG =
47 LogFactory.getLog(TestReplicationAdmin.class);
48 private final static HBaseTestingUtility TEST_UTIL =
49 new HBaseTestingUtility();
50
51 private final String ID_ONE = "1";
52 private final String KEY_ONE = "127.0.0.1:2181:/hbase";
53 private final String ID_SECOND = "2";
54 private final String KEY_SECOND = "127.0.0.1:2181:/hbase2";
55
56 private static ReplicationAdmin admin;
57
58
59
60
61 @BeforeClass
62 public static void setUpBeforeClass() throws Exception {
63 TEST_UTIL.startMiniZKCluster();
64 Configuration conf = TEST_UTIL.getConfiguration();
65 conf.setBoolean(HConstants.REPLICATION_ENABLE_KEY, HConstants.REPLICATION_ENABLE_DEFAULT);
66 admin = new ReplicationAdmin(conf);
67 }
68
69
70
71
72
73
74 @Test
75 public void testAddRemovePeer() throws Exception {
76
77 admin.addPeer(ID_ONE, KEY_ONE);
78
79 try {
80 admin.addPeer(ID_ONE, KEY_ONE);
81 } catch (IllegalArgumentException iae) {
82
83 }
84 assertEquals(1, admin.getPeersCount());
85
86 try {
87 admin.removePeer(ID_SECOND);
88 fail();
89 } catch (IllegalArgumentException iae) {
90
91 }
92 assertEquals(1, admin.getPeersCount());
93
94 try {
95 admin.addPeer(ID_SECOND, KEY_SECOND);
96 } catch (IllegalStateException iae) {
97 fail();
98 }
99 assertEquals(2, admin.getPeersCount());
100
101 admin.removePeer(ID_ONE);
102 assertEquals(1, admin.getPeersCount());
103 admin.removePeer(ID_SECOND);
104 assertEquals(0, admin.getPeersCount());
105 }
106
107
108
109
110
111 @Test
112 public void testEnableDisable() throws Exception {
113 admin.addPeer(ID_ONE, KEY_ONE);
114 assertEquals(1, admin.getPeersCount());
115 assertTrue(admin.getPeerState(ID_ONE));
116 admin.disablePeer(ID_ONE);
117
118 assertFalse(admin.getPeerState(ID_ONE));
119 try {
120 admin.getPeerState(ID_SECOND);
121 } catch (IllegalArgumentException iae) {
122
123 }
124 admin.removePeer(ID_ONE);
125 }
126
127 @Test
128 public void testGetTableCfsStr() {
129
130
131 Map<TableName, List<String>> tabCFsMap = null;
132
133
134 assertEquals(null, ReplicationAdmin.getTableCfsStr(tabCFsMap));
135
136
137
138 tabCFsMap = new TreeMap<TableName, List<String>>();
139 tabCFsMap.put(TableName.valueOf("tab1"), null);
140 assertEquals("tab1", ReplicationAdmin.getTableCfsStr(tabCFsMap));
141
142 tabCFsMap = new TreeMap<TableName, List<String>>();
143 tabCFsMap.put(TableName.valueOf("tab1"), Lists.newArrayList("cf1"));
144 assertEquals("tab1:cf1", ReplicationAdmin.getTableCfsStr(tabCFsMap));
145
146 tabCFsMap = new TreeMap<TableName, List<String>>();
147 tabCFsMap.put(TableName.valueOf("tab1"), Lists.newArrayList("cf1", "cf3"));
148 assertEquals("tab1:cf1,cf3", ReplicationAdmin.getTableCfsStr(tabCFsMap));
149
150
151 tabCFsMap = new TreeMap<TableName, List<String>>();
152 tabCFsMap.put(TableName.valueOf("tab1"), null);
153 tabCFsMap.put(TableName.valueOf("tab2"), Lists.newArrayList("cf1"));
154 tabCFsMap.put(TableName.valueOf("tab3"), Lists.newArrayList("cf1", "cf3"));
155 assertEquals("tab1;tab2:cf1;tab3:cf1,cf3", ReplicationAdmin.getTableCfsStr(tabCFsMap));
156 }
157
158 }
159