View Javadoc
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          // Test Uniqueness
34          assertNotEquals(filename1, filename2);
35  
36          // Test that filename starts with date (11 digits)
37          assertTrue(NumberUtils.isDigits(filename1Parts.get(0)));
38          assertEquals(11, filename1Parts.get(0).length());
39  
40          // Test that uuid is valid
41          assertEquals(UUID.fromString(filename1Parts.get(1)).toString(), filename1Parts.get(1));
42  
43          // Test that filename has 4 parts and filter name is present at the end
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          // Only expect 3 parts now and that node name is the last element
65          assertEquals(3, filenameParts.size());
66          assertEquals(System.getProperty(EmissaryNode.NODE_NAME_PROPERTY), filenameParts.get(filenameParts.size() - 1));
67      }
68  
69  
70  }