summaryrefslogtreecommitdiffstats
path: root/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/filedistribution/CachedFilesMaintainerTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'config-proxy/src/test/java/com/yahoo/vespa/config/proxy/filedistribution/CachedFilesMaintainerTest.java')
-rw-r--r--config-proxy/src/test/java/com/yahoo/vespa/config/proxy/filedistribution/CachedFilesMaintainerTest.java75
1 files changed, 75 insertions, 0 deletions
diff --git a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/filedistribution/CachedFilesMaintainerTest.java b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/filedistribution/CachedFilesMaintainerTest.java
new file mode 100644
index 00000000000..4ac48d23e18
--- /dev/null
+++ b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/filedistribution/CachedFilesMaintainerTest.java
@@ -0,0 +1,75 @@
+// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.config.proxy.filedistribution;
+
+import com.yahoo.io.IOUtils;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+
+import java.io.File;
+import java.io.IOException;
+import java.time.Duration;
+import java.time.Instant;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+/**
+ * @author hmusum
+ */
+public class CachedFilesMaintainerTest {
+
+ private File cachedFileReferences;
+ private File cachedDownloads;
+ private CachedFilesMaintainer cachedFilesMaintainer;
+
+ @Rule
+ public TemporaryFolder tempFolder = new TemporaryFolder();
+
+ @Before
+ public void setup() throws IOException {
+ cachedFileReferences = tempFolder.newFolder();
+ cachedDownloads = tempFolder.newFolder();
+ cachedFilesMaintainer = new CachedFilesMaintainer(cachedFileReferences, cachedDownloads, Duration.ofMinutes(1));
+ }
+
+ @Test
+ public void require_old_files_to_be_deleted() throws IOException {
+ runMaintainerAndAssertFiles(0, 0);
+
+ File fileReference = writeFile(cachedFileReferences, "fileReference");
+ File download = writeFile(cachedDownloads, "download");
+ runMaintainerAndAssertFiles(1, 1);
+
+ updateLastModifiedTimeStamp(fileReference, Instant.now().minus(Duration.ofMinutes(10)));
+ runMaintainerAndAssertFiles(0, 1);
+
+ updateLastModifiedTimeStamp(download, Instant.now().minus(Duration.ofMinutes(10)));
+ runMaintainerAndAssertFiles(0, 0);
+ }
+
+ private void updateLastModifiedTimeStamp(File file, Instant instant) {
+ if (!file.setLastModified(instant.toEpochMilli())) {
+ throw new RuntimeException("Could not set last modified timestamp for '" + file.getAbsolutePath() + "'");
+ }
+ }
+
+ private void runMaintainerAndAssertFiles(int fileReferenceCount, int downloadCount) {
+ cachedFilesMaintainer.run();
+ File[] fileReferences = cachedFileReferences.listFiles();
+ assertNotNull(fileReferences);
+ assertEquals(fileReferenceCount, fileReferences.length);
+
+ File[] downloads = cachedDownloads.listFiles();
+ assertNotNull(downloads);
+ assertEquals(downloadCount, downloads.length);
+ }
+
+ private File writeFile(File directory, String filename) throws IOException {
+ File file = new File(directory, filename);
+ IOUtils.writeFile(file, filename, false);
+ return file;
+ }
+
+}