summaryrefslogtreecommitdiffstats
path: root/jdisc_http_service/src/test/java/com/yahoo
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2021-01-19 18:48:50 +0100
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2021-01-20 15:27:58 +0100
commit6dbab1eed12373db1453fa51c43e9f8211158c81 (patch)
tree1553bdc66eb4408d453f7f27fc98ab714b4edbbe /jdisc_http_service/src/test/java/com/yahoo
parente6a93716fffff1878b75c781b2795f3175c6cfc7 (diff)
Support zstd based compression in LogFileHandler
Enable zstd compression for connection log
Diffstat (limited to 'jdisc_http_service/src/test/java/com/yahoo')
-rw-r--r--jdisc_http_service/src/test/java/com/yahoo/container/logging/CompressWhileDrop.java11
-rw-r--r--jdisc_http_service/src/test/java/com/yahoo/container/logging/LogFileHandlerTestCase.java56
2 files changed, 50 insertions, 17 deletions
diff --git a/jdisc_http_service/src/test/java/com/yahoo/container/logging/CompressWhileDrop.java b/jdisc_http_service/src/test/java/com/yahoo/container/logging/CompressWhileDrop.java
deleted file mode 100644
index 2099037203f..00000000000
--- a/jdisc_http_service/src/test/java/com/yahoo/container/logging/CompressWhileDrop.java
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.container.logging;
-
-import java.io.File;
-
-public class CompressWhileDrop {
- public static void main(String [] args) {
- System.out.println("Start compressing file " + args[0]);
- LogFileHandler.runCompression(new File(args[0]));
- }
-}
diff --git a/jdisc_http_service/src/test/java/com/yahoo/container/logging/LogFileHandlerTestCase.java b/jdisc_http_service/src/test/java/com/yahoo/container/logging/LogFileHandlerTestCase.java
index 19c5e69b257..0c9221396b3 100644
--- a/jdisc_http_service/src/test/java/com/yahoo/container/logging/LogFileHandlerTestCase.java
+++ b/jdisc_http_service/src/test/java/com/yahoo/container/logging/LogFileHandlerTestCase.java
@@ -1,6 +1,8 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
+import com.yahoo.compress.ZstdCompressor;
+import com.yahoo.container.logging.LogFileHandler.Compression;
import com.yahoo.io.IOUtils;
import org.junit.Rule;
import org.junit.Test;
@@ -45,7 +47,7 @@ public class LogFileHandlerTestCase {
return ("["+timeStamp+"]" + " " + formatMessage(r) + "\n");
}
};
- LogFileHandler h = new LogFileHandler(false, pattern, rTimes, null, formatter);
+ LogFileHandler h = new LogFileHandler(Compression.NONE, pattern, rTimes, null, formatter);
long now = System.currentTimeMillis();
long millisPerDay = 60*60*24*1000;
long tomorrowDays = (now / millisPerDay) +1;
@@ -66,7 +68,7 @@ public class LogFileHandlerTestCase {
File logFile = temporaryFolder.newFile("testLogFileG1.txt");
//create logfilehandler
- LogFileHandler h = new LogFileHandler(false, logFile.getAbsolutePath(), "0 5 ...", null, new SimpleFormatter());
+ LogFileHandler h = new LogFileHandler(Compression.NONE, logFile.getAbsolutePath(), "0 5 ...", null, new SimpleFormatter());
//write log
LogRecord lr = new LogRecord(Level.INFO, "testDeleteFileFirst1");
@@ -80,7 +82,7 @@ public class LogFileHandlerTestCase {
File logFile = temporaryFolder.newFile("testLogFileG2.txt");
//create logfilehandler
- LogFileHandler h = new LogFileHandler(false, logFile.getAbsolutePath(), "0 5 ...", null, new SimpleFormatter());
+ LogFileHandler h = new LogFileHandler(Compression.NONE, logFile.getAbsolutePath(), "0 5 ...", null, new SimpleFormatter());
//write log
LogRecord lr = new LogRecord(Level.INFO, "testDeleteFileDuringLogging1");
@@ -108,7 +110,7 @@ public class LogFileHandlerTestCase {
}
};
LogFileHandler handler = new LogFileHandler(
- false, root.getAbsolutePath() + "/logfilehandlertest.%Y%m%d%H%M%S%s", new long[]{0}, "symlink", formatter);
+ Compression.NONE, root.getAbsolutePath() + "/logfilehandlertest.%Y%m%d%H%M%S%s", new long[]{0}, "symlink", formatter);
handler.publish(new LogRecord(Level.INFO, "test"));
String firstFile;
@@ -139,7 +141,7 @@ public class LogFileHandlerTestCase {
}
@Test
- public void testcompression() throws InterruptedException, IOException {
+ public void testcompression_gzip() throws InterruptedException, IOException {
File root = temporaryFolder.newFolder("testcompression");
Formatter formatter = new Formatter() {
@@ -149,7 +151,8 @@ public class LogFileHandlerTestCase {
return ("[" + timeStamp + "]" + " " + formatMessage(r) + "\n");
}
};
- LogFileHandler h = new LogFileHandler(true, root.getAbsolutePath() + "/logfilehandlertest.%Y%m%d%H%M%S%s", new long[]{0}, null, formatter);
+ LogFileHandler h = new LogFileHandler(
+ Compression.GZIP, root.getAbsolutePath() + "/logfilehandlertest.%Y%m%d%H%M%S%s", new long[]{0}, null, formatter);
int logEntries = 10000;
for (int i = 0; i < logEntries; i++) {
LogRecord lr = new LogRecord(Level.INFO, "test");
@@ -174,4 +177,45 @@ public class LogFileHandlerTestCase {
h.shutdown();
}
+ @Test
+ public void testcompression_zstd() throws InterruptedException, IOException {
+ File root = temporaryFolder.newFolder("testcompression");
+
+ Formatter formatter = new Formatter() {
+ public String format(LogRecord r) {
+ DateFormat df = new SimpleDateFormat("yyyy.MM.dd:HH:mm:ss.SSS");
+ String timeStamp = df.format(new Date(r.getMillis()));
+ return ("[" + timeStamp + "]" + " " + formatMessage(r) + "\n");
+ }
+ };
+ LogFileHandler h = new LogFileHandler(
+ Compression.ZSTD, root.getAbsolutePath() + "/logfilehandlertest.%Y%m%d%H%M%S%s", new long[]{0}, null, formatter);
+ int logEntries = 10000;
+ for (int i = 0; i < logEntries; i++) {
+ LogRecord lr = new LogRecord(Level.INFO, "test");
+ h.publish(lr);
+ }
+ h.waitDrained();
+ String f1 = h.getFileName();
+ assertThat(f1).startsWith(root.getAbsolutePath() + "/logfilehandlertest.");
+ File uncompressed = new File(f1);
+ File compressed = new File(f1 + ".zst");
+ assertThat(uncompressed).exists();
+ assertThat(compressed).doesNotExist();
+ String content = IOUtils.readFile(uncompressed);
+ assertThat(content).hasLineCount(logEntries);
+ h.rotateNow();
+ while (uncompressed.exists()) {
+ Thread.sleep(1);
+ }
+ assertThat(compressed).exists();
+ ZstdCompressor zstdCompressor = new ZstdCompressor();
+ byte[] uncompressedBytes = new byte[content.getBytes().length];
+ byte[] compressedBytes = Files.readAllBytes(compressed.toPath());
+ zstdCompressor.decompress(compressedBytes, 0, compressedBytes.length, uncompressedBytes, 0, uncompressedBytes.length);
+ String uncompressedContent = new String(uncompressedBytes);
+ assertThat(uncompressedContent).isEqualTo(content);
+ h.shutdown();
+ }
+
}