1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.hadoop.hbase.master;
19
20 import org.apache.hadoop.conf.Configuration;
21 import org.apache.hadoop.hbase.*;
22 import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
23 import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos;
24 import org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos;
25 import org.apache.hadoop.hbase.regionserver.AnnotationReadingPriorityFunction;
26 import org.apache.hadoop.hbase.regionserver.RSRpcServices;
27 import org.apache.hadoop.hbase.testclassification.SmallTests;
28 import org.apache.hadoop.hbase.util.Bytes;
29 import org.junit.Before;
30 import org.junit.Test;
31 import org.junit.experimental.categories.Category;
32 import org.mockito.Mockito;
33
34 import java.io.IOException;
35
36 import static org.junit.Assert.*;
37 import static org.mockito.Mockito.when;
38
39 @Category({SmallTests.class})
40 public class TestMasterQosFunction extends QosTestHelper {
41 private Configuration conf;
42 private RSRpcServices rpcServices;
43 private AnnotationReadingPriorityFunction qosFunction;
44
45
46 @Before
47 public void setUp() {
48 conf = HBaseConfiguration.create();
49 rpcServices = Mockito.mock(MasterRpcServices.class);
50 when(rpcServices.getConfiguration()).thenReturn(conf);
51 qosFunction = new MasterAnnotationReadingPriorityFunction(rpcServices, MasterRpcServices.class);
52 }
53
54 @Test
55 public void testRegionInTransition() throws IOException {
56
57 HBaseProtos.RegionInfo meta_ri = HRegionInfo.convert(HRegionInfo.FIRST_META_REGIONINFO);
58 HBaseProtos.RegionInfo normal_ri = HRegionInfo.convert(
59 new HRegionInfo(TableName.valueOf("test:table"),
60 Bytes.toBytes("a"), Bytes.toBytes("b"), false));
61
62
63 RegionServerStatusProtos.RegionStateTransition metaTransition = RegionServerStatusProtos
64 .RegionStateTransition.newBuilder()
65 .addRegionInfo(meta_ri)
66 .setTransitionCode(RegionServerStatusProtos.RegionStateTransition.TransitionCode.CLOSED)
67 .build();
68
69 RegionServerStatusProtos.RegionStateTransition normalTransition = RegionServerStatusProtos
70 .RegionStateTransition.newBuilder()
71 .addRegionInfo(normal_ri)
72 .setTransitionCode(RegionServerStatusProtos.RegionStateTransition.TransitionCode.CLOSED)
73 .build();
74
75 RegionServerStatusProtos.ReportRegionStateTransitionRequest metaTransitionRequest =
76 RegionServerStatusProtos.ReportRegionStateTransitionRequest.newBuilder()
77 .setServer(ProtobufUtil.toServerName(ServerName.valueOf("locahost:60020", 100)))
78 .addTransition(normalTransition)
79 .addTransition(metaTransition).build();
80
81 RegionServerStatusProtos.ReportRegionStateTransitionRequest normalTransitionRequest =
82 RegionServerStatusProtos.ReportRegionStateTransitionRequest.newBuilder()
83 .setServer(ProtobufUtil.toServerName(ServerName.valueOf("locahost:60020", 100)))
84 .addTransition(normalTransition).build();
85
86 final String reportFuncName = "ReportRegionStateTransition";
87 checkMethod(conf, reportFuncName, HConstants.SYSTEMTABLE_QOS, qosFunction,
88 metaTransitionRequest);
89 checkMethod(conf, reportFuncName, HConstants.NORMAL_QOS, qosFunction, normalTransitionRequest);
90 }
91
92 @Test
93 public void testAnnotations() {
94 checkMethod(conf, "GetLastFlushedSequenceId", HConstants.ADMIN_QOS, qosFunction);
95 checkMethod(conf, "CompactRegion", HConstants.ADMIN_QOS, qosFunction);
96 checkMethod(conf, "GetLastFlushedSequenceId", HConstants.ADMIN_QOS, qosFunction);
97 checkMethod(conf, "GetRegionInfo", HConstants.ADMIN_QOS, qosFunction);
98 }
99 }