summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorHÃ¥kon Hallingstad <hakon@verizonmedia.com>2019-09-12 14:45:16 +0200
committerGitHub <noreply@github.com>2019-09-12 14:45:16 +0200
commit880aa954e780ca7223d5e17b19c085c689ba9f7a (patch)
treeac5c9287bb2cbd3477269deaa8e543259c2e3e4f /node-admin
parente82b707dcb9c43aeb2439e734d09293d3cd87ed2 (diff)
parent0c12791d35e00e47608fbbfafc1d3e483258b6af (diff)
Merge pull request #10613 from vespa-engine/hakonhall/treat-absent-file-as-an-empty-file-with-line-editing
Treat absent file as an empty file with line editing
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Editor.java9
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/EditorTest.java13
2 files changed, 21 insertions, 1 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Editor.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Editor.java
index bbc3427433b..dff95efe80d 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Editor.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Editor.java
@@ -3,6 +3,7 @@ package com.yahoo.vespa.hosted.node.admin.task.util.file;
import com.yahoo.vespa.hosted.node.admin.component.TaskContext;
+import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
@@ -38,7 +39,13 @@ public class Editor {
*/
public Editor(Path path, LineEditor editor) {
this(path.toString(),
- () -> uncheck(() -> Files.readAllLines(path, ENCODING)),
+ () -> {
+ try {
+ return Files.readAllLines(path, ENCODING);
+ } catch (IOException e) {
+ return List.of();
+ }
+ },
(newLines) -> uncheck(() -> Files.write(path, newLines, ENCODING)),
editor);
}
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/EditorTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/EditorTest.java
index c325a858d7c..3d492c41d0f 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/EditorTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/EditorTest.java
@@ -9,12 +9,14 @@ import org.mockito.ArgumentCaptor;
import java.nio.file.FileSystem;
import java.util.Collections;
+import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.mockingDetails;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -107,6 +109,17 @@ public class EditorTest {
assertEquals("line\n", path.readUtf8File());
}
+ @Test
+ public void testMissingFile() {
+ LineEditor lineEditor = mock(LineEditor.class);
+ when(lineEditor.onComplete()).thenReturn(List.of("line"));
+
+ TaskContext context = mock(TaskContext.class);
+ var editor = new Editor(path.toPath(), lineEditor);
+ editor.converge(context);
+
+ assertEquals("line\n", path.readUtf8File());
+ }
private static String joinLines(String... lines) {
return String.join("\n", lines) + "\n";