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.protobuf.generated.ClientProtos.MultiRequest;
24  import org.apache.hadoop.hbase.protobuf.generated.RPCProtos.RequestHeader;
25  import org.junit.Test;
26  import org.junit.experimental.categories.Category;
27  import org.mockito.Mockito;
28  
29  import com.google.protobuf.Message;
30  
31  /**
32   * Basic test that qos function is sort of working; i.e. a change in method naming style
33   * over in pb doesn't break it.
34   */
35  @Category(SmallTests.class)
36  public class TestQosFunction {
37    @Test
38    public void testPriority() {
39      HRegionServer hrs = Mockito.mock(HRegionServer.class);
40      AnnotationReadingPriorityFunction qosFunction = new AnnotationReadingPriorityFunction(hrs);
41  
42      // Set method name in pb style with the method name capitalized.
43      checkMethod("ReplicateWALEntry", HConstants.REPLICATION_QOS, qosFunction);
44      // Set method name in pb style with the method name capitalized.
45      checkMethod("OpenRegion", HConstants.HIGH_QOS, qosFunction);
46      // Check multi works.
47      checkMethod("Multi", HConstants.NORMAL_QOS, qosFunction, MultiRequest.getDefaultInstance());
48    }
49  
50    private void checkMethod(final String methodName, final int expected,
51        final AnnotationReadingPriorityFunction qosf) {
52      checkMethod(methodName, expected, qosf, null);
53    }
54  
55    private void checkMethod(final String methodName, final int expected,
56        final AnnotationReadingPriorityFunction qosf, final Message param) {
57      RequestHeader.Builder builder = RequestHeader.newBuilder();
58      builder.setMethodName(methodName);
59      assertEquals(methodName, expected, qosf.getPriority(builder.build(), param));
60    }
61  }