From 5f559bf4282731412429c7b8cbc4104a9f1b6dff Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Tue, 11 Dec 2018 06:46:42 +0000
Subject: [PATCH] Pruning of expired and oldest files after cache size exceeded works now.
---
borgbutler-core/src/test/java/de/micromata/borgbutler/cache/ArchiveFilelistCacheTest.java | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 50 insertions(+), 9 deletions(-)
diff --git a/borgbutler-core/src/test/java/de/micromata/borgbutler/cache/ArchiveFilelistCacheTest.java b/borgbutler-core/src/test/java/de/micromata/borgbutler/cache/ArchiveFilelistCacheTest.java
index 129a0d2..84ac637 100644
--- a/borgbutler-core/src/test/java/de/micromata/borgbutler/cache/ArchiveFilelistCacheTest.java
+++ b/borgbutler-core/src/test/java/de/micromata/borgbutler/cache/ArchiveFilelistCacheTest.java
@@ -16,8 +16,7 @@
import java.util.ArrayList;
import java.util.List;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.*;
public class ArchiveFilelistCacheTest {
@@ -60,9 +59,9 @@
}
@Test
- void cleanUpTest() throws Exception {
+ void cleanUpMaximumSizeTest() throws Exception {
List<FilesystemItem> list = createList(1000000);
- ArchiveFilelistCache cache = new ArchiveFilelistCache(new File("out"), 5);
+ ArchiveFilelistCache cache = new ArchiveFilelistCache(new File("out"), 3);
cache.removeAllCacheFiles();
BorgRepoConfig repoConfig = new BorgRepoConfig();
repoConfig.setRepo("repo");
@@ -71,14 +70,56 @@
Archive archive = createArchive("2018-11-20");
cache.save(repoConfig, archive, list);
- setLastAccessTime(cache.getFile(repoConfig, archive), millis - 10 * 3600000); // Fake lastAccessTime - 10 h
+ File oldestFile = cache.getFile(repoConfig, archive);
+ setLastModificationTime(oldestFile, millis - 10 * 3600000); // Fake lastModifiedTime - 10 h
archive = createArchive("2018-11-21");
cache.save(repoConfig, archive, list);
- setLastAccessTime(cache.getFile(repoConfig, archive), millis - 60000); // Fake lastAccessTime - 1min
+ File newestFile = cache.getFile(repoConfig, archive);
+ setLastModificationTime(newestFile, millis - 60000); // Fake lastModifiedTime - 1min
+ archive = createArchive("2018-11-22");
cache.save(repoConfig, archive, list);
+ File file = cache.getFile(repoConfig, archive);
+ setLastModificationTime(file, millis - 3600000); // Fake lastModifiedTime - 1 hour
+
+ assertTrue(oldestFile.exists());
+ assertTrue(newestFile.exists());
+ assertTrue(file.exists());
+
cache.cleanUp();
+ assertFalse(oldestFile.exists());
+ assertFalse(file.exists());
+ assertTrue(newestFile.exists());
+ cache.removeAllCacheFiles();
+ }
+
+ @Test
+ void cleanUpExpiredTest() throws Exception {
+ List<FilesystemItem> list = createList(1000);
+ ArchiveFilelistCache cache = new ArchiveFilelistCache(new File("out"), 3);
+ cache.removeAllCacheFiles();
+ BorgRepoConfig repoConfig = new BorgRepoConfig();
+ repoConfig.setRepo("repo");
+
+ long millis = System.currentTimeMillis();
+
+ Archive archive = createArchive("2018-10-20");
+ cache.save(repoConfig, archive, list);
+ File notExpiredFile = cache.getFile(repoConfig, archive);
+ setLastModificationTime(notExpiredFile, millis - 6 * 24 * 3600000); // Fake lastModifiedTime - 10 h
+
+ archive = createArchive("2018-10-21");
+ cache.save(repoConfig, archive, list);
+ File expiredFile = cache.getFile(repoConfig, archive);
+ setLastModificationTime(expiredFile, millis - 8 * 24 * 3600000); // Fake lastModifiedTime - 10 h
+
+ assertTrue(expiredFile.exists());
+ assertTrue(notExpiredFile.exists());
+
+ cache.cleanUp();
+ assertFalse(expiredFile.exists());
+ assertTrue(notExpiredFile.exists());
cache.removeAllCacheFiles();
}
@@ -112,9 +153,9 @@
return archive;
}
- private void setLastAccessTime(File file, long accessTime) throws IOException {
+ private void setLastModificationTime(File file, long lastModificationTime) throws IOException {
Path path = file.toPath();
- FileTime fileTime = FileTime.fromMillis(accessTime);
- Files.setAttribute(path, "lastAccessTime", fileTime);
+ FileTime fileTime = FileTime.fromMillis(lastModificationTime);
+ Files.setAttribute(path, "lastModifiedTime", fileTime);
}
}
--
Gitblit v1.10.0