1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.hadoop.hbase.filter;
19
20 import java.util.Set;
21 import java.util.TreeSet;
22
23 import junit.framework.TestCase;
24
25 import org.apache.hadoop.hbase.KeyValue;
26 import org.apache.hadoop.hbase.SmallTests;
27 import org.apache.hadoop.hbase.util.Bytes;
28 import org.junit.experimental.categories.Category;
29
30 @Category(SmallTests.class)
31 public class TestFirstKeyValueMatchingQualifiersFilter extends TestCase {
32 private static final byte[] ROW = Bytes.toBytes("test");
33 private static final byte[] COLUMN_FAMILY = Bytes.toBytes("test");
34 private static final byte[] COLUMN_QUALIFIER_1 = Bytes.toBytes("foo");
35 private static final byte[] COLUMN_QUALIFIER_2 = Bytes.toBytes("foo_2");
36 private static final byte[] COLUMN_QUALIFIER_3 = Bytes.toBytes("foo_3");
37 private static final byte[] VAL_1 = Bytes.toBytes("a");
38
39
40
41
42
43
44
45 public void testFirstKeyMatchingQualifierFilter() throws Exception {
46 Set<byte[]> quals = new TreeSet<byte[]>(Bytes.BYTES_COMPARATOR);
47 quals.add(COLUMN_QUALIFIER_1);
48 quals.add(COLUMN_QUALIFIER_2);
49 Filter filter = new FirstKeyValueMatchingQualifiersFilter(quals);
50
51
52 KeyValue kv;
53 kv = new KeyValue(ROW, COLUMN_FAMILY, COLUMN_QUALIFIER_1, VAL_1);
54 assertTrue("includeAndSetFlag",
55 filter.filterKeyValue(kv) == Filter.ReturnCode.INCLUDE);
56 kv = new KeyValue(ROW, COLUMN_FAMILY, COLUMN_QUALIFIER_2, VAL_1);
57 assertTrue("flagIsSetSkipToNextRow",
58 filter.filterKeyValue(kv) == Filter.ReturnCode.NEXT_ROW);
59
60
61 filter.reset();
62 kv = new KeyValue(ROW, COLUMN_FAMILY, COLUMN_QUALIFIER_3, VAL_1);
63 System.out.println(filter.filterKeyValue(kv));
64 assertTrue("includeFlagIsUnset",
65 filter.filterKeyValue(kv) == Filter.ReturnCode.INCLUDE);
66 kv = new KeyValue(ROW, COLUMN_FAMILY, COLUMN_QUALIFIER_2, VAL_1);
67 assertTrue("includeAndSetFlag",
68 filter.filterKeyValue(kv) == Filter.ReturnCode.INCLUDE);
69 kv = new KeyValue(ROW, COLUMN_FAMILY, COLUMN_QUALIFIER_1, VAL_1);
70 assertTrue("flagIsSetSkipToNextRow",
71 filter.filterKeyValue(kv) == Filter.ReturnCode.NEXT_ROW);
72 }
73
74 }