From 9b347b643cb36c30c0df705bf821e065dbc02658 Mon Sep 17 00:00:00 2001 From: Brice Dutheil Date: Fri, 26 Sep 2025 17:22:48 +0200 Subject: [PATCH 1/2] fix: wildfly-9.0 configuration was eager and misplaced The copy task was using the build directory as output which made all tasks depend on it. --- .../instrumentation/wildfly-9.0/build.gradle | 81 ++++++++++++------- 1 file changed, 50 insertions(+), 31 deletions(-) diff --git a/dd-java-agent/instrumentation/wildfly-9.0/build.gradle b/dd-java-agent/instrumentation/wildfly-9.0/build.gradle index e37c0cc74c3..9c4cb5e0555 100644 --- a/dd-java-agent/instrumentation/wildfly-9.0/build.gradle +++ b/dd-java-agent/instrumentation/wildfly-9.0/build.gradle @@ -1,3 +1,5 @@ +import org.gradle.internal.component.external.model.ModuleComponentArtifactIdentifier + ext { minJavaVersionForTests = JavaVersion.VERSION_11 latestDepTestMinJavaVersionForTests = JavaVersion.VERSION_17 @@ -53,53 +55,49 @@ dependencies { latestDepTestImplementation group: 'org.wildfly.core', name: 'wildfly-server', version: '+' wildflyLatestDepTest "org.wildfly:wildfly-dist:+@zip" - configurations.wildflyLatestDepTest.resolve() - def latestWildflyVersion = configurations.wildflyLatestDepTest.resolvedConfiguration.getResolvedArtifacts().find { - it.name == "wildfly-dist" - }.moduleVersion.id.version - - latestDepForkedTest { - configure { - jvmArgs += ["-Dtest.jboss.home=$buildDir/wildfly-${latestWildflyVersion}"] - } - } - latestDepTestRuntimeOnly project(':dd-java-agent:instrumentation:servlet:request-5') } -def extractWildfly(config, zipFileNamePrefix, sync) { - delete(fileTree(buildDir).include("wildfly-*/standalone/deployments/**")) - - def zipPath = config.find { - it.name.startsWith(zipFileNamePrefix) +def extractWildfly(NamedDomainObjectProvider config, String zipFileNamePrefix, Copy sync) { + def zipPath = config.map { Configuration c -> + c.filter { File file -> + file.name.startsWith(zipFileNamePrefix) + }.singleFile + }.orElse(providers.provider { throw new GradleException("Can't find server zip file that starts with: " + zipFileNamePrefix) }) + + sync.from(zipTree(zipPath)) { + // Strip the first path segment + eachFile { FileCopyDetails f -> + def segments = f.relativePath.segments + if (segments.length > 1) { + f.relativePath = new RelativePath(!f.directory, segments[1..-1] as String[]) + } else { + f.exclude() + } + } } - if (zipPath != null) { - def zipFile = file(zipPath) - def outputDir = file("${buildDir}") - - sync.from zipTree(zipFile) - sync.into outputDir - } else { - throw new GradleException("Can't find server zip file that starts with: " + zipFileNamePrefix) + sync.into(layout.buildDirectory.dir("tmp/wildfly-dist-${config.name}")) + sync.doFirst { + delete(sync.destinationDir) } } -tasks.register("extractWildfly", Copy) { +def extractWildflyTask = tasks.register("extractWildfly", Copy) { dependsOn configurations.wildflyTest mustRunAfter tasks.compileTestGroovy - extractWildfly(configurations.wildflyTest, "wildfly-dist", it) + extractWildfly(configurations.named("wildflyTest"), "wildfly-dist", it) // When tests are disabled this would still be run, so disable this manually onlyIf { !project.rootProject.hasProperty("skipTests") } } -tasks.register("extractLatestWildfly", Copy) { +def extractLatestWildfly = tasks.register("extractLatestWildfly", Copy) { mustRunAfter tasks.compileLatestDepTestGroovy mustRunAfter tasks.compileLatestDepForkedTestGroovy mustRunAfter tasks.compileLatestDepTestJava mustRunAfter tasks.compileLatestDepForkedTestJava mustRunAfter tasks.compileJava - extractWildfly(configurations.wildflyLatestDepTest, "wildfly", it) + extractWildfly(configurations.named("wildflyLatestDepTest"), "wildfly", it) // When tests are disabled this would still be run, so disable this manually onlyIf { !project.rootProject.hasProperty("skipTests") } @@ -163,10 +161,31 @@ processTestResources { } } -forkedTest { - configure { - jvmArgs += ["-Dtest.jboss.home=$buildDir/wildfly-21.0.0.Final"] +abstract class DistributionLocationProvider implements CommandLineArgumentProvider { + @InputDirectory + @PathSensitive(PathSensitivity.RELATIVE) + abstract Property getDistribution() + + @Override + Iterable asArguments() { + ["-Dtest.jboss.home=${distribution.get()}"] } } +tasks.named("forkedTest", Test) { + jvmArgumentProviders.add( + objects.newInstance(DistributionLocationProvider).tap { + distribution = extractWildflyTask.map { it.destinationDir } + } + ) +} + +tasks.named("latestDepForkedTest", Test) { + jvmArgumentProviders.add( + objects.newInstance(DistributionLocationProvider).tap { + distribution = extractLatestWildfly.map { it.destinationDir } + } + ) +} + From 5a6dc7aac6f1eae4e4cf105eab97424b069f23f1 Mon Sep 17 00:00:00 2001 From: Brice Dutheil Date: Sat, 27 Sep 2025 11:31:08 +0200 Subject: [PATCH 2/2] chore: touch