summaryrefslogtreecommitdiffstats
path: root/container-core
diff options
context:
space:
mode:
authorOla Aunrønning <ola.aunroe@gmail.com>2018-09-13 16:04:22 +0200
committerOla Aunrønning <ola.aunroe@gmail.com>2018-09-18 10:27:33 +0200
commit96427331aa1d61eed9a2a0ef5999100b43e30282 (patch)
treea59faf4ffa44d8d09e70ef0e80cb80dcbd79508a /container-core
parenteb05c7a5b60ccf448b59038d7416c67f6aa68958 (diff)
filter number of logs
Diffstat (limited to 'container-core')
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/LogHandler.java9
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/LogReader.java32
-rw-r--r--container-core/src/test/java/com/yahoo/container/handler/LogReaderTest.java3
3 files changed, 39 insertions, 5 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/handler/LogHandler.java b/container-core/src/main/java/com/yahoo/container/handler/LogHandler.java
index 4183b642af1..a6918ed0442 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/LogHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/LogHandler.java
@@ -24,9 +24,16 @@ public class LogHandler extends ThreadedHttpRequestHandler {
@Override
public HttpResponse handle(HttpRequest request) {
JSONObject logJson;
+ LogReader logReader;
try {
- logJson = LogReader.readLogs(LOG_DIRECTORY);
+ if (request.hasProperty("numberOfLogs")) {
+ int numberOfLogs = (Integer.valueOf(request.getProperty("numberOfLogs")));
+ logReader = new LogReader(numberOfLogs);
+ } else {
+ logReader = new LogReader();
+ }
+ logJson = logReader.readLogs(LOG_DIRECTORY);
} catch (IOException | JSONException e) {
return new HttpResponse(404) {
@Override
diff --git a/container-core/src/main/java/com/yahoo/container/handler/LogReader.java b/container-core/src/main/java/com/yahoo/container/handler/LogReader.java
index eb00446dd0e..9ac40158e07 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/LogReader.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/LogReader.java
@@ -7,21 +7,42 @@ import javax.xml.bind.DatatypeConverter;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
+import java.util.Arrays;
+import java.util.Comparator;
public class LogReader {
- protected static JSONObject readLogs(String logDirectory) throws IOException, JSONException {
+ int numberOfLogs;
+
+ public LogReader() {
+ this.numberOfLogs = -1;
+ }
+
+ public LogReader(int numberOfLogs) {
+ this.numberOfLogs = numberOfLogs;
+ }
+
+ protected JSONObject readLogs(String logDirectory) throws IOException, JSONException {
JSONObject json = new JSONObject();
File root = new File(logDirectory);
traverse_folder(root, json);
return json;
}
- private static void traverse_folder(File root, JSONObject json) throws IOException, JSONException {
- for(File child : root.listFiles()) {
+ private void traverse_folder(File root, JSONObject json) throws IOException, JSONException {
+ File[] files = root.listFiles();
+ Arrays.sort(files,new Comparator<File>(){
+ public int compare(File f1, File f2)
+ {
+ return Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
+ } });
+ Arrays.sort(files, Comparator.reverseOrder());
+ for(File child : files) {
+ if (numberOfLogs == 0) return;
JSONObject childJson = new JSONObject();
if(child.isFile()) {
json.put(child.getName(), DatatypeConverter.printBase64Binary(Files.readAllBytes(child.toPath())));
+ decrementLogNumber();
}
else {
json.put(child.getName(), childJson);
@@ -29,4 +50,9 @@ public class LogReader {
}
}
}
+
+ private void decrementLogNumber() {
+ numberOfLogs -= 1;
+ }
+
}
diff --git a/container-core/src/test/java/com/yahoo/container/handler/LogReaderTest.java b/container-core/src/test/java/com/yahoo/container/handler/LogReaderTest.java
index e5302ee43ee..aaa58a5004c 100644
--- a/container-core/src/test/java/com/yahoo/container/handler/LogReaderTest.java
+++ b/container-core/src/test/java/com/yahoo/container/handler/LogReaderTest.java
@@ -20,7 +20,8 @@ public class LogReaderTest {
@Test
public void testThatFilesAreWrittenCorrectlyToOutputStream() throws Exception{
String logDirectory = "src/test/resources/logfolder/";
- JSONObject json = LogReader.readLogs(logDirectory);
+ LogReader logReader = new LogReader(2);
+ JSONObject json = logReader.readLogs(logDirectory);
String expected = "{\"subfolder\":{\"log2.log\":\"VGhpcyBpcyBhbm90aGVyIGxvZyBmaWxl\"},\"log1.log\":\"VGhpcyBpcyBvbmUgbG9nIGZpbGU=\"}";
String actual = json.toString();
assertEquals(expected, actual);