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 org.apache.commons.logging.Log;
23 import org.apache.commons.logging.LogFactory;
24 import org.apache.hadoop.conf.Configuration;
25 import org.apache.hadoop.hbase.HBaseTestingUtility;
26 import org.apache.hadoop.hbase.HConstants;
27 import org.apache.hadoop.hbase.util.Bytes;
28 import org.junit.AfterClass;
29 import org.junit.BeforeClass;
30 import org.junit.Test;
31
32 import static org.mockito.Mockito.*;
33
34 public class TestMetaScanner {
35 final Log LOG = LogFactory.getLog(getClass());
36 private final static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();
37
38 @BeforeClass
39 public static void setUpBeforeClass() throws Exception {
40 TEST_UTIL.startMiniCluster(1);
41 }
42
43
44
45
46 @AfterClass
47 public static void tearDownAfterClass() throws Exception {
48 TEST_UTIL.shutdownMiniCluster();
49 }
50
51 @Test
52 public void testMetaScanner() throws Exception {
53 LOG.info("Starting testMetaScanner");
54 final byte[] TABLENAME = Bytes.toBytes("testMetaScanner");
55 final byte[] FAMILY = Bytes.toBytes("family");
56 TEST_UTIL.createTable(TABLENAME, FAMILY);
57 Configuration conf = TEST_UTIL.getConfiguration();
58 HTable table = new HTable(conf, TABLENAME);
59 TEST_UTIL.createMultiRegions(conf, table, FAMILY,
60 new byte[][]{
61 HConstants.EMPTY_START_ROW,
62 Bytes.toBytes("region_a"),
63 Bytes.toBytes("region_b")});
64
65 TEST_UTIL.countRows(table);
66
67 MetaScanner.MetaScannerVisitor visitor =
68 mock(MetaScanner.MetaScannerVisitor.class);
69 doReturn(true).when(visitor).processRow((Result)anyObject());
70
71
72 MetaScanner.metaScan(conf, visitor, TABLENAME);
73 verify(visitor, times(3)).processRow((Result)anyObject());
74
75
76
77 reset(visitor);
78 doReturn(true).when(visitor).processRow((Result)anyObject());
79 MetaScanner.metaScan(conf, visitor, TABLENAME, HConstants.EMPTY_BYTE_ARRAY, 1000);
80 verify(visitor, times(3)).processRow((Result)anyObject());
81
82
83
84 reset(visitor);
85 doReturn(true).when(visitor).processRow((Result)anyObject());
86 MetaScanner.metaScan(conf, visitor, TABLENAME, Bytes.toBytes("region_ac"), 1000);
87 verify(visitor, times(2)).processRow((Result)anyObject());
88
89
90 reset(visitor);
91 doReturn(true).when(visitor).processRow((Result)anyObject());
92 MetaScanner.metaScan(conf, visitor, TABLENAME, Bytes.toBytes("region_ac"), 1);
93 verify(visitor, times(1)).processRow((Result)anyObject());
94
95 }
96 }