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.client;
21
22 import java.io.IOException;
23 import java.util.Arrays;
24 import java.util.Set;
25
26 import org.apache.hadoop.hbase.SmallTests;
27 import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
28 import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;
29 import org.apache.hadoop.hbase.util.Bytes;
30 import org.junit.Assert;
31 import org.junit.Test;
32 import org.junit.experimental.categories.Category;
33
34
35 @Category(SmallTests.class)
36 public class TestScan {
37 @Test
38 public void testAttributesSerialization() throws IOException {
39 Scan scan = new Scan();
40 scan.setAttribute("attribute1", Bytes.toBytes("value1"));
41 scan.setAttribute("attribute2", Bytes.toBytes("value2"));
42 scan.setAttribute("attribute3", Bytes.toBytes("value3"));
43
44 ClientProtos.Scan scanProto = ProtobufUtil.toScan(scan);
45
46 Scan scan2 = ProtobufUtil.toScan(scanProto);
47
48 Assert.assertNull(scan2.getAttribute("absent"));
49 Assert.assertTrue(Arrays.equals(Bytes.toBytes("value1"), scan2.getAttribute("attribute1")));
50 Assert.assertTrue(Arrays.equals(Bytes.toBytes("value2"), scan2.getAttribute("attribute2")));
51 Assert.assertTrue(Arrays.equals(Bytes.toBytes("value3"), scan2.getAttribute("attribute3")));
52 Assert.assertEquals(3, scan2.getAttributesMap().size());
53 }
54
55 @Test
56 public void testScanAttributes() {
57 Scan scan = new Scan();
58 Assert.assertTrue(scan.getAttributesMap().isEmpty());
59 Assert.assertNull(scan.getAttribute("absent"));
60
61 scan.setAttribute("absent", null);
62 Assert.assertTrue(scan.getAttributesMap().isEmpty());
63 Assert.assertNull(scan.getAttribute("absent"));
64
65
66 scan.setAttribute("attribute1", Bytes.toBytes("value1"));
67 Assert.assertTrue(Arrays.equals(Bytes.toBytes("value1"), scan.getAttribute("attribute1")));
68 Assert.assertEquals(1, scan.getAttributesMap().size());
69 Assert.assertTrue(Arrays.equals(Bytes.toBytes("value1"), scan.getAttributesMap().get("attribute1")));
70
71
72 scan.setAttribute("attribute1", Bytes.toBytes("value12"));
73 Assert.assertTrue(Arrays.equals(Bytes.toBytes("value12"), scan.getAttribute("attribute1")));
74 Assert.assertEquals(1, scan.getAttributesMap().size());
75 Assert.assertTrue(Arrays.equals(Bytes.toBytes("value12"), scan.getAttributesMap().get("attribute1")));
76
77
78 scan.setAttribute("attribute2", Bytes.toBytes("value2"));
79 Assert.assertTrue(Arrays.equals(Bytes.toBytes("value2"), scan.getAttribute("attribute2")));
80 Assert.assertEquals(2, scan.getAttributesMap().size());
81 Assert.assertTrue(Arrays.equals(Bytes.toBytes("value2"), scan.getAttributesMap().get("attribute2")));
82
83
84 scan.setAttribute("attribute2", null);
85 Assert.assertNull(scan.getAttribute("attribute2"));
86 Assert.assertEquals(1, scan.getAttributesMap().size());
87 Assert.assertNull(scan.getAttributesMap().get("attribute2"));
88
89
90 scan.setAttribute("attribute2", null);
91 Assert.assertNull(scan.getAttribute("attribute2"));
92 Assert.assertEquals(1, scan.getAttributesMap().size());
93 Assert.assertNull(scan.getAttributesMap().get("attribute2"));
94
95
96 scan.setAttribute("attribute1", null);
97 Assert.assertNull(scan.getAttribute("attribute1"));
98 Assert.assertTrue(scan.getAttributesMap().isEmpty());
99 Assert.assertNull(scan.getAttributesMap().get("attribute1"));
100 }
101
102 @Test
103 public void testNullQualifier() {
104 Scan scan = new Scan();
105 byte[] family = Bytes.toBytes("family");
106 scan.addColumn(family, null);
107 Set<byte[]> qualifiers = scan.getFamilyMap().get(family);
108 Assert.assertEquals(1, qualifiers.size());
109 }
110 }
111