1 package emissary.output.io;
2
3 import emissary.directory.EmissaryNode;
4 import emissary.test.core.junit5.UnitTest;
5 import emissary.util.io.FileNameGenerator;
6
7 import com.google.common.base.Splitter;
8 import org.apache.commons.lang3.StringUtils;
9 import org.apache.commons.lang3.math.NumberUtils;
10 import org.junit.jupiter.api.Test;
11
12 import java.util.List;
13 import java.util.UUID;
14
15 import static org.junit.jupiter.api.Assertions.assertEquals;
16 import static org.junit.jupiter.api.Assertions.assertNotEquals;
17 import static org.junit.jupiter.api.Assertions.assertTrue;
18
19 class DateFilterFilenameGeneratorTest extends UnitTest {
20
21 private static final String FAKE_FILTER = "fakeFilter";
22 private static final String FAKE_FILTER_DASH = "fake-filter";
23 private static final String FAKE_FILTER_UNDERSCORE = "fake_filter";
24
25 @Test
26 void testDateFilterFilenameGenerator() {
27 FileNameGenerator fileNameGenerator = new DateFilterFilenameGenerator(FAKE_FILTER);
28
29 String filename1 = fileNameGenerator.nextFileName();
30 String filename2 = fileNameGenerator.nextFileName();
31 List<String> filename1Parts = Splitter.onPattern(String.valueOf(DateFilterFilenameGenerator.DELIMITER)).splitToList(filename1);
32
33
34 assertNotEquals(filename1, filename2);
35
36
37 assertTrue(NumberUtils.isDigits(filename1Parts.get(0)));
38 assertEquals(11, filename1Parts.get(0).length());
39
40
41 assertEquals(UUID.fromString(filename1Parts.get(1)).toString(), filename1Parts.get(1));
42
43
44 assertEquals(4, filename1Parts.size());
45 assertEquals(FAKE_FILTER, filename1Parts.get(filename1Parts.size() - 1));
46 }
47
48 @Test
49 void testFilterDelimiterReplacement() {
50 FileNameGenerator fileNameGenerator = new DateFilterFilenameGenerator(FAKE_FILTER_UNDERSCORE);
51 String filename = fileNameGenerator.nextFileName();
52 List<String> filenameParts = Splitter.onPattern(String.valueOf(DateFilterFilenameGenerator.DELIMITER)).splitToList(filename);
53
54 assertNotEquals(FAKE_FILTER_UNDERSCORE, filenameParts.get(3));
55 assertEquals(FAKE_FILTER_DASH, filenameParts.get(3));
56 }
57
58 @Test
59 void testEmptyFilter() {
60 FileNameGenerator fileNameGenerator = new DateFilterFilenameGenerator(StringUtils.EMPTY);
61 String filename = fileNameGenerator.nextFileName();
62 List<String> filenameParts = Splitter.onPattern(String.valueOf(DateFilterFilenameGenerator.DELIMITER)).splitToList(filename);
63
64
65 assertEquals(3, filenameParts.size());
66 assertEquals(System.getProperty(EmissaryNode.NODE_NAME_PROPERTY), filenameParts.get(filenameParts.size() - 1));
67 }
68
69
70 }