TomcatClassloadingTest.groovy 1.0 KB

12345678910111213141516171819202122232425262728293031
  1. /*
  2. * Copyright The OpenTelemetry Authors
  3. * SPDX-License-Identifier: Apache-2.0
  4. */
  5. import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification
  6. import org.apache.catalina.WebResource
  7. import org.apache.catalina.WebResourceRoot
  8. import org.apache.catalina.loader.ParallelWebappClassLoader
  9. class TomcatClassloadingTest extends AgentInstrumentationSpecification {
  10. WebResourceRoot resources = Mock(WebResourceRoot) {
  11. getResource(_) >> Mock(WebResource)
  12. listResources(_) >> []
  13. // Looks like 9.x.x needs this one:
  14. getResources(_) >> []
  15. }
  16. ParallelWebappClassLoader classloader = new ParallelWebappClassLoader(null)
  17. def "tomcat class loading delegates to parent for agent classes"() {
  18. setup:
  19. classloader.setResources(resources)
  20. classloader.init()
  21. classloader.start()
  22. expect:
  23. // If instrumentation didn't work this would blow up with NPE due to incomplete resources mocking
  24. classloader.loadClass("io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge")
  25. }
  26. }