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