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