Convert internal-url-class-loader javaagent integration tests (#9614)
This commit is contained in:
parent
432dc54de8
commit
19e8530416
|
@ -1,51 +0,0 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification
|
||||
import org.apache.commons.io.IOUtils
|
||||
import org.apache.commons.lang3.SystemUtils
|
||||
|
||||
class AddUrlTest extends AgentInstrumentationSpecification {
|
||||
|
||||
def "should instrument class after it is loaded via addURL"() {
|
||||
given:
|
||||
TestURLClassLoader loader = new TestURLClassLoader()
|
||||
|
||||
when:
|
||||
// this is just to verify the assumption that TestURLClassLoader is not finding SystemUtils via
|
||||
// the test class path (in which case the verification below would not be very meaningful)
|
||||
loader.loadClass(SystemUtils.getName())
|
||||
|
||||
then:
|
||||
thrown ClassNotFoundException
|
||||
|
||||
when:
|
||||
// loading a class in the URLClassLoader in order to trigger
|
||||
// a negative cache hit on org.apache.commons.lang3.SystemUtils
|
||||
loader.addURL(IOUtils.getProtectionDomain().getCodeSource().getLocation())
|
||||
loader.loadClass(IOUtils.getName())
|
||||
|
||||
loader.addURL(SystemUtils.getProtectionDomain().getCodeSource().getLocation())
|
||||
def clazz = loader.loadClass(SystemUtils.getName())
|
||||
|
||||
then:
|
||||
clazz.getClassLoader() == loader
|
||||
clazz.getMethod("getHostName").invoke(null) == "not-the-host-name"
|
||||
}
|
||||
|
||||
static class TestURLClassLoader extends URLClassLoader {
|
||||
|
||||
TestURLClassLoader() {
|
||||
super(new URL[0], (ClassLoader) null)
|
||||
}
|
||||
|
||||
// silence CodeNarc. URLClassLoader#addURL is protected, this method is public
|
||||
@SuppressWarnings("UnnecessaryOverridingMethod")
|
||||
@Override
|
||||
void addURL(URL url) {
|
||||
super.addURL(url)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.catchThrowable;
|
||||
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.commons.lang3.SystemUtils;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class AddUrlTest {
|
||||
|
||||
@Test
|
||||
void testShouldInstrumentClassAfterItIsLoadedViaAddUrl() throws Exception {
|
||||
TestUrlClassLoader loader = new TestUrlClassLoader();
|
||||
|
||||
// this is just to verify the assumption that TestURLClassLoader is not finding SystemUtils via
|
||||
// the test class path (in which case the verification below would not be very meaningful)
|
||||
Throwable thrown =
|
||||
catchThrowable(
|
||||
() -> {
|
||||
loader.loadClass(SystemUtils.class.getName());
|
||||
});
|
||||
|
||||
assertThat(thrown).isInstanceOf(ClassNotFoundException.class);
|
||||
|
||||
// loading a class in the URLClassLoader in order to trigger
|
||||
// a negative cache hit on org.apache.commons.lang3.SystemUtils
|
||||
loader.addURL(IOUtils.class.getProtectionDomain().getCodeSource().getLocation());
|
||||
loader.loadClass(IOUtils.class.getName());
|
||||
|
||||
loader.addURL(SystemUtils.class.getProtectionDomain().getCodeSource().getLocation());
|
||||
Class<?> clazz = loader.loadClass(SystemUtils.class.getName());
|
||||
|
||||
assertThat(clazz.getClassLoader()).isEqualTo(loader);
|
||||
assertThat(clazz.getMethod("getHostName").invoke(null)).isEqualTo("not-the-host-name");
|
||||
}
|
||||
|
||||
static class TestUrlClassLoader extends URLClassLoader {
|
||||
|
||||
TestUrlClassLoader() {
|
||||
super(new URL[0], null);
|
||||
}
|
||||
|
||||
// silence CodeNarc. URLClassLoader#addURL is protected, this method is public
|
||||
@SuppressWarnings("UnnecessaryOverridingMethod")
|
||||
@Override
|
||||
public void addURL(URL url) {
|
||||
super.addURL(url);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue