View Javadoc

1   package org.apache.hadoop.hbase.regionserver;
2   /**
3   * Licensed to the Apache Software Foundation (ASF) under one
4   * or more contributor license agreements.  See the NOTICE file
5   * distributed with this work for additional information
6   * regarding copyright ownership.  The ASF licenses this file
7   * to you under the Apache License, Version 2.0 (the
8   * "License"); you may not use this file except in compliance
9   * with the License.  You may obtain a copy of the License at
10  *
11  *     http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19  import static org.junit.Assert.assertEquals;
20  
21  import org.apache.hadoop.hbase.HConstants;
22  import org.apache.hadoop.hbase.SmallTests;
23  import org.apache.hadoop.hbase.util.Pair;
24  import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MultiRequest;
25  import org.apache.hadoop.hbase.protobuf.generated.RPCProtos.RequestHeader;
26  import org.junit.Test;
27  import org.junit.experimental.categories.Category;
28  import org.mockito.Mockito;
29  
30  import com.google.protobuf.Message;
31  
32  /**
33   * Basic test that qos function is sort of working; i.e. a change in method naming style
34   * over in pb doesn't break it.
35   */
36  @Category(SmallTests.class)
37  public class TestQosFunction {
38    @Test
39    public void testPriority() {
40      HRegionServer hrs = Mockito.mock(HRegionServer.class);
41      QosFunction qosFunction = new QosFunction(hrs);
42  
43      // Set method name in pb style with the method name capitalized.
44      checkMethod("ReplicateWALEntry", HConstants.REPLICATION_QOS, qosFunction);
45      // Set method name in pb style with the method name capitalized.
46      checkMethod("OpenRegion", HConstants.HIGH_QOS, qosFunction);
47    }
48  
49    private void checkMethod(final String methodName, final int expected, final QosFunction qosf) {
50      RequestHeader.Builder builder = RequestHeader.newBuilder();
51      builder.setMethodName(methodName);
52      Pair<RequestHeader, Message> headerAndParam =
53        new Pair<RequestHeader, Message>(builder.build(), null);
54      assertEquals(methodName, expected, qosf.apply(headerAndParam).intValue());
55    }
56  }