@Test public void testSelectFilesToDelete2() { final Configuration config = new DefaultConfiguration(); config.initialize(); // creates the ScriptManager final List<PathWithAttributes> pathList = new ArrayList<>(); pathList.add(new PathWithAttributes(Paths.get("/path/1"), new DummyFileAttributes())); pathList.add(new PathWithAttributes(Paths.get("/path/2"), new DummyFileAttributes())); pathList.add(new PathWithAttributes(Paths.get("/path/3"), new DummyFileAttributes())); final String scriptText = "pathList.remove(1);" // + "pathList;"; final Script script = new Script("test", "javascript", scriptText); final ScriptCondition condition = new ScriptCondition(script, config); final Path base = Paths.get("baseDirectory"); final List<PathWithAttributes> result = condition.selectFilesToDelete(base, pathList); assertSame(result, pathList); assertEquals(2, result.size()); assertEquals(Paths.get("/path/1"), result.get(0).getPath()); assertEquals(Paths.get("/path/3"), result.get(1).getPath()); }
pathList.add(new PathWithAttributes(Paths.get("/path/1/abc/a.txt"), new DummyFileAttributes())); pathList.add(new PathWithAttributes(Paths.get("/path/2/abc/bbb.txt"), new DummyFileAttributes())); pathList.add(new PathWithAttributes(Paths.get("/path/3/abc/c.txt"), new DummyFileAttributes()));
@Test public void testAcceptsIfFileAgeEqualToDuration() { final IfLastModified filter = IfLastModified.createAgeCondition(Duration.parse("PT33S")); final DummyFileAttributes attrs = new DummyFileAttributes(); final long age = 33 * 1000; attrs.lastModified = FileTime.fromMillis(System.currentTimeMillis() - age); assertTrue(filter.accept(null, null, attrs)); }
@Test public void testAcceptsIfFileAgeExceedsDuration() { final IfLastModified filter = IfLastModified.createAgeCondition(Duration.parse("PT33S")); final DummyFileAttributes attrs = new DummyFileAttributes(); final long age = 33 * 1000 + 5; attrs.lastModified = FileTime.fromMillis(System.currentTimeMillis() - age); assertTrue(filter.accept(null, null, attrs)); }
@Test public void testDoesNotAcceptIfFileAgeLessThanDuration() { final IfLastModified filter = IfLastModified.createAgeCondition(Duration.parse("PT33S")); final DummyFileAttributes attrs = new DummyFileAttributes(); final long age = 33 * 1000 - 5; attrs.lastModified = FileTime.fromMillis(System.currentTimeMillis() - age); assertFalse(filter.accept(null, null, attrs)); }
@Test public void testAcceptIfExceedThreshold() { final String[] sizes = {"2KB", "3MB", "4GB"}; for (final String size : sizes) { final IfAccumulatedFileSize condition = IfAccumulatedFileSize.createFileSizeCondition(size); final DummyFileAttributes attribs = new DummyFileAttributes(); attribs.size = condition.getThresholdBytes() + 1; assertTrue(condition.accept(null, null, attribs)); } }
@Test public void testNotAcceptIfBelowThreshold() { final String[] sizes = {"2KB", "3MB", "4GB"}; for (final String size : sizes) { final IfAccumulatedFileSize condition = IfAccumulatedFileSize.createFileSizeCondition(size); final DummyFileAttributes attribs = new DummyFileAttributes(); attribs.size = condition.getThresholdBytes() - 1; assertFalse(condition.accept(null, null, attribs)); } }
@Test public void testNotAcceptOnExactMatch() { final String[] sizes = {"2KB", "3MB", "4GB"}; for (final String size : sizes) { final IfAccumulatedFileSize condition = IfAccumulatedFileSize.createFileSizeCondition(size); final DummyFileAttributes attribs = new DummyFileAttributes(); attribs.size = condition.getThresholdBytes(); assertFalse(condition.accept(null, null, attribs)); } }
@Test public void testAcceptOnceThresholdExceeded() { final DummyFileAttributes attribs = new DummyFileAttributes(); final String[] sizes = {"2KB", "3MB", "4GB"}; for (final String size : sizes) { final IfAccumulatedFileSize condition = IfAccumulatedFileSize.createFileSizeCondition(size); final long quarter = condition.getThresholdBytes() / 4; attribs.size = quarter; assertFalse(condition.accept(null, null, attribs)); assertFalse(condition.accept(null, null, attribs)); assertFalse(condition.accept(null, null, attribs)); assertFalse(condition.accept(null, null, attribs)); assertTrue(condition.accept(null, null, attribs)); } }
@Test public void testCompareRecentLast() { final PathSorter sorter = PathSortByModificationTime.createSorter(false); final Path p1 = Paths.get("aaa"); final Path p2 = Paths.get("bbb"); final DummyFileAttributes a1 = new DummyFileAttributes(); final DummyFileAttributes a2 = new DummyFileAttributes(); a1.lastModified = FileTime.fromMillis(100); a2.lastModified = FileTime.fromMillis(222); assertEquals("same path, 2nd more recent", -1, sorter.compare(path(p1, a1), path(p1, a2))); assertEquals("path ignored, 2nd more recent", -1, sorter.compare(path(p1, a1), path(p2, a2))); assertEquals("path ignored, 2nd more recent", -1, sorter.compare(path(p2, a1), path(p1, a2))); assertEquals("same path, 1st more recent", 1, sorter.compare(path(p1, a2), path(p1, a1))); assertEquals("path ignored, 1st more recent", 1, sorter.compare(path(p1, a2), path(p2, a1))); assertEquals("path ignored, 1st more recent", 1, sorter.compare(path(p2, a2), path(p1, a1))); assertEquals("same path, same time", 0, sorter.compare(path(p1, a1), path(p1, a1))); assertEquals("p1 < p2, same time", -1, sorter.compare(path(p1, a1), path(p2, a1))); assertEquals("p1 < p2, same time", 1, sorter.compare(path(p2, a1), path(p1, a1))); }
@Test public void testCompareRecentFirst() { final PathSorter sorter = PathSortByModificationTime.createSorter(true); final Path p1 = Paths.get("aaa"); final Path p2 = Paths.get("bbb"); final DummyFileAttributes a1 = new DummyFileAttributes(); final DummyFileAttributes a2 = new DummyFileAttributes(); a1.lastModified = FileTime.fromMillis(100); a2.lastModified = FileTime.fromMillis(222); assertEquals("same path, 2nd more recent", 1, sorter.compare(path(p1, a1), path(p1, a2))); assertEquals("path ignored, 2nd more recent", 1, sorter.compare(path(p1, a1), path(p2, a2))); assertEquals("path ignored, 2nd more recent", 1, sorter.compare(path(p2, a1), path(p1, a2))); assertEquals("same path, 1st more recent", -1, sorter.compare(path(p1, a2), path(p1, a1))); assertEquals("path ignored, 1st more recent", -1, sorter.compare(path(p1, a2), path(p2, a1))); assertEquals("path ignored, 1st more recent", -1, sorter.compare(path(p2, a2), path(p1, a1))); assertEquals("same path, same time", 0, sorter.compare(path(p1, a1), path(p1, a1))); assertEquals("p2 < p1, same time", 1, sorter.compare(path(p1, a1), path(p2, a1))); assertEquals("p2 < p1, same time", -1, sorter.compare(path(p2, a1), path(p1, a1))); }
@Test public void testAcceptCallsNestedConditionsOnlyIfPathAccepted() { final CountingCondition counter = new CountingCondition(true); final IfLastModified filter = IfLastModified.createAgeCondition(Duration.parse("PT33S"), counter); final DummyFileAttributes attrs = new DummyFileAttributes(); final long oldEnough = 33 * 1000 + 5; attrs.lastModified = FileTime.fromMillis(System.currentTimeMillis() - oldEnough); assertTrue(filter.accept(null, null, attrs)); assertEquals(1, counter.getAcceptCount()); assertTrue(filter.accept(null, null, attrs)); assertEquals(2, counter.getAcceptCount()); assertTrue(filter.accept(null, null, attrs)); assertEquals(3, counter.getAcceptCount()); final long tooYoung = 33 * 1000 - 5; attrs.lastModified = FileTime.fromMillis(System.currentTimeMillis() - tooYoung); assertFalse(filter.accept(null, null, attrs)); assertEquals(3, counter.getAcceptCount()); // no increase assertFalse(filter.accept(null, null, attrs)); assertEquals(3, counter.getAcceptCount()); assertFalse(filter.accept(null, null, attrs)); assertEquals(3, counter.getAcceptCount()); }
@Test public void testAcceptCallsNestedConditionsOnlyIfPathAccepted() { final CountingCondition counter = new CountingCondition(true); final IfAccumulatedFileSize condition = IfAccumulatedFileSize.createFileSizeCondition("2KB", counter); final DummyFileAttributes attribs = new DummyFileAttributes(); final long quarter = condition.getThresholdBytes() / 4; attribs.size = quarter; assertFalse(condition.accept(null, null, attribs)); assertEquals(0, counter.getAcceptCount()); assertFalse(condition.accept(null, null, attribs)); assertEquals(0, counter.getAcceptCount()); assertFalse(condition.accept(null, null, attribs)); assertEquals(0, counter.getAcceptCount()); assertFalse(condition.accept(null, null, attribs)); assertEquals(0, counter.getAcceptCount()); assertTrue(condition.accept(null, null, attribs)); assertEquals(1, counter.getAcceptCount()); assertTrue(condition.accept(null, null, attribs)); assertEquals(2, counter.getAcceptCount()); }