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
41
42
43
44
45
46
47
48
49 @Test(timeout = 300000)
50 public void testReplicationStatus() throws Exception {
51 LOG.info("testReplicationStatus");
52
53 try (Admin hbaseAdmin = utility1.getConnection().getAdmin()) {
54
55 admin.disablePeer(PEER_ID);
56
57 final byte[] qualName = Bytes.toBytes("q");
58 Put p;
59
60 for (int i = 0; i < NB_ROWS_IN_BATCH; i++) {
61 p = new Put(Bytes.toBytes("row" + i));
62 p.add(famName, qualName, Bytes.toBytes("val" + i));
63 htable1.put(p);
64 }
65
66 ClusterStatus status = hbaseAdmin.getClusterStatus();
67
68 for (ServerName server : status.getServers()) {
69 ServerLoad sl = status.getLoad(server);
70 List<ReplicationLoadSource> rLoadSourceList = sl.getReplicationLoadSourceList();
71 ReplicationLoadSink rLoadSink = sl.getReplicationLoadSink();
72
73
74 assertTrue("failed to get ReplicationLoadSourceList", (rLoadSourceList.size() == 1));
75 assertEquals(PEER_ID, rLoadSourceList.get(0).getPeerID());
76
77
78 assertTrue("failed to get ReplicationLoadSink.AgeOfLastShippedOp ",
79 (rLoadSink.getAgeOfLastAppliedOp() >= 0));
80 assertTrue("failed to get ReplicationLoadSink.TimeStampsOfLastAppliedOp ",
81 (rLoadSink.getTimeStampsOfLastAppliedOp() >= 0));
82 }
83
84
85 utility1.getHBaseCluster().getRegionServer(1).stop("Stop RegionServer");
86 Thread.sleep(10000);
87 status = hbaseAdmin.getClusterStatus();
88 ServerName server = utility1.getHBaseCluster().getRegionServer(0).getServerName();
89 ServerLoad sl = status.getLoad(server);
90 List<ReplicationLoadSource> rLoadSourceList = sl.getReplicationLoadSourceList();
91
92 assertTrue("failed to get ReplicationLoadSourceList", (rLoadSourceList.size() == 1));
93 assertEquals(PEER_ID, rLoadSourceList.get(0).getPeerID());
94 } finally {
95 admin.enablePeer(PEER_ID);
96 utility1.getHBaseCluster().getRegionServer(1).start();
97 }
98 }
99 }