From c41536cbe20939e585835c94ba433676293e3bbd Mon Sep 17 00:00:00 2001 From: Laplie Anderson Date: Tue, 30 Jul 2019 15:27:47 -0400 Subject: [PATCH] Fix failing tests Add TracingAgent to list of bootstrap class Fix renaming tests Fix JMXFetch path splitting --- .../trace/bootstrap/DatadogClassLoader.java | 2 +- .../datadog/trace/agent/jmxfetch/JMXFetch.java | 10 +++++++++- .../datadog/trace/agent/tooling/Constants.java | 1 + .../ShadowPackageRenamingTest.groovy | 16 ++++++++-------- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/DatadogClassLoader.java b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/DatadogClassLoader.java index 7ef4b70725..e5fe304413 100644 --- a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/DatadogClassLoader.java +++ b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/DatadogClassLoader.java @@ -105,7 +105,7 @@ public class DatadogClassLoader extends URLClassLoader { } public BootstrapClassLoaderProxy(final URL[] urls) { - super(urls); + super(urls, null); } @Override diff --git a/dd-java-agent/agent-jmxfetch/src/main/java/datadog/trace/agent/jmxfetch/JMXFetch.java b/dd-java-agent/agent-jmxfetch/src/main/java/datadog/trace/agent/jmxfetch/JMXFetch.java index b432aba41b..ad0c948e58 100644 --- a/dd-java-agent/agent-jmxfetch/src/main/java/datadog/trace/agent/jmxfetch/JMXFetch.java +++ b/dd-java-agent/agent-jmxfetch/src/main/java/datadog/trace/agent/jmxfetch/JMXFetch.java @@ -155,7 +155,15 @@ public class JMXFetch { integrationName.add(config.replace(".yaml", "")); if (Config.get().isJmxFetchIntegrationEnabled(integrationName, false)) { final URL resource = JMXFetch.class.getResource("metricconfigs/" + config); - result.add(resource.getPath().split("\\.jar!/")[1]); + + // jar!/ means a file internal to a jar, only add the part after if it exists + final String path = resource.getPath(); + final int filenameIndex = path.indexOf("jar!/"); + if (filenameIndex != -1) { + result.add(path.substring(filenameIndex + 5)); + } else { + result.add(path.substring(1)); + } } } return result; diff --git a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/Constants.java b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/Constants.java index d92b11ad72..112057cc77 100644 --- a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/Constants.java +++ b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/Constants.java @@ -14,6 +14,7 @@ public final class Constants { */ public static final String[] BOOTSTRAP_PACKAGE_PREFIXES = { "datadog.slf4j", + "datadog.trace.agent.TracingAgent", "datadog.trace.api", "datadog.trace.bootstrap", "datadog.trace.context", diff --git a/dd-java-agent/src/test/groovy/datadog/trace/agent/integration/classloading/ShadowPackageRenamingTest.groovy b/dd-java-agent/src/test/groovy/datadog/trace/agent/integration/classloading/ShadowPackageRenamingTest.groovy index a87a22723b..1ba97d5655 100644 --- a/dd-java-agent/src/test/groovy/datadog/trace/agent/integration/classloading/ShadowPackageRenamingTest.groovy +++ b/dd-java-agent/src/test/groovy/datadog/trace/agent/integration/classloading/ShadowPackageRenamingTest.groovy @@ -14,23 +14,23 @@ class ShadowPackageRenamingTest extends Specification { final Class ddClass = IntegrationTestUtils.getAgentClassLoader() .loadClass("datadog.trace.agent.tooling.AgentInstaller") - final String userGuava = - MapMaker.getProtectionDomain().getCodeSource().getLocation().getFile() - final String agentGuavaDep = + final URL userGuava = + MapMaker.getProtectionDomain().getCodeSource().getLocation() + final URL agentGuavaDep = ddClass .getClassLoader() .loadClass("com.google.common.collect.MapMaker") .getProtectionDomain() .getCodeSource() .getLocation() - .getFile() - final String agentSource = - ddClass.getProtectionDomain().getCodeSource().getLocation().getFile() + final URL agentSource = + ddClass.getProtectionDomain().getCodeSource().getLocation() expect: - agentSource.matches(".*/agent-tooling-and-instrumentation[^/]*.jar") + agentSource.getFile() == "/" + agentSource.getProtocol() == "x-internal-jar" agentSource == agentGuavaDep - agentSource != userGuava + agentSource.getFile() != userGuava.getFile() } def "java getLogger rewritten to safe logger"() {