View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  package org.apache.hadoop.hbase.codec.prefixtree.row.data;
19  
20  import java.util.ArrayList;
21  import java.util.List;
22  
23  import org.apache.hadoop.hbase.KeyValue;
24  import org.apache.hadoop.hbase.KeyValueUtil;
25  import org.apache.hadoop.hbase.Tag;
26  import org.apache.hadoop.hbase.codec.prefixtree.PrefixTreeBlockMeta;
27  import org.apache.hadoop.hbase.codec.prefixtree.row.BaseTestRowData;
28  import org.apache.hadoop.hbase.codec.prefixtree.scanner.CellScannerPosition;
29  import org.apache.hadoop.hbase.codec.prefixtree.scanner.CellSearcher;
30  import org.apache.hadoop.hbase.util.Bytes;
31  import org.junit.Assert;
32  
33  import com.google.common.collect.Lists;
34  
35  public class TestRowDataTrivialWithTags extends BaseTestRowData{
36    static byte[] rA = Bytes.toBytes("rA"), rB = Bytes.toBytes("rB"),// turn "r"
37                                                                     // into a
38                                                                     // branch for
39                                                                     // the
40                                                                     // Searcher
41                                                                     // tests
42        cf = Bytes.toBytes("fam"), cq0 = Bytes.toBytes("q0"), v0 = Bytes.toBytes("v0");
43  
44    static long ts = 55L;
45  
46    static List<KeyValue> d = Lists.newArrayList();
47    static {
48      List<Tag> tagList = new ArrayList<Tag>();
49      Tag t = new Tag((byte) 1, "visisbility");
50      tagList.add(t);
51      t = new Tag((byte) 2, "ACL");
52      tagList.add(t);
53      d.add(new KeyValue(rA, cf, cq0, ts, v0, tagList));
54      d.add(new KeyValue(rB, cf, cq0, ts, v0, tagList));
55    }
56  
57    @Override
58    public List<KeyValue> getInputs() {
59      return d;
60    }
61  
62    @Override
63    public void individualBlockMetaAssertions(PrefixTreeBlockMeta blockMeta) {
64      // node[0] -> root[r]
65      // node[1] -> leaf[A], etc
66      Assert.assertEquals(2, blockMeta.getRowTreeDepth());
67    }
68  
69    @Override
70    public void individualSearcherAssertions(CellSearcher searcher) {
71      /**
72       * The searcher should get a token mismatch on the "r" branch. Assert that
73       * it skips not only rA, but rB as well.
74       */
75      KeyValue afterLast = KeyValueUtil.createFirstOnRow(Bytes.toBytes("zzz"));
76      CellScannerPosition position = searcher.positionAtOrAfter(afterLast);
77      Assert.assertEquals(CellScannerPosition.AFTER_LAST, position);
78      Assert.assertNull(searcher.current());
79    }
80  }