1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.hadoop.hbase.regionserver;
22
23 import junit.framework.TestCase;
24 import org.apache.hadoop.hbase.KeyValue;
25 import org.apache.hadoop.hbase.KeyValueTestUtil;
26
27 import java.io.IOException;
28 import java.util.ArrayList;
29 import java.util.List;
30 import static org.apache.hadoop.hbase.regionserver.KeyValueScanFixture.scanFixture;
31
32 public class TestMinorCompactingStoreScanner extends TestCase {
33
34 public void testDeleteFamiliy() throws IOException {
35 KeyValue[] kvs = new KeyValue[] {
36 KeyValueTestUtil.create("R1", "cf", "a", 100, KeyValue.Type.DeleteFamily, "dont-care"),
37 KeyValueTestUtil.create("R1", "cf", "b", 11, KeyValue.Type.Put, "dont-care"),
38 KeyValueTestUtil.create("R1", "cf", "c", 11, KeyValue.Type.Put, "dont-care"),
39 KeyValueTestUtil.create("R1", "cf", "d", 11, KeyValue.Type.Put, "dont-care"),
40 KeyValueTestUtil.create("R1", "cf", "e", 11, KeyValue.Type.Put, "dont-care"),
41 KeyValueTestUtil.create("R1", "cf", "e", 11, KeyValue.Type.DeleteColumn, "dont-care"),
42 KeyValueTestUtil.create("R1", "cf", "f", 11, KeyValue.Type.Put, "dont-care"),
43 KeyValueTestUtil.create("R1", "cf", "g", 11, KeyValue.Type.Put, "dont-care"),
44 KeyValueTestUtil.create("R1", "cf", "g", 11, KeyValue.Type.Delete, "dont-care"),
45 KeyValueTestUtil.create("R1", "cf", "h", 11, KeyValue.Type.Put, "dont-care"),
46 KeyValueTestUtil.create("R1", "cf", "i", 11, KeyValue.Type.Put, "dont-care"),
47 KeyValueTestUtil.create("R2", "cf", "a", 11, KeyValue.Type.Put, "dont-care"),
48 };
49 List<KeyValueScanner> scanners = scanFixture(kvs);
50
51 InternalScanner scan =
52 new MinorCompactingStoreScanner("cf", KeyValue.COMPARATOR, scanners);
53 List<KeyValue> results = new ArrayList<KeyValue>();
54 assertTrue(scan.next(results));
55 assertEquals(11, results.size());
56 assertEquals(kvs[0], results.get(0));
57 assertEquals(kvs[1], results.get(1));
58 assertEquals(kvs[2], results.get(2));
59 assertEquals(kvs[3], results.get(3));
60 assertEquals(kvs[5], results.get(4));
61 assertEquals(kvs[4], results.get(5));
62 assertEquals(kvs[6], results.get(6));
63 assertEquals(kvs[8], results.get(7));
64 assertEquals(kvs[7], results.get(8));
65 assertEquals(kvs[9], results.get(9));
66 assertEquals(kvs[10], results.get(10));
67
68 results.clear();
69 assertFalse(scan.next(results));
70 assertEquals(1, results.size());
71 assertEquals(kvs[kvs.length-1], results.get(0));
72 }
73
74 public void testDeleteVersion() throws IOException {
75 KeyValue[] kvs = new KeyValue[] {
76 KeyValueTestUtil.create("R1", "cf", "a", 15, KeyValue.Type.Put, "dont-care"),
77 KeyValueTestUtil.create("R1", "cf", "a", 10, KeyValue.Type.Delete, "dont-care"),
78 KeyValueTestUtil.create("R1", "cf", "a", 10, KeyValue.Type.Put, "dont-care")
79 };
80 List<KeyValueScanner> scanners = scanFixture(kvs);
81 InternalScanner scan =
82 new MinorCompactingStoreScanner("cf", KeyValue.COMPARATOR, scanners);
83 List<KeyValue> results = new ArrayList<KeyValue>();
84 assertFalse(scan.next(results));
85 assertEquals(3, results.size());
86 assertEquals(kvs[0], results.get(0));
87 assertEquals(kvs[1], results.get(1));
88 assertEquals(kvs[2], results.get(2));
89 }
90 }