1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.hadoop.hbase.replication;
19
20 import static org.junit.Assert.assertEquals;
21 import static org.junit.Assert.assertTrue;
22
23 import java.util.List;
24
25 import org.apache.commons.logging.Log;
26 import org.apache.commons.logging.LogFactory;
27 import org.apache.hadoop.hbase.ClusterStatus;
28 import org.apache.hadoop.hbase.ServerLoad;
29 import org.apache.hadoop.hbase.ServerName;
30 import org.apache.hadoop.hbase.client.Admin;
31 import org.apache.hadoop.hbase.client.Put;
32 import org.apache.hadoop.hbase.testclassification.MediumTests;
33 import org.apache.hadoop.hbase.util.Bytes;
34 import org.junit.Test;
35 import org.junit.experimental.categories.Category;
36
37 @Category(MediumTests.class)
38 public class TestReplicationStatus extends TestReplicationBase {
39 private static final Log LOG = LogFactory.getLog(TestReplicationStatus.class);
40 private static final String PEER_ID = "2";
41
42
43
44
45
46
47
48
49
50 @Test(timeout = 300000)
51 public void testReplicationStatus() throws Exception {
52 LOG.info("testReplicationStatus");
53
54 try (Admin hbaseAdmin = utility1.getConnection().getAdmin()) {
55
56 admin.disablePeer(PEER_ID);
57
58 final byte[] qualName = Bytes.toBytes("q");
59 Put p;
60
61 for (int i = 0; i < NB_ROWS_IN_BATCH; i++) {
62 p = new Put(Bytes.toBytes("row" + i));
63 p.add(famName, qualName, Bytes.toBytes("val" + i));
64 htable1.put(p);
65 }
66
67 ClusterStatus status = hbaseAdmin.getClusterStatus();
68
69 for (ServerName server : status.getServers()) {
70 ServerLoad sl = status.getLoad(server);
71 List<ReplicationLoadSource> rLoadSourceList = sl.getReplicationLoadSourceList();
72 ReplicationLoadSink rLoadSink = sl.getReplicationLoadSink();
73
74
75 assertTrue("failed to get ReplicationLoadSourceList", (rLoadSourceList.size() == 1));
76 assertEquals(PEER_ID, rLoadSourceList.get(0).getPeerID());
77
78
79 assertTrue("failed to get ReplicationLoadSink.AgeOfLastShippedOp ",
80 (rLoadSink.getAgeOfLastAppliedOp() >= 0));
81 assertTrue("failed to get ReplicationLoadSink.TimeStampsOfLastAppliedOp ",
82 (rLoadSink.getTimeStampsOfLastAppliedOp() >= 0));
83 }
84
85
86 utility1.getHBaseCluster().getRegionServer(1).stop("Stop RegionServer");
87 Thread.sleep(10000);
88 status = hbaseAdmin.getClusterStatus();
89 ServerName server = utility1.getHBaseCluster().getRegionServer(0).getServerName();
90 ServerLoad sl = status.getLoad(server);
91 List<ReplicationLoadSource> rLoadSourceList = sl.getReplicationLoadSourceList();
92
93 assertTrue("failed to get ReplicationLoadSourceList", (rLoadSourceList.size() == 1));
94 assertEquals(PEER_ID, rLoadSourceList.get(0).getPeerID());
95 } finally {
96 admin.enablePeer(PEER_ID);
97 utility1.getHBaseCluster().getRegionServer(1).start();
98 }
99 }
100 }