instrumentation.gradle 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. apply plugin: 'java'
  2. apply plugin: 'com.github.johnrengelman.shadow'
  3. apply from: "$rootDir/gradle/shadow.gradle"
  4. def relocatePackages = ext.relocatePackages
  5. configurations {
  6. testInstrumentation
  7. testAgent
  8. }
  9. dependencies {
  10. compileOnly("io.opentelemetry:opentelemetry-sdk:${versions.opentelemetry}")
  11. compileOnly("io.opentelemetry.javaagent:opentelemetry-javaagent-extension-api:${versions.opentelemetryJavaagentAlpha}")
  12. compileOnly deps.bytebuddy
  13. annotationProcessor deps.autoservice
  14. compileOnly deps.autoservice
  15. // the javaagent that is going to be used when running instrumentation unit tests
  16. testAgent("io.opentelemetry.javaagent:opentelemetry-agent-for-testing:${versions.opentelemetryJavaagentAlpha}")
  17. // test dependencies
  18. testImplementation("io.opentelemetry.javaagent:opentelemetry-testing-common:${versions.opentelemetryJavaagentAlpha}")
  19. testImplementation("io.opentelemetry:opentelemetry-sdk-testing:${versions.opentelemetry}")
  20. testImplementation("org.assertj:assertj-core:3.19.0")
  21. }
  22. shadowJar {
  23. configurations = [project.configurations.runtimeClasspath, project.configurations.testInstrumentation]
  24. mergeServiceFiles()
  25. archiveFileName = 'agent-testing.jar'
  26. relocatePackages(it)
  27. }
  28. tasks.withType(Test).configureEach {
  29. inputs.file(shadowJar.archiveFile)
  30. jvmArgs "-Dotel.javaagent.debug=true"
  31. jvmArgs "-javaagent:${configurations.testAgent.files.first().absolutePath}"
  32. jvmArgs "-Dotel.javaagent.experimental.initializer.jar=${shadowJar.archiveFile.get().asFile.absolutePath}"
  33. jvmArgs "-Dotel.javaagent.testing.additional-library-ignores.enabled=false"
  34. jvmArgs "-Dotel.javaagent.testing.fail-on-context-leak=true"
  35. // prevent sporadic gradle deadlocks, see SafeLogger for more details
  36. jvmArgs "-Dotel.javaagent.testing.transform-safe-logging.enabled=true"
  37. jvmArgs "-Dotel.metrics.exporter=otlp"
  38. dependsOn shadowJar
  39. // The sources are packaged into the testing jar so we need to make sure to exclude from the test
  40. // classpath, which automatically inherits them, to ensure our shaded versions are used.
  41. classpath = classpath.filter {
  42. if (it == file("$buildDir/resources/main") || it == file("$buildDir/classes/java/main")) {
  43. return false
  44. }
  45. return true
  46. }
  47. }