View Javadoc

1   /*
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  
20  package org.apache.hadoop.hbase.regionserver;
21  
22  import java.io.IOException;
23  import java.util.ArrayList;
24  import java.util.List;
25  
26  import org.apache.hadoop.hbase.*;
27  import org.apache.hadoop.hbase.regionserver.ScanQueryMatcher.MatchCode;
28  import org.apache.hadoop.hbase.testclassification.SmallTests;
29  import org.apache.hadoop.hbase.util.Bytes;
30  import org.junit.experimental.categories.Category;
31  
32  @Category(SmallTests.class)
33  public class TestScanWildcardColumnTracker extends HBaseTestCase {
34  
35    final static int VERSIONS = 2;
36  
37    public void testCheckColumn_Ok() throws IOException {
38      ScanWildcardColumnTracker tracker =
39        new ScanWildcardColumnTracker(0, VERSIONS, Long.MIN_VALUE);
40  
41      //Create list of qualifiers
42      List<byte[]> qualifiers = new ArrayList<byte[]>();
43      qualifiers.add(Bytes.toBytes("qualifier1"));
44      qualifiers.add(Bytes.toBytes("qualifier2"));
45      qualifiers.add(Bytes.toBytes("qualifier3"));
46      qualifiers.add(Bytes.toBytes("qualifier4"));
47  
48      //Setting up expected result
49      List<MatchCode> expected = new ArrayList<MatchCode>();
50      expected.add(ScanQueryMatcher.MatchCode.INCLUDE);
51      expected.add(ScanQueryMatcher.MatchCode.INCLUDE);
52      expected.add(ScanQueryMatcher.MatchCode.INCLUDE);
53      expected.add(ScanQueryMatcher.MatchCode.INCLUDE);
54  
55      List<ScanQueryMatcher.MatchCode> actual = new ArrayList<MatchCode>();
56  
57      for(byte [] qualifier : qualifiers) {
58        ScanQueryMatcher.MatchCode mc =
59            ScanQueryMatcher.checkColumn(tracker, qualifier, 0, qualifier.length, 1,
60              KeyValue.Type.Put.getCode(), false);
61        actual.add(mc);
62      }
63  
64      //Compare actual with expected
65      for(int i=0; i<expected.size(); i++) {
66        assertEquals(expected.get(i), actual.get(i));
67      }
68    }
69  
70    public void testCheckColumn_EnforceVersions() throws IOException {
71      ScanWildcardColumnTracker tracker =
72        new ScanWildcardColumnTracker(0, VERSIONS, Long.MIN_VALUE);
73  
74      //Create list of qualifiers
75      List<byte[]> qualifiers = new ArrayList<byte[]>();
76      qualifiers.add(Bytes.toBytes("qualifier1"));
77      qualifiers.add(Bytes.toBytes("qualifier1"));
78      qualifiers.add(Bytes.toBytes("qualifier1"));
79      qualifiers.add(Bytes.toBytes("qualifier2"));
80  
81      //Setting up expected result
82      List<ScanQueryMatcher.MatchCode> expected = new ArrayList<MatchCode>();
83      expected.add(ScanQueryMatcher.MatchCode.INCLUDE);
84      expected.add(ScanQueryMatcher.MatchCode.INCLUDE);
85      expected.add(ScanQueryMatcher.MatchCode.SEEK_NEXT_COL);
86      expected.add(ScanQueryMatcher.MatchCode.INCLUDE);
87  
88      List<MatchCode> actual = new ArrayList<ScanQueryMatcher.MatchCode>();
89  
90      long timestamp = 0;
91      for(byte [] qualifier : qualifiers) {
92        MatchCode mc =
93            ScanQueryMatcher.checkColumn(tracker, qualifier, 0, qualifier.length, ++timestamp,
94              KeyValue.Type.Put.getCode(), false);
95        actual.add(mc);
96      }
97  
98      //Compare actual with expected
99      for(int i=0; i<expected.size(); i++) {
100       assertEquals(expected.get(i), actual.get(i));
101     }
102   }
103 
104   public void DisabledTestCheckColumn_WrongOrder() {
105     ScanWildcardColumnTracker tracker =
106       new ScanWildcardColumnTracker(0, VERSIONS, Long.MIN_VALUE);
107 
108     //Create list of qualifiers
109     List<byte[]> qualifiers = new ArrayList<byte[]>();
110     qualifiers.add(Bytes.toBytes("qualifier2"));
111     qualifiers.add(Bytes.toBytes("qualifier1"));
112 
113     boolean ok = false;
114 
115     try {
116       for(byte [] qualifier : qualifiers) {
117         ScanQueryMatcher.checkColumn(tracker, qualifier, 0, qualifier.length, 1,
118           KeyValue.Type.Put.getCode(), false);
119       }
120     } catch (Exception e) {
121       ok = true;
122     }
123 
124     assertEquals(true, ok);
125   }
126 
127 
128 }
129