From ced2212f46e87033e7034d9e09d8163e1cfdb496 Mon Sep 17 00:00:00 2001 From: Brice Dutheil Date: Thu, 18 Sep 2025 16:14:12 +0200 Subject: [PATCH 1/3] fix: Makes writing the test jar buffered --- .../datadog/trace/agent/test/utils/ClasspathUtils.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/utils/ClasspathUtils.java b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/utils/ClasspathUtils.java index 30cd4104029..f4c23b26ff3 100644 --- a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/utils/ClasspathUtils.java +++ b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/utils/ClasspathUtils.java @@ -2,6 +2,7 @@ import static datadog.trace.util.Strings.getResourceName; +import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; @@ -9,6 +10,7 @@ import java.io.InputStream; import java.lang.reflect.Method; import java.net.URL; +import java.nio.file.Files; import java.util.UUID; import java.util.jar.JarEntry; import java.util.jar.JarOutputStream; @@ -56,7 +58,10 @@ public static URL createJarWithClasses(final ClassLoader loader, final String... final Manifest manifest = new Manifest(); try (final JarOutputStream target = - new JarOutputStream(new FileOutputStream(tmpJar), manifest)) { + new JarOutputStream( + new BufferedOutputStream(Files.newOutputStream(tmpJar.toPath())), + manifest + )) { for (final String resourceName : resourceNames) { try (InputStream is = loader.getResourceAsStream(resourceName)) { if (is != null) { From 290e3c84a91d9c41b65f354924691f2535d691b8 Mon Sep 17 00:00:00 2001 From: Brice Dutheil Date: Thu, 18 Sep 2025 16:21:09 +0200 Subject: [PATCH 2/3] chore: Makes google-format happy --- .../groovy/datadog/trace/agent/test/utils/ClasspathUtils.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/utils/ClasspathUtils.java b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/utils/ClasspathUtils.java index f4c23b26ff3..69fc8421935 100644 --- a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/utils/ClasspathUtils.java +++ b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/utils/ClasspathUtils.java @@ -59,9 +59,7 @@ public static URL createJarWithClasses(final ClassLoader loader, final String... final Manifest manifest = new Manifest(); try (final JarOutputStream target = new JarOutputStream( - new BufferedOutputStream(Files.newOutputStream(tmpJar.toPath())), - manifest - )) { + new BufferedOutputStream(Files.newOutputStream(tmpJar.toPath())), manifest)) { for (final String resourceName : resourceNames) { try (InputStream is = loader.getResourceAsStream(resourceName)) { if (is != null) { From 988561adfb5b8a7eb079b0797c8a83215cb3e627 Mon Sep 17 00:00:00 2001 From: Brice Dutheil Date: Thu, 18 Sep 2025 16:28:15 +0200 Subject: [PATCH 3/3] chore: Additional fixes --- .../agent/test/utils/ClasspathUtils.java | 21 ++++++------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/utils/ClasspathUtils.java b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/utils/ClasspathUtils.java index 69fc8421935..9b3f42adae2 100644 --- a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/utils/ClasspathUtils.java +++ b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/utils/ClasspathUtils.java @@ -5,7 +5,6 @@ import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream; import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Method; @@ -30,14 +29,9 @@ public static byte[] convertToByteArray(final InputStream resource) throws IOExc } public static byte[] convertToByteArray(final Class clazz) throws IOException { - InputStream inputStream = null; - try { - inputStream = clazz.getClassLoader().getResourceAsStream(getResourceName(clazz.getName())); + try (InputStream inputStream = + clazz.getClassLoader().getResourceAsStream(getResourceName(clazz.getName()))) { return convertToByteArray(inputStream); - } finally { - if (inputStream != null) { - inputStream.close(); - } } } @@ -82,11 +76,13 @@ public static URL createJarWithClasses(final ClassLoader loader, final String... * @throws IOException */ public static URL createJarWithClasses(final Class... classes) throws IOException { - final File tmpJar = File.createTempFile(UUID.randomUUID().toString() + "", ".jar"); + final File tmpJar = File.createTempFile(UUID.randomUUID().toString(), ".jar"); tmpJar.deleteOnExit(); final Manifest manifest = new Manifest(); - final JarOutputStream target = new JarOutputStream(new FileOutputStream(tmpJar), manifest); + final JarOutputStream target = + new JarOutputStream( + new BufferedOutputStream(Files.newOutputStream(tmpJar.toPath())), manifest); for (final Class clazz : classes) { addToJar(getResourceName(clazz.getName()), convertToByteArray(clazz), target); } @@ -95,11 +91,6 @@ public static URL createJarWithClasses(final Class... classes) throws IOExcep return tmpJar.toURI().toURL(); } - public static URL createJarWithClasses() { - - return null; - } - private static void addToJar( final String resourceName, final byte[] bytes, final JarOutputStream jarOutputStream) throws IOException {