diff --git a/dd-java-agent/agent-profiling/profiling-uploader/src/test/java/com/datadog/profiling/uploader/ProfileUploaderTest.java b/dd-java-agent/agent-profiling/profiling-uploader/src/test/java/com/datadog/profiling/uploader/ProfileUploaderTest.java index 6b5f5ad7a8c..77bae0a272e 100644 --- a/dd-java-agent/agent-profiling/profiling-uploader/src/test/java/com/datadog/profiling/uploader/ProfileUploaderTest.java +++ b/dd-java-agent/agent-profiling/profiling-uploader/src/test/java/com/datadog/profiling/uploader/ProfileUploaderTest.java @@ -52,6 +52,7 @@ import datadog.trace.relocate.api.IOLogger; import datadog.trace.util.PidHelper; import delight.fileupload.FileUpload; +import io.airlift.compress.zstd.ZstdInputStream; import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -337,7 +338,7 @@ public void testZippedInput() throws Exception { } @ParameterizedTest - @ValueSource(strings = {"on", "lz4", "gzip", "off", "invalid"}) + @ValueSource(strings = {"on", "lz4", "gzip", "zstd", "off", "invalid"}) public void testCompression(final String compression) throws Exception { when(config.getApiKey()).thenReturn(null); when(config.getProfilingUploadCompression()).thenReturn(compression); @@ -372,6 +373,8 @@ public void testCompression(final String compression) throws Exception { byte[] uploadedBytes = rawJfr.get(); if (compression.equals("gzip")) { uploadedBytes = unGzip(uploadedBytes); + } else if (compression.equals("zstd")) { + uploadedBytes = unZstd(uploadedBytes); } else if (compression.equals("on") || compression.equals("lz4") || compression.equals("invalid")) { @@ -895,6 +898,13 @@ private static byte[] unLz4(final byte[] compressed) throws IOException { return result.toByteArray(); } + private static byte[] unZstd(final byte[] compressed) throws IOException { + final InputStream stream = new ZstdInputStream(new ByteArrayInputStream(compressed)); + final ByteArrayOutputStream result = new ByteArrayOutputStream(); + ByteStreams.copy(stream, result); + return result.toByteArray(); + } + private void uploadAndWait(final RecordingType recordingType, final RecordingData data) throws InterruptedException { final CountDownLatch latch = new CountDownLatch(1);