Skip to content

Commit 5e1a311

Browse files
authored
Gradle config cache: javaagent-testing (#15352)
1 parent 3f94ec1 commit 5e1a311

File tree

1 file changed

+30
-9
lines changed

1 file changed

+30
-9
lines changed

conventions/src/main/kotlin/io.opentelemetry.instrumentation.javaagent-testing.gradle.kts

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,14 @@ plugins {
66
id("io.opentelemetry.instrumentation.javaagent-shadowing")
77
}
88

9+
val failOnContextLeakProperty = providers.gradleProperty("failOnContextLeak")
10+
.map { it != "false" }
11+
.orElse(true)
12+
13+
val testIndyProperty = providers.gradleProperty("testIndy")
14+
.map { it == "true" }
15+
.orElse(false)
16+
917
val denyUnsafe = gradle.startParameter.projectProperties["denyUnsafe"] == "true"
1018
extra["denyUnsafe"] = denyUnsafe
1119

@@ -74,6 +82,15 @@ class JavaagentTestArgumentsProvider(
7482
@InputFile
7583
@PathSensitive(PathSensitivity.RELATIVE)
7684
val shadowJar: File,
85+
86+
@get:Input
87+
val failOnContextLeak: Boolean,
88+
89+
@get:Input
90+
val testIndy: Boolean,
91+
92+
@get:Input
93+
val denyUnsafe: Boolean,
7794
) : CommandLineArgumentProvider {
7895
override fun asArguments(): Iterable<String> {
7996
val list = mutableListOf(
@@ -83,13 +100,13 @@ class JavaagentTestArgumentsProvider(
83100
"-Dotel.javaagent.testing.javaagent-jar-path=${agentShadowJar.absolutePath}",
84101
"-Dotel.javaagent.experimental.initializer.jar=${shadowJar.absolutePath}",
85102
"-Dotel.javaagent.testing.additional-library-ignores.enabled=false",
86-
"-Dotel.javaagent.testing.fail-on-context-leak=${findProperty("failOnContextLeak") != false}",
103+
"-Dotel.javaagent.testing.fail-on-context-leak=$failOnContextLeak",
87104
// prevent sporadic gradle deadlocks, see SafeLogger for more details
88105
"-Dotel.javaagent.testing.transform-safe-logging.enabled=true",
89106
// Reduce noise in assertion messages since we don't need to verify this in most tests. We check
90107
// in smoke tests instead.
91108
"-Dotel.javaagent.add-thread-details=false",
92-
"-Dotel.javaagent.experimental.indy=${findProperty("testIndy") == "true"}",
109+
"-Dotel.javaagent.experimental.indy=$testIndy",
93110
// suppress repeated logging of "No metric data to export - skipping export."
94111
// since PeriodicMetricReader is configured with a short interval
95112
"-Dio.opentelemetry.javaagent.slf4j.simpleLogger.log.io.opentelemetry.sdk.metrics.export.PeriodicMetricReader=INFO",
@@ -123,22 +140,26 @@ afterEvaluate {
123140
// this dependency.
124141
dependsOn(agentForTesting.buildDependencies)
125142

143+
val failOnContextLeakOverride = failOnContextLeakProperty.get()
144+
val testIndyEnabled = testIndyProperty.get()
145+
126146
jvmArgumentProviders.add(
127147
JavaagentTestArgumentsProvider(
128148
agentShadowJar,
129-
shadowJar.archiveFile.get().asFile
149+
shadowJar.archiveFile.get().asFile,
150+
failOnContextLeakOverride,
151+
testIndyEnabled,
152+
denyUnsafe
130153
)
131154
)
132155

133156
// We do fine-grained filtering of the classpath of this codebase's sources since Gradle's
134157
// configurations will include transitive dependencies as well, which tests do often need.
158+
val mainResourcesDir = project.layout.buildDirectory.dir("resources/main").get().asFile.absoluteFile
159+
val mainClassesDir = project.layout.buildDirectory.dir("classes/java/main").get().asFile.absoluteFile
160+
135161
classpath = classpath.filter {
136-
if (file(layout.buildDirectory.dir("resources/main")).equals(it) || file(
137-
layout.buildDirectory.dir(
138-
"classes/java/main"
139-
)
140-
).equals(it)
141-
) {
162+
if (it.absoluteFile == mainResourcesDir || it.absoluteFile == mainClassesDir) {
142163
// The sources are packaged into the testing jar, so we need to exclude them from the test
143164
// classpath, which automatically inherits them, to ensure our shaded versions are used.
144165
return@filter false

0 commit comments

Comments
 (0)