1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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.util.Bytes;
29 import org.junit.experimental.categories.Category;
30
31 @Category(SmallTests.class)
32 public class TestScanWildcardColumnTracker extends HBaseTestCase {
33
34 final static int VERSIONS = 2;
35
36 public void testCheckColumn_Ok() throws IOException {
37 ScanWildcardColumnTracker tracker =
38 new ScanWildcardColumnTracker(0, VERSIONS, Long.MIN_VALUE);
39
40
41 List<byte[]> qualifiers = new ArrayList<byte[]>();
42 qualifiers.add(Bytes.toBytes("qualifer1"));
43 qualifiers.add(Bytes.toBytes("qualifer2"));
44 qualifiers.add(Bytes.toBytes("qualifer3"));
45 qualifiers.add(Bytes.toBytes("qualifer4"));
46
47
48 List<MatchCode> expected = new ArrayList<MatchCode>();
49 expected.add(ScanQueryMatcher.MatchCode.INCLUDE);
50 expected.add(ScanQueryMatcher.MatchCode.INCLUDE);
51 expected.add(ScanQueryMatcher.MatchCode.INCLUDE);
52 expected.add(ScanQueryMatcher.MatchCode.INCLUDE);
53
54 List<ScanQueryMatcher.MatchCode> actual = new ArrayList<MatchCode>();
55
56 for(byte [] qualifier : qualifiers) {
57 ScanQueryMatcher.MatchCode mc = tracker.checkColumn(qualifier, 0,
58 qualifier.length, 1, KeyValue.Type.Put.getCode(), false);
59 actual.add(mc);
60 }
61
62
63 for(int i=0; i<expected.size(); i++) {
64 assertEquals(expected.get(i), actual.get(i));
65 }
66 }
67
68 public void testCheckColumn_EnforceVersions() throws IOException {
69 ScanWildcardColumnTracker tracker =
70 new ScanWildcardColumnTracker(0, VERSIONS, Long.MIN_VALUE);
71
72
73 List<byte[]> qualifiers = new ArrayList<byte[]>();
74 qualifiers.add(Bytes.toBytes("qualifer1"));
75 qualifiers.add(Bytes.toBytes("qualifer1"));
76 qualifiers.add(Bytes.toBytes("qualifer1"));
77 qualifiers.add(Bytes.toBytes("qualifer2"));
78
79
80 List<ScanQueryMatcher.MatchCode> expected = new ArrayList<MatchCode>();
81 expected.add(ScanQueryMatcher.MatchCode.INCLUDE);
82 expected.add(ScanQueryMatcher.MatchCode.INCLUDE);
83 expected.add(ScanQueryMatcher.MatchCode.SEEK_NEXT_COL);
84 expected.add(ScanQueryMatcher.MatchCode.INCLUDE);
85
86 List<MatchCode> actual = new ArrayList<ScanQueryMatcher.MatchCode>();
87
88 long timestamp = 0;
89 for(byte [] qualifier : qualifiers) {
90 MatchCode mc = tracker.checkColumn(qualifier, 0, qualifier.length,
91 ++timestamp, KeyValue.Type.Put.getCode(), false);
92 actual.add(mc);
93 }
94
95
96 for(int i=0; i<expected.size(); i++) {
97 assertEquals(expected.get(i), actual.get(i));
98 }
99 }
100
101 public void DisabledTestCheckColumn_WrongOrder() {
102 ScanWildcardColumnTracker tracker =
103 new ScanWildcardColumnTracker(0, VERSIONS, Long.MIN_VALUE);
104
105
106 List<byte[]> qualifiers = new ArrayList<byte[]>();
107 qualifiers.add(Bytes.toBytes("qualifer2"));
108 qualifiers.add(Bytes.toBytes("qualifer1"));
109
110 boolean ok = false;
111
112 try {
113 for(byte [] qualifier : qualifiers) {
114 tracker.checkColumn(qualifier, 0, qualifier.length, 1,
115 KeyValue.Type.Put.getCode(), false);
116 }
117 } catch (Exception e) {
118 ok = true;
119 }
120
121 assertEquals(true, ok);
122 }
123
124
125 }
126