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.regionserver.wal;
21
22 import static org.junit.Assert.*;
23
24 import java.io.IOException;
25 import java.util.NavigableSet;
26
27 import org.apache.hadoop.fs.FSDataOutputStream;
28 import org.apache.hadoop.fs.FileSystem;
29 import org.apache.hadoop.fs.Path;
30 import org.apache.hadoop.hbase.HBaseTestingUtility;
31 import org.junit.Test;
32
33
34
35
36 public class TestHLogMethods {
37 private final HBaseTestingUtility util = new HBaseTestingUtility();
38
39
40
41
42
43
44 @Test public void testGetSplitEditFilesSorted() throws IOException {
45 FileSystem fs = FileSystem.get(util.getConfiguration());
46 Path regiondir = HBaseTestingUtility.getTestDir("regiondir");
47 fs.delete(regiondir, true);
48 fs.mkdirs(regiondir);
49 Path recoverededits = HLog.getRegionDirRecoveredEditsDir(regiondir);
50 String first = HLog.formatRecoveredEditsFileName(-1);
51 createFile(fs, recoverededits, first);
52 createFile(fs, recoverededits, HLog.formatRecoveredEditsFileName(0));
53 createFile(fs, recoverededits, HLog.formatRecoveredEditsFileName(1));
54 createFile(fs, recoverededits, HLog.formatRecoveredEditsFileName(11));
55 createFile(fs, recoverededits, HLog.formatRecoveredEditsFileName(2));
56 createFile(fs, recoverededits, HLog.formatRecoveredEditsFileName(50));
57 String last = HLog.formatRecoveredEditsFileName(Long.MAX_VALUE);
58 createFile(fs, recoverededits, last);
59 createFile(fs, recoverededits,
60 Long.toString(Long.MAX_VALUE) + "." + System.currentTimeMillis());
61 NavigableSet<Path> files = HLog.getSplitEditFilesSorted(fs, regiondir);
62 assertEquals(7, files.size());
63 assertEquals(files.pollFirst().getName(), first);
64 assertEquals(files.pollLast().getName(), last);
65 assertEquals(files.pollFirst().getName(),
66 HLog.formatRecoveredEditsFileName(0));
67 assertEquals(files.pollFirst().getName(),
68 HLog.formatRecoveredEditsFileName(1));
69 assertEquals(files.pollFirst().getName(),
70 HLog.formatRecoveredEditsFileName(2));
71 assertEquals(files.pollFirst().getName(),
72 HLog.formatRecoveredEditsFileName(11));
73 }
74
75 private void createFile(final FileSystem fs, final Path testdir,
76 final String name)
77 throws IOException {
78 FSDataOutputStream fdos = fs.create(new Path(testdir, name), true);
79 fdos.close();
80 }
81 }