1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.hadoop.hbase.regionserver;
19
20 import static org.junit.Assert.assertEquals;
21 import static org.junit.Assert.assertFalse;
22 import static org.junit.Assert.assertTrue;
23 import static org.mockito.Mockito.doReturn;
24 import static org.mockito.Mockito.mock;
25 import org.apache.hadoop.conf.Configuration;
26 import org.apache.hadoop.hbase.HRegionInfo;
27 import org.apache.hadoop.hbase.TableName;
28 import org.apache.hadoop.hbase.testclassification.SmallTests;
29 import org.apache.hadoop.hbase.util.Threads;
30 import org.junit.Before;
31 import org.junit.Test;
32 import org.junit.experimental.categories.Category;
33
34 @Category(SmallTests.class)
35 public class TestMemStoreFlusher {
36 private MemStoreFlusher msf;
37
38 @Before
39 public void setUp() throws Exception {
40 Configuration conf = new Configuration();
41 conf.set("hbase.hstore.flusher.count", "0");
42 msf = new MemStoreFlusher(conf, null);
43 }
44
45 @Test
46 public void testReplaceDelayedFlushEntry() {
47 HRegionInfo hri = new HRegionInfo(1, TableName.valueOf("TestTable"), 0);
48 HRegion r = mock(HRegion.class);
49 doReturn(hri).when(r).getRegionInfo();
50
51
52 msf.requestDelayedFlush(r, 30000, false);
53 assertEquals(1, msf.getFlushQueueSize());
54 assertTrue(msf.regionsInQueue.get(r).isDelay());
55
56
57 assertTrue(msf.requestFlush(r, false));
58 assertEquals(1, msf.getFlushQueueSize());
59 assertFalse(msf.regionsInQueue.get(r).isDelay());
60 }
61
62 @Test
63 public void testNotReplaceDelayedFlushEntryWhichExpired() {
64 HRegionInfo hri = new HRegionInfo(1, TableName.valueOf("TestTable"), 0);
65 HRegion r = mock(HRegion.class);
66 doReturn(hri).when(r).getRegionInfo();
67
68
69 msf.requestDelayedFlush(r, 100, false);
70 assertEquals(1, msf.getFlushQueueSize());
71 assertTrue(msf.regionsInQueue.get(r).isDelay());
72
73 Threads.sleep(200);
74
75
76 assertFalse(msf.requestFlush(r, false));
77 assertEquals(1, msf.getFlushQueueSize());
78 assertTrue(msf.regionsInQueue.get(r).isDelay());
79 }
80 }