1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.filter;
20
21 import org.apache.hadoop.hbase.KeyValue;
22 import org.apache.hadoop.hbase.SmallTests;
23 import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
24 import org.apache.hadoop.hbase.util.Bytes;
25 import org.junit.Test;
26 import org.junit.experimental.categories.Category;
27
28 import static org.junit.Assert.*;
29
30 import java.util.List;
31 import java.util.ArrayList;
32
33
34
35
36
37
38
39 @Category(SmallTests.class)
40 public class TestSingleColumnValueExcludeFilter {
41 private static final byte[] ROW = Bytes.toBytes("test");
42 private static final byte[] COLUMN_FAMILY = Bytes.toBytes("test");
43 private static final byte[] COLUMN_QUALIFIER = Bytes.toBytes("foo");
44 private static final byte[] COLUMN_QUALIFIER_2 = Bytes.toBytes("foo_2");
45 private static final byte[] VAL_1 = Bytes.toBytes("a");
46 private static final byte[] VAL_2 = Bytes.toBytes("ab");
47
48
49
50
51
52 @Test
53 public void testFilterKeyValue() throws Exception {
54 Filter filter = new SingleColumnValueExcludeFilter(COLUMN_FAMILY, COLUMN_QUALIFIER,
55 CompareOp.EQUAL, VAL_1);
56
57
58 List<KeyValue> kvs = new ArrayList<KeyValue>();
59 KeyValue kv = new KeyValue(ROW, COLUMN_FAMILY, COLUMN_QUALIFIER_2, VAL_1);
60
61 kvs.add (new KeyValue(ROW, COLUMN_FAMILY, COLUMN_QUALIFIER_2, VAL_1));
62 kvs.add (new KeyValue(ROW, COLUMN_FAMILY, COLUMN_QUALIFIER, VAL_1));
63 kvs.add (new KeyValue(ROW, COLUMN_FAMILY, COLUMN_QUALIFIER_2, VAL_1));
64
65 filter.filterRow(kvs);
66
67 assertEquals("resultSize", kvs.size(), 2);
68 assertTrue("leftKV1", KeyValue.COMPARATOR.compare(kvs.get(0), kv) == 0);
69 assertTrue("leftKV2", KeyValue.COMPARATOR.compare(kvs.get(1), kv) == 0);
70 assertFalse("allRemainingWhenMatch", filter.filterAllRemaining());
71
72
73 filter.reset();
74
75 kv = new KeyValue(ROW, COLUMN_FAMILY, COLUMN_QUALIFIER_2, VAL_1);
76 assertTrue("otherColumn", filter.filterKeyValue(kv) == Filter.ReturnCode.INCLUDE);
77
78 kv = new KeyValue(ROW, COLUMN_FAMILY, COLUMN_QUALIFIER, VAL_2);
79 assertTrue("testedMismatch", filter.filterKeyValue(kv) == Filter.ReturnCode.NEXT_ROW);
80
81 kv = new KeyValue(ROW, COLUMN_FAMILY, COLUMN_QUALIFIER_2, VAL_1);
82 assertTrue("otherColumn", filter.filterKeyValue(kv) == Filter.ReturnCode.NEXT_ROW);
83 }
84
85
86 }
87