From 2c742aee4e6c920101484f5fc2405eeae1a6caf6 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Mon, 6 Oct 2025 11:41:50 +0200 Subject: [PATCH 01/12] wip # Conflicts: # dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/build.gradle --- .../jetty-server-10.0/build.gradle | 222 ++++++++++++++++++ .../jetty10/DispatchableAdvice.java | 0 .../jetty10/DispatchableInstrumentation.java | 0 .../jetty10/ExtractAdapter.java | 0 .../instrumentation/jetty10/HandleAdvice.java | 0 .../jetty10/HandleExceptionAdvice.java | 0 .../jetty10/JettyCommitResponseHelper.java | 0 .../JettyCommitResponseInstrumentation.java | 0 .../jetty10/JettyDecorator.java | 0 .../jetty10/JettyOnCommitBlockingHelper.java | 0 .../jetty10/JettyServerInstrumentation.java | 0 .../jetty10/RequestInstrumentation.java | 0 .../instrumentation/jetty10/ResetAdvice.java | 0 .../jetty10/SendResponseCbAdvice.java | 0 .../jetty10/ServerHandleAdvice.java | 0 .../jetty10/ServerHandleInstrumentation.java | 0 .../jetty10/SetContextPathAdvice.java | 0 .../jetty10/SetRequestedSessionIdAdvice.java | 0 .../jetty10/SetServletPathAdvice.java | 0 .../jetty9/Jetty9InactiveAppSecTest.groovy | 12 + .../instrumentation/jetty9/Jetty9Test.groovy | 107 +++++++++ .../JettyContinuationHandlerTest.groovy | 98 ++++++++ .../jetty-server-9.0.4/build.gradle | 56 +++++ .../jetty904/JettyCommitResponseHelper.java | 0 .../JettyCommitResponseInstrumentation.java | 5 - .../jetty904/JettyOnCommitBlockingHelper.java | 0 .../jetty904/SendResponseCbAdvice.java | 0 .../jetty9/Jetty9InactiveAppSecTest.groovy | 12 + .../instrumentation/jetty9/Jetty9Test.groovy | 103 ++++++++ .../JettyContinuationHandlerTest.groovy | 100 ++++++++ .../jetty-server-9.0/build.gradle | 174 -------------- .../JettyCommitResponseInstrumentation.java | 5 - .../instrumentation/jetty9/Jetty9Test.groovy | 9 +- .../jetty-server-9.3/build.gradle | 122 ++++++++++ .../jetty93/JettyCommitResponseHelper.java | 0 .../JettyCommitResponseInstrumentation.java | 5 - .../jetty93/JettyOnCommitBlockingHelper.java | 0 .../jetty93/SendResponseCbAdvice.java | 0 .../jetty9/Jetty9InactiveAppSecTest.groovy | 12 + .../instrumentation/jetty9/Jetty9Test.groovy | 107 +++++++++ .../JettyContinuationHandlerTest.groovy | 98 ++++++++ .../jetty-server-9.4.21/build.gradle | 222 ++++++++++++++++++ .../jetty9421/JettyCommitResponseHelper.java | 0 .../JettyCommitResponseInstrumentation.java | 0 .../JettyOnCommitBlockingHelper.java | 0 .../jetty9421/SendResponseCbAdvice.java | 0 .../jetty9/Jetty9InactiveAppSecTest.groovy | 12 + .../instrumentation/jetty9/Jetty9Test.groovy | 107 +++++++++ .../JettyContinuationHandlerTest.groovy | 98 ++++++++ settings.gradle.kts | 1 + 50 files changed, 1491 insertions(+), 196 deletions(-) create mode 100644 dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/build.gradle rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0/src/main/java_jetty10 => jetty-server-10.0/src/main/java}/datadog/trace/instrumentation/jetty10/DispatchableAdvice.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0 => jetty-server-10.0}/src/main/java/datadog/trace/instrumentation/jetty10/DispatchableInstrumentation.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0/src/main/java_jetty10 => jetty-server-10.0/src/main/java}/datadog/trace/instrumentation/jetty10/ExtractAdapter.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0/src/main/java_jetty10 => jetty-server-10.0/src/main/java}/datadog/trace/instrumentation/jetty10/HandleAdvice.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0/src/main/java_jetty10 => jetty-server-10.0/src/main/java}/datadog/trace/instrumentation/jetty10/HandleExceptionAdvice.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0/src/main/java_jetty10 => jetty-server-10.0/src/main/java}/datadog/trace/instrumentation/jetty10/JettyCommitResponseHelper.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0 => jetty-server-10.0}/src/main/java/datadog/trace/instrumentation/jetty10/JettyCommitResponseInstrumentation.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0/src/main/java_jetty10 => jetty-server-10.0/src/main/java}/datadog/trace/instrumentation/jetty10/JettyDecorator.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0/src/main/java_jetty10 => jetty-server-10.0/src/main/java}/datadog/trace/instrumentation/jetty10/JettyOnCommitBlockingHelper.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0 => jetty-server-10.0}/src/main/java/datadog/trace/instrumentation/jetty10/JettyServerInstrumentation.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0 => jetty-server-10.0}/src/main/java/datadog/trace/instrumentation/jetty10/RequestInstrumentation.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0/src/main/java_jetty10 => jetty-server-10.0/src/main/java}/datadog/trace/instrumentation/jetty10/ResetAdvice.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0/src/main/java_jetty10 => jetty-server-10.0/src/main/java}/datadog/trace/instrumentation/jetty10/SendResponseCbAdvice.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0/src/main/java_jetty10 => jetty-server-10.0/src/main/java}/datadog/trace/instrumentation/jetty10/ServerHandleAdvice.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0 => jetty-server-10.0}/src/main/java/datadog/trace/instrumentation/jetty10/ServerHandleInstrumentation.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0/src/main/java_jetty10 => jetty-server-10.0/src/main/java}/datadog/trace/instrumentation/jetty10/SetContextPathAdvice.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0/src/main/java_jetty10 => jetty-server-10.0/src/main/java}/datadog/trace/instrumentation/jetty10/SetRequestedSessionIdAdvice.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0/src/main/java_jetty10 => jetty-server-10.0/src/main/java}/datadog/trace/instrumentation/jetty10/SetServletPathAdvice.java (100%) create mode 100644 dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9InactiveAppSecTest.groovy create mode 100644 dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy create mode 100644 dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty9/JettyContinuationHandlerTest.groovy create mode 100644 dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/build.gradle rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0/src/main/java_jetty904 => jetty-server-9.0.4/src/main/java}/datadog/trace/instrumentation/jetty904/JettyCommitResponseHelper.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0 => jetty-server-9.0.4}/src/main/java/datadog/trace/instrumentation/jetty904/JettyCommitResponseInstrumentation.java (97%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0/src/main/java_jetty904 => jetty-server-9.0.4/src/main/java}/datadog/trace/instrumentation/jetty904/JettyOnCommitBlockingHelper.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0/src/main/java_jetty904 => jetty-server-9.0.4/src/main/java}/datadog/trace/instrumentation/jetty904/SendResponseCbAdvice.java (100%) create mode 100644 dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9InactiveAppSecTest.groovy create mode 100644 dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy create mode 100644 dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/test/groovy/datadog/trace/instrumentation/jetty9/JettyContinuationHandlerTest.groovy create mode 100644 dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/build.gradle rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0/src/main/java_jetty93 => jetty-server-9.3/src/main/java}/datadog/trace/instrumentation/jetty93/JettyCommitResponseHelper.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0 => jetty-server-9.3}/src/main/java/datadog/trace/instrumentation/jetty93/JettyCommitResponseInstrumentation.java (97%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0/src/main/java_jetty93 => jetty-server-9.3/src/main/java}/datadog/trace/instrumentation/jetty93/JettyOnCommitBlockingHelper.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0/src/main/java_jetty93 => jetty-server-9.3/src/main/java}/datadog/trace/instrumentation/jetty93/SendResponseCbAdvice.java (100%) create mode 100644 dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9InactiveAppSecTest.groovy create mode 100644 dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy create mode 100644 dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/test/groovy/datadog/trace/instrumentation/jetty9/JettyContinuationHandlerTest.groovy create mode 100644 dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/build.gradle rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0/src/main/java_jetty9421 => jetty-server-9.4.21/src/main/java}/datadog/trace/instrumentation/jetty9421/JettyCommitResponseHelper.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0 => jetty-server-9.4.21}/src/main/java/datadog/trace/instrumentation/jetty9421/JettyCommitResponseInstrumentation.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0/src/main/java_jetty9421 => jetty-server-9.4.21/src/main/java}/datadog/trace/instrumentation/jetty9421/JettyOnCommitBlockingHelper.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/{jetty-server-9.0/src/main/java_jetty9421 => jetty-server-9.4.21/src/main/java}/datadog/trace/instrumentation/jetty9421/SendResponseCbAdvice.java (100%) create mode 100644 dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9InactiveAppSecTest.groovy create mode 100644 dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy create mode 100644 dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/src/test/groovy/datadog/trace/instrumentation/jetty9/JettyContinuationHandlerTest.groovy diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/build.gradle b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/build.gradle new file mode 100644 index 00000000000..2f89d95e72c --- /dev/null +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/build.gradle @@ -0,0 +1,222 @@ +muzzle { + pass { + name = '9_full_series' + group = "org.eclipse.jetty" + module = 'jetty-server' + versions = "[9,10)" + assertInverse = true + } + pass { + name = 'before_904' + group = "org.eclipse.jetty" + module = 'jetty-server' + versions = "[9,9.0.4)" + assertInverse = true + } + pass { + name = 'between_904_and_930' + group = "org.eclipse.jetty" + module = 'jetty-server' + versions = "[9.0.4,9.3.0.M1)" + assertInverse = true + } + pass { + name = 'between_930_and_9421' + group = "org.eclipse.jetty" + module = 'jetty-server' + versions = "[9.3.0.M1,9.4.21)" + assertInverse = true + } + pass { + name = 'between_9421_and_10' + group = "org.eclipse.jetty" + module = 'jetty-server' + versions = "[9.4.21,10)" + assertInverse = true + } + pass { + name = '10_series' + group = "org.eclipse.jetty" + module = 'jetty-server' + versions = "[10,11)" + assertInverse = true + javaVersion = 11 + } + pass { + name = 'named_dispatches' + group = 'org.eclipse.jetty' + module = 'jetty-server' + versions = "[10.0.16,11),[11.0.16,12)" + assertInverse = true + javaVersion = 11 + } + pass { + name = 'between_10_and_12' + group = "org.eclipse.jetty" + module = 'jetty-server' + versions = "[10,12)" + assertInverse = true + javaVersion = 11 + } +} + +apply plugin: 'java-test-fixtures' +apply from: "$rootDir/gradle/java.gradle" + +sourceSets { + main_jetty904 { + java.srcDirs "${project.projectDir}/src/main/java_jetty904" + } + main_jetty93 { + java.srcDirs "${project.projectDir}/src/main/java_jetty93" + } + main_jetty9421 { + java.srcDirs "${project.projectDir}/src/main/java_jetty9421" + } + main_jetty10 { + java.srcDirs "${project.projectDir}/src/main/java_jetty10" + } +} + +jar { + from sourceSets.main_jetty904.output + from sourceSets.main_jetty93.output + from sourceSets.main_jetty9421.output + from sourceSets.main_jetty10.output +} + +List extraInstrumentJavaDirs = [] +['main_jetty904', 'main_jetty93', 'main_jetty9421', 'main_jetty10'].each { + JavaCompile compileTask = tasks["compile${it.capitalize()}Java"] + extraInstrumentJavaDirs << compileTask.destinationDirectory + compileTask.dependsOn tasks['compileJava'] + project.afterEvaluate { p -> + tasks['instrumentJava'].dependsOn compileTask + tasks["forbiddenApis${it.capitalize()}"].dependsOn("instrument${it.capitalize()}Java") + } +} + +instrument { + // the instrumenters are in main, but helpers/advice in possibly other sourceSets + // The muzzle generator of references run as part of InstrumentJava needs access to + // these extra classes. The task dependencies for instrumentJava are added above + additionalClasspath = [ + instrumentJava: extraInstrumentJavaDirs + ] +} + +tasks.named("compileMain_jetty10Java", JavaCompile) { + setJavaVersion(it, 11) +} + +addTestSuiteForDir('jetty92ForkedTest', 'test') +addTestSuiteForDir('jetty94ForkedTest', 'test') +addTestSuiteForDir('latestDepJetty9ForkedTest', 'test') +addTestSuiteForDir('latestDepForkedTest', 'test') + +tasks.named("latestDepForkedTest") { + javaLauncher = getJavaLauncherFor(11) +} +tasks.named("compileLatestDepForkedTestGroovy", GroovyCompile) { + setJavaVersion(it, 11) +} + +dependencies { + compileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.0.0.v20130308' + + implementation project(':dd-java-agent:instrumentation:jetty:jetty-common') + + main_jetty904CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.0.4.v20130625' + main_jetty904CompileOnly project(':internal-api') + main_jetty904CompileOnly project(':dd-java-agent:agent-tooling') + main_jetty904CompileOnly project(':dd-java-agent:agent-bootstrap') + // not pretty, but we can't depend on sourceSets.main.output; + // that would make a dependency on the classes task due to the + // intermediation of the InstrumentPlugin, creating a circular + // dependency (the instrument plugin needs all the sourceSets + // compiled to properly generate References) + main_jetty904CompileOnly files("$project.buildDir/classes/java/raw") + + main_jetty93CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.3.0.v20150612' + main_jetty93CompileOnly project(':internal-api') + main_jetty93CompileOnly project(':dd-java-agent:agent-tooling') + main_jetty93CompileOnly project(':dd-java-agent:agent-bootstrap') + main_jetty93CompileOnly files("$project.buildDir/classes/java/raw") { + builtBy = ['compileJava'] + } + + main_jetty9421CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.21.v20190926' + main_jetty9421CompileOnly project(':internal-api') + main_jetty9421CompileOnly project(':dd-java-agent:agent-tooling') + main_jetty9421CompileOnly project(':dd-java-agent:agent-bootstrap') + main_jetty9421CompileOnly files("$project.buildDir/classes/java/raw") { + builtBy = ['compileJava'] + } + + main_jetty10CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '10.0.0' + + main_jetty10CompileOnly project(':internal-api') + main_jetty10CompileOnly project(':dd-java-agent:agent-tooling') + main_jetty10CompileOnly project(':dd-java-agent:agent-bootstrap') + main_jetty10Implementation project(':dd-java-agent:instrumentation:jetty:jetty-common') + main_jetty10CompileOnly files("$project.buildDir/classes/java/raw") { + builtBy = ['compileJava'] + } + + testFixturesImplementation(project(':dd-java-agent:instrumentation-testing')) { + exclude group: 'org.eclipse.jetty', module: 'jetty-server' + } + // Don't want to conflict with jetty from the test server. + testImplementation(project(':dd-java-agent:instrumentation-testing')) { + exclude group: 'org.eclipse.jetty', module: 'jetty-server' + } + testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-util-9.4.31') + + String jetty9Version = '9.0.0.v20130308' + testFixturesCompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: jetty9Version + testFixturesCompileOnly group: 'org.eclipse.jetty', name: 'jetty-servlet', version: jetty9Version + testFixturesImplementation group: 'javax.websocket', name: 'javax.websocket-api', version: '1.0' + testImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: jetty9Version + testImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: jetty9Version + testImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: jetty9Version + testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-7.0') + testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-2.2') + testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-8.1.3') + testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:javax-websocket-1.0') + testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:jakarta-websocket-2.0') + testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:jetty-websocket:jetty-websocket-10') + testImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) + testFixturesImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) + testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') + + jetty92TestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.2.30.v20200428' + jetty92TestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.2.30.v20200428' + jetty92TestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.2.30.v20200428' + jetty92TestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.2.30.v20200428' + jetty92TestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.2') + jetty92TestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) + + jetty94TestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.15.v20190215' + jetty94TestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.4.15.v20190215' + jetty94TestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.4.15.v20190215' + jetty94TestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.4.15.v20190215' + jetty94TestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') + jetty94TestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) + + latestDepJetty9TestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.+' + latestDepJetty9TestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.+' + latestDepJetty9TestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.+' + latestDepJetty9TestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.+' + + latestDepJetty9TestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') + latestDepJetty9TestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) + + latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '10.+' + latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '10.+' + latestDepTestImplementation group: 'org.eclipse.jetty.websocket', name: 'websocket-javax-server', version: '10.+' + latestDepTestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') + latestDepTestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) +} +configurations.getByName('latestDepForkedTestRuntimeClasspath').resolutionStrategy { + force libs.slf4j +} diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/DispatchableAdvice.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/DispatchableAdvice.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/DispatchableAdvice.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/DispatchableAdvice.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty10/DispatchableInstrumentation.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/DispatchableInstrumentation.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty10/DispatchableInstrumentation.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/DispatchableInstrumentation.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/ExtractAdapter.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/ExtractAdapter.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/ExtractAdapter.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/ExtractAdapter.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/HandleAdvice.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/HandleAdvice.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/HandleAdvice.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/HandleAdvice.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/HandleExceptionAdvice.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/HandleExceptionAdvice.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/HandleExceptionAdvice.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/HandleExceptionAdvice.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/JettyCommitResponseHelper.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyCommitResponseHelper.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/JettyCommitResponseHelper.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyCommitResponseHelper.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyCommitResponseInstrumentation.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyCommitResponseInstrumentation.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyCommitResponseInstrumentation.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyCommitResponseInstrumentation.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/JettyDecorator.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyDecorator.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/JettyDecorator.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyDecorator.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/JettyOnCommitBlockingHelper.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyOnCommitBlockingHelper.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/JettyOnCommitBlockingHelper.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyOnCommitBlockingHelper.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyServerInstrumentation.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyServerInstrumentation.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyServerInstrumentation.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyServerInstrumentation.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty10/RequestInstrumentation.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/RequestInstrumentation.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty10/RequestInstrumentation.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/RequestInstrumentation.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/ResetAdvice.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/ResetAdvice.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/ResetAdvice.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/ResetAdvice.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/SendResponseCbAdvice.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/SendResponseCbAdvice.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/SendResponseCbAdvice.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/SendResponseCbAdvice.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/ServerHandleAdvice.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/ServerHandleAdvice.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/ServerHandleAdvice.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/ServerHandleAdvice.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty10/ServerHandleInstrumentation.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/ServerHandleInstrumentation.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty10/ServerHandleInstrumentation.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/ServerHandleInstrumentation.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/SetContextPathAdvice.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/SetContextPathAdvice.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/SetContextPathAdvice.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/SetContextPathAdvice.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/SetRequestedSessionIdAdvice.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/SetRequestedSessionIdAdvice.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/SetRequestedSessionIdAdvice.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/SetRequestedSessionIdAdvice.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/SetServletPathAdvice.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/SetServletPathAdvice.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/SetServletPathAdvice.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/SetServletPathAdvice.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9InactiveAppSecTest.groovy b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9InactiveAppSecTest.groovy new file mode 100644 index 00000000000..b54000a00ec --- /dev/null +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9InactiveAppSecTest.groovy @@ -0,0 +1,12 @@ +package datadog.trace.instrumentation.jetty9 + +import com.datadog.appsec.AppSecInactiveHttpServerTest +import datadog.trace.agent.test.base.HttpServer +import test.JettyServer +import test.TestHandler + +class Jetty9InactiveAppSecTest extends AppSecInactiveHttpServerTest { + HttpServer server() { + new JettyServer(TestHandler.INSTANCE) + } +} diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy new file mode 100644 index 00000000000..35b4b2c2e51 --- /dev/null +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy @@ -0,0 +1,107 @@ +package datadog.trace.instrumentation.jetty9 + +import datadog.trace.agent.test.base.HttpServer +import datadog.trace.agent.test.base.HttpServerTest +import datadog.trace.agent.test.naming.TestingGenericHttpNamingConventions +import org.eclipse.jetty.server.Server +import org.eclipse.jetty.server.handler.AbstractHandler +import test.JettyServer +import test.TestHandler + +abstract class Jetty9Test extends HttpServerTest { + + @Override + HttpServer server() { + new JettyServer(handler(), useWebsocketPojoEndpoint()) + } + + AbstractHandler handler() { + TestHandler.INSTANCE + } + + @Override + String component() { + "jetty-server" + } + + @Override + String expectedOperationName() { + operation() + } + + protected boolean useWebsocketPojoEndpoint() { + // only supported in jetty 10+ + isLatestDepTest + } + + + @Override + protected boolean enabledFinishTimingChecks() { + true + } + + @Override + boolean testExceptionBody() { + false + } + + @Override + boolean testBodyUrlencoded() { + true + } + + @Override + boolean testRequestBody() { + true + } + + @Override + boolean testRequestBodyISVariant() { + true + } + + @Override + boolean testUserBlocking() { + true + } + + @Override + boolean testBlocking() { + true + } + + @Override + boolean testBlockingOnResponse() { + true + } + + @Override + boolean hasExtraErrorInformation() { + true + } + + @Override + boolean testBodyMultipart() { + true + } + + @Override + boolean testSessionId() { + true + } + + @Override + boolean testWebsockets() { + return super.testWebsockets() && (getServer() as JettyServer).websocketAvailable + } +} + +class Jetty9V0ForkedTest extends Jetty9Test implements TestingGenericHttpNamingConventions.ServerV0 { +} + +class Jetty9V1ForkedTest extends Jetty9Test implements TestingGenericHttpNamingConventions.ServerV1 { + @Override + protected boolean useWebsocketPojoEndpoint() { + false + } +} diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty9/JettyContinuationHandlerTest.groovy b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty9/JettyContinuationHandlerTest.groovy new file mode 100644 index 00000000000..a9999d16b8b --- /dev/null +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty9/JettyContinuationHandlerTest.groovy @@ -0,0 +1,98 @@ +package datadog.trace.instrumentation.jetty9 + +import datadog.trace.agent.test.asserts.TraceAssert +import datadog.trace.agent.test.naming.TestingGenericHttpNamingConventions +import datadog.trace.bootstrap.instrumentation.api.Tags +import datadog.trace.instrumentation.servlet3.AsyncDispatcherDecorator +import org.eclipse.jetty.continuation.Continuation +import org.eclipse.jetty.continuation.ContinuationSupport +import org.eclipse.jetty.server.Request +import org.eclipse.jetty.server.handler.AbstractHandler +import org.eclipse.jetty.server.session.SessionHandler + +import javax.servlet.MultipartConfigElement +import javax.servlet.ServletException +import javax.servlet.http.HttpServletRequest +import javax.servlet.http.HttpServletResponse +import java.util.concurrent.ExecutorService +import java.util.concurrent.Executors + +import static test.TestHandler.handleRequest +import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.SUCCESS +import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.TIMEOUT +import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.TIMEOUT_ERROR +import static datadog.trace.instrumentation.servlet3.TestServlet3.SERVLET_TIMEOUT + +abstract class JettyContinuationHandlerTest extends Jetty9Test { + + @Override + AbstractHandler handler() { + def ret = new SessionHandler() + ret.handler = ContinuationTestHandler.INSTANCE + ret + } + + static class ContinuationTestHandler extends AbstractHandler { + private static final MultipartConfigElement MULTIPART_CONFIG_ELEMENT = new MultipartConfigElement(System.getProperty('java.io.tmpdir')) + static final ContinuationTestHandler INSTANCE = new ContinuationTestHandler() + final ExecutorService executorService = Executors.newSingleThreadExecutor() + + @Override + void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + request.setAttribute('org.eclipse.jetty.multipartConfig', MULTIPART_CONFIG_ELEMENT) + request.setAttribute('org.eclipse.multipartConfig', MULTIPART_CONFIG_ELEMENT) + final Continuation continuation = ContinuationSupport.getContinuation(request) + // some versions of jetty (like 9.4.15.v20190215) get into a loop: + // after an exception from handleRequest, the error will be handled here again; + // calling handleRequest will cause a new exception, and the process will repeat. + // this happens in the /exception endpoint + if (!request.getAttribute('javax.servlet.error.status_code')) { + if (continuation.initial) { + continuation.suspend() + executorService.execute { + continuation.resume() + } + } else { + handleRequest(baseRequest, response) + } + } + baseRequest.handled = true + } + } + + @Override + boolean hasHandlerSpan() { + true + } + + @Override + void handlerSpan(TraceAssert trace, ServerEndpoint endpoint = SUCCESS) { + trace.span { + serviceName expectedServiceName() + operationName 'servlet.dispatch' + resourceName 'servlet.dispatch' // should this not be a path? + childOfPrevious() + errored(endpoint.throwsException || endpoint == TIMEOUT_ERROR) + tags { + "$Tags.COMPONENT" AsyncDispatcherDecorator.DECORATE.component() + if (endpoint == TIMEOUT || endpoint == TIMEOUT_ERROR) { + "timeout" SERVLET_TIMEOUT + } + if (endpoint.throwsException) { + "error.message" endpoint.body + "error.type" { it == Exception.name || it == InputMismatchException.name } + "error.stack" String + } + defaultTags() + } + } + } +} + +class JettyContinuationHandlerV0ForkedTest extends JettyContinuationHandlerTest implements TestingGenericHttpNamingConventions.ServerV0 { + +} + +class JettyContinuationHandlerV1ForkedTest extends JettyContinuationHandlerTest implements TestingGenericHttpNamingConventions.ServerV1 { + +} diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/build.gradle b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/build.gradle new file mode 100644 index 00000000000..14a67927c28 --- /dev/null +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/build.gradle @@ -0,0 +1,56 @@ +muzzle { + pass { + group = "org.eclipse.jetty" + module = 'jetty-server' + versions = "[9.0.4,9.3.0.M1)" + assertInverse = true + } +} + +apply from: "$rootDir/gradle/java.gradle" + +addTestSuiteForDir("latestDepTest", "test") +addTestSuiteExtendingForDir("latestDepForkedTest", "latestDepTest", "test") + +dependencies { + implementation project(':dd-java-agent:instrumentation:jetty:jetty-common') + compileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.0.4.v20130625' + compileOnly project(':internal-api') + compileOnly project(':dd-java-agent:agent-tooling') + compileOnly project(':dd-java-agent:agent-bootstrap') + // not pretty, but we can't depend on sourceSets.main.output; + // that would make a dependency on the classes task due to the + // intermediation of the InstrumentPlugin, creating a circular + // dependency (the instrument plugin needs all the sourceSets + // compiled to properly generate References) + compileOnly project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0") + + // Don't want to conflict with jetty from the test server. + testImplementation(project(':dd-java-agent:instrumentation-testing')) { + exclude group: 'org.eclipse.jetty', module: 'jetty-server' + } + testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-util-9.4.31') + + testImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.0.4.v20130625' + testImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.0.4.v20130625' + testImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.0.4.v20130625' + testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-7.0') + testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-2.2') + testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-8.1.3') + testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:javax-websocket-1.0') + testImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) + testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') + testImplementation testFixtures(project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0")) + testImplementation project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0") + testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.2') + + latestDepTestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.2.30.v20200428' + latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.2.+' + latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.2.+' + latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.2.+' + latestDepTestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.2.+' + latestDepForkedTestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.2.+' + latestDepForkedTestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.2.+' + latestDepForkedTestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.2.+' + latestDepForkedTestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.2.+' +} diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty904/datadog/trace/instrumentation/jetty904/JettyCommitResponseHelper.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/main/java/datadog/trace/instrumentation/jetty904/JettyCommitResponseHelper.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty904/datadog/trace/instrumentation/jetty904/JettyCommitResponseHelper.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/main/java/datadog/trace/instrumentation/jetty904/JettyCommitResponseHelper.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty904/JettyCommitResponseInstrumentation.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/main/java/datadog/trace/instrumentation/jetty904/JettyCommitResponseInstrumentation.java similarity index 97% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty904/JettyCommitResponseInstrumentation.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/main/java/datadog/trace/instrumentation/jetty904/JettyCommitResponseInstrumentation.java index 4c6e9189333..9dbb03c9a06 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty904/JettyCommitResponseInstrumentation.java +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/main/java/datadog/trace/instrumentation/jetty904/JettyCommitResponseInstrumentation.java @@ -17,11 +17,6 @@ public JettyCommitResponseInstrumentation() { super("jetty"); } - @Override - public String muzzleDirective() { - return "between_904_and_930"; - } - @Override public Reference[] additionalMuzzleReferences() { return new Reference[] { diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty904/datadog/trace/instrumentation/jetty904/JettyOnCommitBlockingHelper.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/main/java/datadog/trace/instrumentation/jetty904/JettyOnCommitBlockingHelper.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty904/datadog/trace/instrumentation/jetty904/JettyOnCommitBlockingHelper.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/main/java/datadog/trace/instrumentation/jetty904/JettyOnCommitBlockingHelper.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty904/datadog/trace/instrumentation/jetty904/SendResponseCbAdvice.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/main/java/datadog/trace/instrumentation/jetty904/SendResponseCbAdvice.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty904/datadog/trace/instrumentation/jetty904/SendResponseCbAdvice.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/main/java/datadog/trace/instrumentation/jetty904/SendResponseCbAdvice.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9InactiveAppSecTest.groovy b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9InactiveAppSecTest.groovy new file mode 100644 index 00000000000..b54000a00ec --- /dev/null +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9InactiveAppSecTest.groovy @@ -0,0 +1,12 @@ +package datadog.trace.instrumentation.jetty9 + +import com.datadog.appsec.AppSecInactiveHttpServerTest +import datadog.trace.agent.test.base.HttpServer +import test.JettyServer +import test.TestHandler + +class Jetty9InactiveAppSecTest extends AppSecInactiveHttpServerTest { + HttpServer server() { + new JettyServer(TestHandler.INSTANCE) + } +} diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy new file mode 100644 index 00000000000..4bf688a1700 --- /dev/null +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy @@ -0,0 +1,103 @@ +package datadog.trace.instrumentation.jetty9 + +import datadog.trace.agent.test.base.HttpServer +import datadog.trace.agent.test.base.HttpServerTest +import datadog.trace.agent.test.naming.TestingGenericHttpNamingConventions +import org.eclipse.jetty.server.Server +import org.eclipse.jetty.server.handler.AbstractHandler +import test.JettyServer +import test.TestHandler + +abstract class Jetty9Test extends HttpServerTest { + + @Override + HttpServer server() { + new JettyServer(handler(), useWebsocketPojoEndpoint()) + } + + AbstractHandler handler() { + TestHandler.INSTANCE + } + + @Override + String component() { + "jetty-server" + } + + @Override + String expectedOperationName() { + operation() + } + + protected boolean useWebsocketPojoEndpoint() { + // only supported in jetty 10+ + false + } + + + @Override + protected boolean enabledFinishTimingChecks() { + true + } + + @Override + boolean testExceptionBody() { + false + } + + @Override + boolean testBodyUrlencoded() { + true + } + + @Override + boolean testRequestBody() { + true + } + + @Override + boolean testRequestBodyISVariant() { + true + } + + @Override + boolean testUserBlocking() { + true + } + + @Override + boolean testBlocking() { + true + } + + @Override + boolean testBlockingOnResponse() { + true + } + + @Override + boolean hasExtraErrorInformation() { + true + } + + @Override + boolean testBodyMultipart() { + true + } + + @Override + boolean testSessionId() { + true + } + + @Override + boolean testWebsockets() { + return super.testWebsockets() && (getServer() as JettyServer).websocketAvailable + } +} + +class Jetty9V0Test extends Jetty9Test implements TestingGenericHttpNamingConventions.ServerV0 { +} + +class Jetty9V1ForkedTest extends Jetty9Test implements TestingGenericHttpNamingConventions.ServerV1 { +} diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/test/groovy/datadog/trace/instrumentation/jetty9/JettyContinuationHandlerTest.groovy b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/test/groovy/datadog/trace/instrumentation/jetty9/JettyContinuationHandlerTest.groovy new file mode 100644 index 00000000000..c63aa1af25f --- /dev/null +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/test/groovy/datadog/trace/instrumentation/jetty9/JettyContinuationHandlerTest.groovy @@ -0,0 +1,100 @@ +package datadog.trace.instrumentation.jetty9 + +import datadog.trace.agent.test.asserts.TraceAssert +import datadog.trace.agent.test.naming.TestingGenericHttpNamingConventions +import datadog.trace.bootstrap.instrumentation.api.Tags +import datadog.trace.instrumentation.servlet3.AsyncDispatcherDecorator +import org.eclipse.jetty.continuation.Continuation +import org.eclipse.jetty.continuation.ContinuationSupport +import org.eclipse.jetty.server.Request +import org.eclipse.jetty.server.handler.AbstractHandler +import org.eclipse.jetty.server.session.SessionHandler + +import javax.servlet.MultipartConfigElement +import javax.servlet.ServletException +import javax.servlet.http.HttpServletRequest +import javax.servlet.http.HttpServletResponse +import java.util.concurrent.ExecutorService +import java.util.concurrent.Executors + +import static test.TestHandler.handleRequest +import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.SUCCESS +import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.TIMEOUT +import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.TIMEOUT_ERROR +import static datadog.trace.instrumentation.servlet3.TestServlet3.SERVLET_TIMEOUT + +abstract class JettyContinuationHandlerTest extends Jetty9Test { + + + + @Override + AbstractHandler handler() { + def ret = new SessionHandler() + ret.handler = ContinuationTestHandler.INSTANCE + ret + } + + static class ContinuationTestHandler extends AbstractHandler { + private static final MultipartConfigElement MULTIPART_CONFIG_ELEMENT = new MultipartConfigElement(System.getProperty('java.io.tmpdir')) + static final ContinuationTestHandler INSTANCE = new ContinuationTestHandler() + final ExecutorService executorService = Executors.newSingleThreadExecutor() + + @Override + void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + request.setAttribute('org.eclipse.jetty.multipartConfig', MULTIPART_CONFIG_ELEMENT) + request.setAttribute('org.eclipse.multipartConfig', MULTIPART_CONFIG_ELEMENT) + final Continuation continuation = ContinuationSupport.getContinuation(request) + // some versions of jetty (like 9.4.15.v20190215) get into a loop: + // after an exception from handleRequest, the error will be handled here again; + // calling handleRequest will cause a new exception, and the process will repeat. + // this happens in the /exception endpoint + if (!request.getAttribute('javax.servlet.error.status_code')) { + if (continuation.initial) { + continuation.suspend() + executorService.execute { + continuation.resume() + } + } else { + handleRequest(baseRequest, response) + } + } + baseRequest.handled = true + } + } + + @Override + boolean hasHandlerSpan() { + true + } + + @Override + void handlerSpan(TraceAssert trace, ServerEndpoint endpoint = SUCCESS) { + trace.span { + serviceName expectedServiceName() + operationName 'servlet.dispatch' + resourceName 'servlet.dispatch' // should this not be a path? + childOfPrevious() + errored(endpoint.throwsException || endpoint == TIMEOUT_ERROR) + tags { + "$Tags.COMPONENT" AsyncDispatcherDecorator.DECORATE.component() + if (endpoint == TIMEOUT || endpoint == TIMEOUT_ERROR) { + "timeout" SERVLET_TIMEOUT + } + if (endpoint.throwsException) { + "error.message" endpoint.body + "error.type" { it == Exception.name || it == InputMismatchException.name } + "error.stack" String + } + defaultTags() + } + } + } +} + +class JettyContinuationHandlerV0ForkedTest extends JettyContinuationHandlerTest implements TestingGenericHttpNamingConventions.ServerV0 { + +} + +class JettyContinuationHandlerV1ForkedTest extends JettyContinuationHandlerTest implements TestingGenericHttpNamingConventions.ServerV1 { + +} diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/build.gradle b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/build.gradle index 90ad689f9f2..0f4128fa1c4 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/build.gradle +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/build.gradle @@ -7,162 +7,21 @@ muzzle { assertInverse = true } pass { - name = 'before_904' group = "org.eclipse.jetty" module = 'jetty-server' versions = "[9,9.0.4)" assertInverse = true } - pass { - name = 'between_904_and_930' - group = "org.eclipse.jetty" - module = 'jetty-server' - versions = "[9.0.4,9.3.0.M1)" - assertInverse = true - } - pass { - name = 'between_930_and_9421' - group = "org.eclipse.jetty" - module = 'jetty-server' - versions = "[9.3.0.M1,9.4.21)" - assertInverse = true - } - pass { - name = 'between_9421_and_10' - group = "org.eclipse.jetty" - module = 'jetty-server' - versions = "[9.4.21,10)" - assertInverse = true - } - pass { - name = '10_series' - group = "org.eclipse.jetty" - module = 'jetty-server' - versions = "[10,11)" - assertInverse = true - javaVersion = 11 - } - pass { - name = 'named_dispatches' - group = 'org.eclipse.jetty' - module = 'jetty-server' - versions = "[10.0.16,11),[11.0.16,12)" - assertInverse = true - javaVersion = 11 - } - pass { - name = 'between_10_and_12' - group = "org.eclipse.jetty" - module = 'jetty-server' - versions = "[10,12)" - assertInverse = true - javaVersion = 11 - } } apply plugin: 'java-test-fixtures' apply from: "$rootDir/gradle/java.gradle" -sourceSets { - main_jetty904 { - java.srcDirs "${project.projectDir}/src/main/java_jetty904" - } - main_jetty93 { - java.srcDirs "${project.projectDir}/src/main/java_jetty93" - } - main_jetty9421 { - java.srcDirs "${project.projectDir}/src/main/java_jetty9421" - } - main_jetty10 { - java.srcDirs "${project.projectDir}/src/main/java_jetty10" - } -} - -jar { - from sourceSets.main_jetty904.output - from sourceSets.main_jetty93.output - from sourceSets.main_jetty9421.output - from sourceSets.main_jetty10.output -} - -List extraInstrumentJavaDirs = [] -['main_jetty904', 'main_jetty93', 'main_jetty9421', 'main_jetty10'].each { - JavaCompile compileTask = tasks["compile${it.capitalize()}Java"] - extraInstrumentJavaDirs << compileTask.destinationDirectory - compileTask.dependsOn tasks['compileJava'] - project.afterEvaluate { p -> - tasks['instrumentJava'].dependsOn compileTask - tasks["forbiddenApis${it.capitalize()}"].dependsOn("instrument${it.capitalize()}Java") - } -} - -instrument { - // the instrumenters are in main, but helpers/advice in possibly other sourceSets - // The muzzle generator of references run as part of InstrumentJava needs access to - // these extra classes. The task dependencies for instrumentJava are added above - additionalClasspath = [ - instrumentJava: extraInstrumentJavaDirs - ] -} - -tasks.named("compileMain_jetty10Java", JavaCompile) { - configureCompiler(it, 11, JavaVersion.VERSION_1_8) -} - -addTestSuiteForDir('jetty92ForkedTest', 'test') -addTestSuiteForDir('jetty94ForkedTest', 'test') -addTestSuiteForDir('latestDepJetty9ForkedTest', 'test') -addTestSuiteForDir('latestDepForkedTest', 'test') - -tasks.named("latestDepForkedTest") { - javaLauncher = getJavaLauncherFor(11) -} -tasks.named("compileLatestDepForkedTestGroovy", GroovyCompile) { - configureCompiler(it, 11) -} - dependencies { compileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.0.0.v20130308' implementation project(':dd-java-agent:instrumentation:jetty:jetty-common') - main_jetty904CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.0.4.v20130625' - main_jetty904CompileOnly project(':internal-api') - main_jetty904CompileOnly project(':dd-java-agent:agent-tooling') - main_jetty904CompileOnly project(':dd-java-agent:agent-bootstrap') - // not pretty, but we can't depend on sourceSets.main.output; - // that would make a dependency on the classes task due to the - // intermediation of the InstrumentPlugin, creating a circular - // dependency (the instrument plugin needs all the sourceSets - // compiled to properly generate References) - main_jetty904CompileOnly files("$project.buildDir/classes/java/raw") - - main_jetty93CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.3.0.v20150612' - main_jetty93CompileOnly project(':internal-api') - main_jetty93CompileOnly project(':dd-java-agent:agent-tooling') - main_jetty93CompileOnly project(':dd-java-agent:agent-bootstrap') - main_jetty93CompileOnly files("$project.buildDir/classes/java/raw") { - builtBy = ['compileJava'] - } - - main_jetty9421CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.21.v20190926' - main_jetty9421CompileOnly project(':internal-api') - main_jetty9421CompileOnly project(':dd-java-agent:agent-tooling') - main_jetty9421CompileOnly project(':dd-java-agent:agent-bootstrap') - main_jetty9421CompileOnly files("$project.buildDir/classes/java/raw") { - builtBy = ['compileJava'] - } - - main_jetty10CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '10.0.0' - - main_jetty10CompileOnly project(':internal-api') - main_jetty10CompileOnly project(':dd-java-agent:agent-tooling') - main_jetty10CompileOnly project(':dd-java-agent:agent-bootstrap') - main_jetty10Implementation project(':dd-java-agent:instrumentation:jetty:jetty-common') - main_jetty10CompileOnly files("$project.buildDir/classes/java/raw") { - builtBy = ['compileJava'] - } - testFixturesImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } @@ -183,40 +42,7 @@ dependencies { testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-2.2') testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-8.1.3') testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:javax-websocket-1.0') - testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:jakarta-websocket-2.0') - testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:jetty-websocket:jetty-websocket-10') testImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) testFixturesImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') - - jetty92TestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.2.30.v20200428' - jetty92TestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.2.30.v20200428' - jetty92TestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.2.30.v20200428' - jetty92TestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.2.30.v20200428' - jetty92TestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.2') - jetty92TestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) - - jetty94TestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.15.v20190215' - jetty94TestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.4.15.v20190215' - jetty94TestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.4.15.v20190215' - jetty94TestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.4.15.v20190215' - jetty94TestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') - jetty94TestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) - - latestDepJetty9TestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.+' - latestDepJetty9TestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.+' - latestDepJetty9TestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.+' - latestDepJetty9TestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.+' - - latestDepJetty9TestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') - latestDepJetty9TestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) - - latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '10.+' - latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '10.+' - latestDepTestImplementation group: 'org.eclipse.jetty.websocket', name: 'websocket-javax-server', version: '10.+' - latestDepTestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') - latestDepTestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) -} -configurations.getByName('latestDepForkedTestRuntimeClasspath').resolutionStrategy { - force libs.slf4j } diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty9/JettyCommitResponseInstrumentation.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty9/JettyCommitResponseInstrumentation.java index fb92469eaa7..210f706a66d 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty9/JettyCommitResponseInstrumentation.java +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty9/JettyCommitResponseInstrumentation.java @@ -30,11 +30,6 @@ public JettyCommitResponseInstrumentation() { super("jetty"); } - @Override - public String muzzleDirective() { - return "before_904"; - } - @Override public Reference[] additionalMuzzleReferences() { return new Reference[] { diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy index 35b4b2c2e51..7ec4c03dd10 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy @@ -30,8 +30,7 @@ abstract class Jetty9Test extends HttpServerTest { } protected boolean useWebsocketPojoEndpoint() { - // only supported in jetty 10+ - isLatestDepTest + false } @@ -96,12 +95,8 @@ abstract class Jetty9Test extends HttpServerTest { } } -class Jetty9V0ForkedTest extends Jetty9Test implements TestingGenericHttpNamingConventions.ServerV0 { +class Jetty9V0Test extends Jetty9Test implements TestingGenericHttpNamingConventions.ServerV0 { } class Jetty9V1ForkedTest extends Jetty9Test implements TestingGenericHttpNamingConventions.ServerV1 { - @Override - protected boolean useWebsocketPojoEndpoint() { - false - } } diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/build.gradle b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/build.gradle new file mode 100644 index 00000000000..468e46ebeb5 --- /dev/null +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/build.gradle @@ -0,0 +1,122 @@ +muzzle { + pass { + group = "org.eclipse.jetty" + module = 'jetty-server' + versions = "[9.3.0.M1,9.4.21)" + assertInverse = true + } +} + +apply from: "$rootDir/gradle/java.gradle" + +addTestSuiteForDir('jetty92ForkedTest', 'test') +addTestSuiteForDir('jetty94ForkedTest', 'test') +addTestSuiteForDir('latestDepJetty9ForkedTest', 'test') +addTestSuiteForDir('latestDepForkedTest', 'test') + +tasks.named("latestDepForkedTest") { + javaLauncher = getJavaLauncherFor(11) +} +tasks.named("compileLatestDepForkedTestGroovy", GroovyCompile) { + setJavaVersion(it, 11) +} + +dependencies { + compileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.0.0.v20130308' + + implementation project(':dd-java-agent:instrumentation:jetty:jetty-common') + + main_jetty904CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.0.4.v20130625' + main_jetty904CompileOnly project(':internal-api') + main_jetty904CompileOnly project(':dd-java-agent:agent-tooling') + main_jetty904CompileOnly project(':dd-java-agent:agent-bootstrap') + // not pretty, but we can't depend on sourceSets.main.output; + // that would make a dependency on the classes task due to the + // intermediation of the InstrumentPlugin, creating a circular + // dependency (the instrument plugin needs all the sourceSets + // compiled to properly generate References) + main_jetty904CompileOnly files("$project.buildDir/classes/java/raw") + + main_jetty93CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.3.0.v20150612' + main_jetty93CompileOnly project(':internal-api') + main_jetty93CompileOnly project(':dd-java-agent:agent-tooling') + main_jetty93CompileOnly project(':dd-java-agent:agent-bootstrap') + main_jetty93CompileOnly files("$project.buildDir/classes/java/raw") { + builtBy = ['compileJava'] + } + + main_jetty9421CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.21.v20190926' + main_jetty9421CompileOnly project(':internal-api') + main_jetty9421CompileOnly project(':dd-java-agent:agent-tooling') + main_jetty9421CompileOnly project(':dd-java-agent:agent-bootstrap') + main_jetty9421CompileOnly files("$project.buildDir/classes/java/raw") { + builtBy = ['compileJava'] + } + + main_jetty10CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '10.0.0' + + main_jetty10CompileOnly project(':internal-api') + main_jetty10CompileOnly project(':dd-java-agent:agent-tooling') + main_jetty10CompileOnly project(':dd-java-agent:agent-bootstrap') + main_jetty10Implementation project(':dd-java-agent:instrumentation:jetty:jetty-common') + main_jetty10CompileOnly files("$project.buildDir/classes/java/raw") { + builtBy = ['compileJava'] + } + + testFixturesImplementation(project(':dd-java-agent:instrumentation-testing')) { + exclude group: 'org.eclipse.jetty', module: 'jetty-server' + } + // Don't want to conflict with jetty from the test server. + testImplementation(project(':dd-java-agent:instrumentation-testing')) { + exclude group: 'org.eclipse.jetty', module: 'jetty-server' + } + testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-util-9.4.31') + + String jetty9Version = '9.0.0.v20130308' + testFixturesCompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: jetty9Version + testFixturesCompileOnly group: 'org.eclipse.jetty', name: 'jetty-servlet', version: jetty9Version + testFixturesImplementation group: 'javax.websocket', name: 'javax.websocket-api', version: '1.0' + testImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: jetty9Version + testImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: jetty9Version + testImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: jetty9Version + testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-7.0') + testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-2.2') + testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-8.1.3') + testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:javax-websocket-1.0') + testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:jakarta-websocket-2.0') + testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:jetty-websocket:jetty-websocket-10') + testImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) + testFixturesImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) + testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') + + jetty92TestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.2.30.v20200428' + jetty92TestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.2.30.v20200428' + jetty92TestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.2.30.v20200428' + jetty92TestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.2.30.v20200428' + jetty92TestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.2') + jetty92TestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) + + jetty94TestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.15.v20190215' + jetty94TestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.4.15.v20190215' + jetty94TestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.4.15.v20190215' + jetty94TestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.4.15.v20190215' + jetty94TestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') + jetty94TestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) + + latestDepJetty9TestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.+' + latestDepJetty9TestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.+' + latestDepJetty9TestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.+' + latestDepJetty9TestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.+' + + latestDepJetty9TestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') + latestDepJetty9TestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) + + latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '10.+' + latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '10.+' + latestDepTestImplementation group: 'org.eclipse.jetty.websocket', name: 'websocket-javax-server', version: '10.+' + latestDepTestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') + latestDepTestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) +} +configurations.getByName('latestDepForkedTestRuntimeClasspath').resolutionStrategy { + force libs.slf4j +} diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty93/datadog/trace/instrumentation/jetty93/JettyCommitResponseHelper.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/main/java/datadog/trace/instrumentation/jetty93/JettyCommitResponseHelper.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty93/datadog/trace/instrumentation/jetty93/JettyCommitResponseHelper.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/main/java/datadog/trace/instrumentation/jetty93/JettyCommitResponseHelper.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty93/JettyCommitResponseInstrumentation.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/main/java/datadog/trace/instrumentation/jetty93/JettyCommitResponseInstrumentation.java similarity index 97% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty93/JettyCommitResponseInstrumentation.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/main/java/datadog/trace/instrumentation/jetty93/JettyCommitResponseInstrumentation.java index f9490ab5b83..61ea4856ffe 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty93/JettyCommitResponseInstrumentation.java +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/main/java/datadog/trace/instrumentation/jetty93/JettyCommitResponseInstrumentation.java @@ -17,11 +17,6 @@ public JettyCommitResponseInstrumentation() { super("jetty"); } - @Override - public String muzzleDirective() { - return "between_930_and_9421"; - } - @Override public Reference[] additionalMuzzleReferences() { return new Reference[] { diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty93/datadog/trace/instrumentation/jetty93/JettyOnCommitBlockingHelper.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/main/java/datadog/trace/instrumentation/jetty93/JettyOnCommitBlockingHelper.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty93/datadog/trace/instrumentation/jetty93/JettyOnCommitBlockingHelper.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/main/java/datadog/trace/instrumentation/jetty93/JettyOnCommitBlockingHelper.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty93/datadog/trace/instrumentation/jetty93/SendResponseCbAdvice.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/main/java/datadog/trace/instrumentation/jetty93/SendResponseCbAdvice.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty93/datadog/trace/instrumentation/jetty93/SendResponseCbAdvice.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/main/java/datadog/trace/instrumentation/jetty93/SendResponseCbAdvice.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9InactiveAppSecTest.groovy b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9InactiveAppSecTest.groovy new file mode 100644 index 00000000000..b54000a00ec --- /dev/null +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9InactiveAppSecTest.groovy @@ -0,0 +1,12 @@ +package datadog.trace.instrumentation.jetty9 + +import com.datadog.appsec.AppSecInactiveHttpServerTest +import datadog.trace.agent.test.base.HttpServer +import test.JettyServer +import test.TestHandler + +class Jetty9InactiveAppSecTest extends AppSecInactiveHttpServerTest { + HttpServer server() { + new JettyServer(TestHandler.INSTANCE) + } +} diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy new file mode 100644 index 00000000000..35b4b2c2e51 --- /dev/null +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy @@ -0,0 +1,107 @@ +package datadog.trace.instrumentation.jetty9 + +import datadog.trace.agent.test.base.HttpServer +import datadog.trace.agent.test.base.HttpServerTest +import datadog.trace.agent.test.naming.TestingGenericHttpNamingConventions +import org.eclipse.jetty.server.Server +import org.eclipse.jetty.server.handler.AbstractHandler +import test.JettyServer +import test.TestHandler + +abstract class Jetty9Test extends HttpServerTest { + + @Override + HttpServer server() { + new JettyServer(handler(), useWebsocketPojoEndpoint()) + } + + AbstractHandler handler() { + TestHandler.INSTANCE + } + + @Override + String component() { + "jetty-server" + } + + @Override + String expectedOperationName() { + operation() + } + + protected boolean useWebsocketPojoEndpoint() { + // only supported in jetty 10+ + isLatestDepTest + } + + + @Override + protected boolean enabledFinishTimingChecks() { + true + } + + @Override + boolean testExceptionBody() { + false + } + + @Override + boolean testBodyUrlencoded() { + true + } + + @Override + boolean testRequestBody() { + true + } + + @Override + boolean testRequestBodyISVariant() { + true + } + + @Override + boolean testUserBlocking() { + true + } + + @Override + boolean testBlocking() { + true + } + + @Override + boolean testBlockingOnResponse() { + true + } + + @Override + boolean hasExtraErrorInformation() { + true + } + + @Override + boolean testBodyMultipart() { + true + } + + @Override + boolean testSessionId() { + true + } + + @Override + boolean testWebsockets() { + return super.testWebsockets() && (getServer() as JettyServer).websocketAvailable + } +} + +class Jetty9V0ForkedTest extends Jetty9Test implements TestingGenericHttpNamingConventions.ServerV0 { +} + +class Jetty9V1ForkedTest extends Jetty9Test implements TestingGenericHttpNamingConventions.ServerV1 { + @Override + protected boolean useWebsocketPojoEndpoint() { + false + } +} diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/test/groovy/datadog/trace/instrumentation/jetty9/JettyContinuationHandlerTest.groovy b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/test/groovy/datadog/trace/instrumentation/jetty9/JettyContinuationHandlerTest.groovy new file mode 100644 index 00000000000..a9999d16b8b --- /dev/null +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/test/groovy/datadog/trace/instrumentation/jetty9/JettyContinuationHandlerTest.groovy @@ -0,0 +1,98 @@ +package datadog.trace.instrumentation.jetty9 + +import datadog.trace.agent.test.asserts.TraceAssert +import datadog.trace.agent.test.naming.TestingGenericHttpNamingConventions +import datadog.trace.bootstrap.instrumentation.api.Tags +import datadog.trace.instrumentation.servlet3.AsyncDispatcherDecorator +import org.eclipse.jetty.continuation.Continuation +import org.eclipse.jetty.continuation.ContinuationSupport +import org.eclipse.jetty.server.Request +import org.eclipse.jetty.server.handler.AbstractHandler +import org.eclipse.jetty.server.session.SessionHandler + +import javax.servlet.MultipartConfigElement +import javax.servlet.ServletException +import javax.servlet.http.HttpServletRequest +import javax.servlet.http.HttpServletResponse +import java.util.concurrent.ExecutorService +import java.util.concurrent.Executors + +import static test.TestHandler.handleRequest +import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.SUCCESS +import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.TIMEOUT +import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.TIMEOUT_ERROR +import static datadog.trace.instrumentation.servlet3.TestServlet3.SERVLET_TIMEOUT + +abstract class JettyContinuationHandlerTest extends Jetty9Test { + + @Override + AbstractHandler handler() { + def ret = new SessionHandler() + ret.handler = ContinuationTestHandler.INSTANCE + ret + } + + static class ContinuationTestHandler extends AbstractHandler { + private static final MultipartConfigElement MULTIPART_CONFIG_ELEMENT = new MultipartConfigElement(System.getProperty('java.io.tmpdir')) + static final ContinuationTestHandler INSTANCE = new ContinuationTestHandler() + final ExecutorService executorService = Executors.newSingleThreadExecutor() + + @Override + void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + request.setAttribute('org.eclipse.jetty.multipartConfig', MULTIPART_CONFIG_ELEMENT) + request.setAttribute('org.eclipse.multipartConfig', MULTIPART_CONFIG_ELEMENT) + final Continuation continuation = ContinuationSupport.getContinuation(request) + // some versions of jetty (like 9.4.15.v20190215) get into a loop: + // after an exception from handleRequest, the error will be handled here again; + // calling handleRequest will cause a new exception, and the process will repeat. + // this happens in the /exception endpoint + if (!request.getAttribute('javax.servlet.error.status_code')) { + if (continuation.initial) { + continuation.suspend() + executorService.execute { + continuation.resume() + } + } else { + handleRequest(baseRequest, response) + } + } + baseRequest.handled = true + } + } + + @Override + boolean hasHandlerSpan() { + true + } + + @Override + void handlerSpan(TraceAssert trace, ServerEndpoint endpoint = SUCCESS) { + trace.span { + serviceName expectedServiceName() + operationName 'servlet.dispatch' + resourceName 'servlet.dispatch' // should this not be a path? + childOfPrevious() + errored(endpoint.throwsException || endpoint == TIMEOUT_ERROR) + tags { + "$Tags.COMPONENT" AsyncDispatcherDecorator.DECORATE.component() + if (endpoint == TIMEOUT || endpoint == TIMEOUT_ERROR) { + "timeout" SERVLET_TIMEOUT + } + if (endpoint.throwsException) { + "error.message" endpoint.body + "error.type" { it == Exception.name || it == InputMismatchException.name } + "error.stack" String + } + defaultTags() + } + } + } +} + +class JettyContinuationHandlerV0ForkedTest extends JettyContinuationHandlerTest implements TestingGenericHttpNamingConventions.ServerV0 { + +} + +class JettyContinuationHandlerV1ForkedTest extends JettyContinuationHandlerTest implements TestingGenericHttpNamingConventions.ServerV1 { + +} diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/build.gradle b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/build.gradle new file mode 100644 index 00000000000..2f89d95e72c --- /dev/null +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/build.gradle @@ -0,0 +1,222 @@ +muzzle { + pass { + name = '9_full_series' + group = "org.eclipse.jetty" + module = 'jetty-server' + versions = "[9,10)" + assertInverse = true + } + pass { + name = 'before_904' + group = "org.eclipse.jetty" + module = 'jetty-server' + versions = "[9,9.0.4)" + assertInverse = true + } + pass { + name = 'between_904_and_930' + group = "org.eclipse.jetty" + module = 'jetty-server' + versions = "[9.0.4,9.3.0.M1)" + assertInverse = true + } + pass { + name = 'between_930_and_9421' + group = "org.eclipse.jetty" + module = 'jetty-server' + versions = "[9.3.0.M1,9.4.21)" + assertInverse = true + } + pass { + name = 'between_9421_and_10' + group = "org.eclipse.jetty" + module = 'jetty-server' + versions = "[9.4.21,10)" + assertInverse = true + } + pass { + name = '10_series' + group = "org.eclipse.jetty" + module = 'jetty-server' + versions = "[10,11)" + assertInverse = true + javaVersion = 11 + } + pass { + name = 'named_dispatches' + group = 'org.eclipse.jetty' + module = 'jetty-server' + versions = "[10.0.16,11),[11.0.16,12)" + assertInverse = true + javaVersion = 11 + } + pass { + name = 'between_10_and_12' + group = "org.eclipse.jetty" + module = 'jetty-server' + versions = "[10,12)" + assertInverse = true + javaVersion = 11 + } +} + +apply plugin: 'java-test-fixtures' +apply from: "$rootDir/gradle/java.gradle" + +sourceSets { + main_jetty904 { + java.srcDirs "${project.projectDir}/src/main/java_jetty904" + } + main_jetty93 { + java.srcDirs "${project.projectDir}/src/main/java_jetty93" + } + main_jetty9421 { + java.srcDirs "${project.projectDir}/src/main/java_jetty9421" + } + main_jetty10 { + java.srcDirs "${project.projectDir}/src/main/java_jetty10" + } +} + +jar { + from sourceSets.main_jetty904.output + from sourceSets.main_jetty93.output + from sourceSets.main_jetty9421.output + from sourceSets.main_jetty10.output +} + +List extraInstrumentJavaDirs = [] +['main_jetty904', 'main_jetty93', 'main_jetty9421', 'main_jetty10'].each { + JavaCompile compileTask = tasks["compile${it.capitalize()}Java"] + extraInstrumentJavaDirs << compileTask.destinationDirectory + compileTask.dependsOn tasks['compileJava'] + project.afterEvaluate { p -> + tasks['instrumentJava'].dependsOn compileTask + tasks["forbiddenApis${it.capitalize()}"].dependsOn("instrument${it.capitalize()}Java") + } +} + +instrument { + // the instrumenters are in main, but helpers/advice in possibly other sourceSets + // The muzzle generator of references run as part of InstrumentJava needs access to + // these extra classes. The task dependencies for instrumentJava are added above + additionalClasspath = [ + instrumentJava: extraInstrumentJavaDirs + ] +} + +tasks.named("compileMain_jetty10Java", JavaCompile) { + setJavaVersion(it, 11) +} + +addTestSuiteForDir('jetty92ForkedTest', 'test') +addTestSuiteForDir('jetty94ForkedTest', 'test') +addTestSuiteForDir('latestDepJetty9ForkedTest', 'test') +addTestSuiteForDir('latestDepForkedTest', 'test') + +tasks.named("latestDepForkedTest") { + javaLauncher = getJavaLauncherFor(11) +} +tasks.named("compileLatestDepForkedTestGroovy", GroovyCompile) { + setJavaVersion(it, 11) +} + +dependencies { + compileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.0.0.v20130308' + + implementation project(':dd-java-agent:instrumentation:jetty:jetty-common') + + main_jetty904CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.0.4.v20130625' + main_jetty904CompileOnly project(':internal-api') + main_jetty904CompileOnly project(':dd-java-agent:agent-tooling') + main_jetty904CompileOnly project(':dd-java-agent:agent-bootstrap') + // not pretty, but we can't depend on sourceSets.main.output; + // that would make a dependency on the classes task due to the + // intermediation of the InstrumentPlugin, creating a circular + // dependency (the instrument plugin needs all the sourceSets + // compiled to properly generate References) + main_jetty904CompileOnly files("$project.buildDir/classes/java/raw") + + main_jetty93CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.3.0.v20150612' + main_jetty93CompileOnly project(':internal-api') + main_jetty93CompileOnly project(':dd-java-agent:agent-tooling') + main_jetty93CompileOnly project(':dd-java-agent:agent-bootstrap') + main_jetty93CompileOnly files("$project.buildDir/classes/java/raw") { + builtBy = ['compileJava'] + } + + main_jetty9421CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.21.v20190926' + main_jetty9421CompileOnly project(':internal-api') + main_jetty9421CompileOnly project(':dd-java-agent:agent-tooling') + main_jetty9421CompileOnly project(':dd-java-agent:agent-bootstrap') + main_jetty9421CompileOnly files("$project.buildDir/classes/java/raw") { + builtBy = ['compileJava'] + } + + main_jetty10CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '10.0.0' + + main_jetty10CompileOnly project(':internal-api') + main_jetty10CompileOnly project(':dd-java-agent:agent-tooling') + main_jetty10CompileOnly project(':dd-java-agent:agent-bootstrap') + main_jetty10Implementation project(':dd-java-agent:instrumentation:jetty:jetty-common') + main_jetty10CompileOnly files("$project.buildDir/classes/java/raw") { + builtBy = ['compileJava'] + } + + testFixturesImplementation(project(':dd-java-agent:instrumentation-testing')) { + exclude group: 'org.eclipse.jetty', module: 'jetty-server' + } + // Don't want to conflict with jetty from the test server. + testImplementation(project(':dd-java-agent:instrumentation-testing')) { + exclude group: 'org.eclipse.jetty', module: 'jetty-server' + } + testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-util-9.4.31') + + String jetty9Version = '9.0.0.v20130308' + testFixturesCompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: jetty9Version + testFixturesCompileOnly group: 'org.eclipse.jetty', name: 'jetty-servlet', version: jetty9Version + testFixturesImplementation group: 'javax.websocket', name: 'javax.websocket-api', version: '1.0' + testImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: jetty9Version + testImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: jetty9Version + testImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: jetty9Version + testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-7.0') + testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-2.2') + testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-8.1.3') + testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:javax-websocket-1.0') + testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:jakarta-websocket-2.0') + testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:jetty-websocket:jetty-websocket-10') + testImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) + testFixturesImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) + testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') + + jetty92TestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.2.30.v20200428' + jetty92TestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.2.30.v20200428' + jetty92TestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.2.30.v20200428' + jetty92TestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.2.30.v20200428' + jetty92TestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.2') + jetty92TestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) + + jetty94TestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.15.v20190215' + jetty94TestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.4.15.v20190215' + jetty94TestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.4.15.v20190215' + jetty94TestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.4.15.v20190215' + jetty94TestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') + jetty94TestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) + + latestDepJetty9TestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.+' + latestDepJetty9TestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.+' + latestDepJetty9TestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.+' + latestDepJetty9TestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.+' + + latestDepJetty9TestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') + latestDepJetty9TestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) + + latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '10.+' + latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '10.+' + latestDepTestImplementation group: 'org.eclipse.jetty.websocket', name: 'websocket-javax-server', version: '10.+' + latestDepTestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') + latestDepTestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) +} +configurations.getByName('latestDepForkedTestRuntimeClasspath').resolutionStrategy { + force libs.slf4j +} diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty9421/datadog/trace/instrumentation/jetty9421/JettyCommitResponseHelper.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/src/main/java/datadog/trace/instrumentation/jetty9421/JettyCommitResponseHelper.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty9421/datadog/trace/instrumentation/jetty9421/JettyCommitResponseHelper.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/src/main/java/datadog/trace/instrumentation/jetty9421/JettyCommitResponseHelper.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty9421/JettyCommitResponseInstrumentation.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/src/main/java/datadog/trace/instrumentation/jetty9421/JettyCommitResponseInstrumentation.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty9421/JettyCommitResponseInstrumentation.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/src/main/java/datadog/trace/instrumentation/jetty9421/JettyCommitResponseInstrumentation.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty9421/datadog/trace/instrumentation/jetty9421/JettyOnCommitBlockingHelper.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/src/main/java/datadog/trace/instrumentation/jetty9421/JettyOnCommitBlockingHelper.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty9421/datadog/trace/instrumentation/jetty9421/JettyOnCommitBlockingHelper.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/src/main/java/datadog/trace/instrumentation/jetty9421/JettyOnCommitBlockingHelper.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty9421/datadog/trace/instrumentation/jetty9421/SendResponseCbAdvice.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/src/main/java/datadog/trace/instrumentation/jetty9421/SendResponseCbAdvice.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java_jetty9421/datadog/trace/instrumentation/jetty9421/SendResponseCbAdvice.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/src/main/java/datadog/trace/instrumentation/jetty9421/SendResponseCbAdvice.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9InactiveAppSecTest.groovy b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9InactiveAppSecTest.groovy new file mode 100644 index 00000000000..b54000a00ec --- /dev/null +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9InactiveAppSecTest.groovy @@ -0,0 +1,12 @@ +package datadog.trace.instrumentation.jetty9 + +import com.datadog.appsec.AppSecInactiveHttpServerTest +import datadog.trace.agent.test.base.HttpServer +import test.JettyServer +import test.TestHandler + +class Jetty9InactiveAppSecTest extends AppSecInactiveHttpServerTest { + HttpServer server() { + new JettyServer(TestHandler.INSTANCE) + } +} diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy new file mode 100644 index 00000000000..35b4b2c2e51 --- /dev/null +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy @@ -0,0 +1,107 @@ +package datadog.trace.instrumentation.jetty9 + +import datadog.trace.agent.test.base.HttpServer +import datadog.trace.agent.test.base.HttpServerTest +import datadog.trace.agent.test.naming.TestingGenericHttpNamingConventions +import org.eclipse.jetty.server.Server +import org.eclipse.jetty.server.handler.AbstractHandler +import test.JettyServer +import test.TestHandler + +abstract class Jetty9Test extends HttpServerTest { + + @Override + HttpServer server() { + new JettyServer(handler(), useWebsocketPojoEndpoint()) + } + + AbstractHandler handler() { + TestHandler.INSTANCE + } + + @Override + String component() { + "jetty-server" + } + + @Override + String expectedOperationName() { + operation() + } + + protected boolean useWebsocketPojoEndpoint() { + // only supported in jetty 10+ + isLatestDepTest + } + + + @Override + protected boolean enabledFinishTimingChecks() { + true + } + + @Override + boolean testExceptionBody() { + false + } + + @Override + boolean testBodyUrlencoded() { + true + } + + @Override + boolean testRequestBody() { + true + } + + @Override + boolean testRequestBodyISVariant() { + true + } + + @Override + boolean testUserBlocking() { + true + } + + @Override + boolean testBlocking() { + true + } + + @Override + boolean testBlockingOnResponse() { + true + } + + @Override + boolean hasExtraErrorInformation() { + true + } + + @Override + boolean testBodyMultipart() { + true + } + + @Override + boolean testSessionId() { + true + } + + @Override + boolean testWebsockets() { + return super.testWebsockets() && (getServer() as JettyServer).websocketAvailable + } +} + +class Jetty9V0ForkedTest extends Jetty9Test implements TestingGenericHttpNamingConventions.ServerV0 { +} + +class Jetty9V1ForkedTest extends Jetty9Test implements TestingGenericHttpNamingConventions.ServerV1 { + @Override + protected boolean useWebsocketPojoEndpoint() { + false + } +} diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/src/test/groovy/datadog/trace/instrumentation/jetty9/JettyContinuationHandlerTest.groovy b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/src/test/groovy/datadog/trace/instrumentation/jetty9/JettyContinuationHandlerTest.groovy new file mode 100644 index 00000000000..a9999d16b8b --- /dev/null +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/src/test/groovy/datadog/trace/instrumentation/jetty9/JettyContinuationHandlerTest.groovy @@ -0,0 +1,98 @@ +package datadog.trace.instrumentation.jetty9 + +import datadog.trace.agent.test.asserts.TraceAssert +import datadog.trace.agent.test.naming.TestingGenericHttpNamingConventions +import datadog.trace.bootstrap.instrumentation.api.Tags +import datadog.trace.instrumentation.servlet3.AsyncDispatcherDecorator +import org.eclipse.jetty.continuation.Continuation +import org.eclipse.jetty.continuation.ContinuationSupport +import org.eclipse.jetty.server.Request +import org.eclipse.jetty.server.handler.AbstractHandler +import org.eclipse.jetty.server.session.SessionHandler + +import javax.servlet.MultipartConfigElement +import javax.servlet.ServletException +import javax.servlet.http.HttpServletRequest +import javax.servlet.http.HttpServletResponse +import java.util.concurrent.ExecutorService +import java.util.concurrent.Executors + +import static test.TestHandler.handleRequest +import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.SUCCESS +import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.TIMEOUT +import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.TIMEOUT_ERROR +import static datadog.trace.instrumentation.servlet3.TestServlet3.SERVLET_TIMEOUT + +abstract class JettyContinuationHandlerTest extends Jetty9Test { + + @Override + AbstractHandler handler() { + def ret = new SessionHandler() + ret.handler = ContinuationTestHandler.INSTANCE + ret + } + + static class ContinuationTestHandler extends AbstractHandler { + private static final MultipartConfigElement MULTIPART_CONFIG_ELEMENT = new MultipartConfigElement(System.getProperty('java.io.tmpdir')) + static final ContinuationTestHandler INSTANCE = new ContinuationTestHandler() + final ExecutorService executorService = Executors.newSingleThreadExecutor() + + @Override + void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + request.setAttribute('org.eclipse.jetty.multipartConfig', MULTIPART_CONFIG_ELEMENT) + request.setAttribute('org.eclipse.multipartConfig', MULTIPART_CONFIG_ELEMENT) + final Continuation continuation = ContinuationSupport.getContinuation(request) + // some versions of jetty (like 9.4.15.v20190215) get into a loop: + // after an exception from handleRequest, the error will be handled here again; + // calling handleRequest will cause a new exception, and the process will repeat. + // this happens in the /exception endpoint + if (!request.getAttribute('javax.servlet.error.status_code')) { + if (continuation.initial) { + continuation.suspend() + executorService.execute { + continuation.resume() + } + } else { + handleRequest(baseRequest, response) + } + } + baseRequest.handled = true + } + } + + @Override + boolean hasHandlerSpan() { + true + } + + @Override + void handlerSpan(TraceAssert trace, ServerEndpoint endpoint = SUCCESS) { + trace.span { + serviceName expectedServiceName() + operationName 'servlet.dispatch' + resourceName 'servlet.dispatch' // should this not be a path? + childOfPrevious() + errored(endpoint.throwsException || endpoint == TIMEOUT_ERROR) + tags { + "$Tags.COMPONENT" AsyncDispatcherDecorator.DECORATE.component() + if (endpoint == TIMEOUT || endpoint == TIMEOUT_ERROR) { + "timeout" SERVLET_TIMEOUT + } + if (endpoint.throwsException) { + "error.message" endpoint.body + "error.type" { it == Exception.name || it == InputMismatchException.name } + "error.stack" String + } + defaultTags() + } + } + } +} + +class JettyContinuationHandlerV0ForkedTest extends JettyContinuationHandlerTest implements TestingGenericHttpNamingConventions.ServerV0 { + +} + +class JettyContinuationHandlerV1ForkedTest extends JettyContinuationHandlerTest implements TestingGenericHttpNamingConventions.ServerV1 { + +} diff --git a/settings.gradle.kts b/settings.gradle.kts index 62807b078f9..a5ad5f456f6 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -407,6 +407,7 @@ include( ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-7.0", ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-7.6", ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0", + ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0.4", ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-11.0", ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-12.0", ":dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-7.0", From 49518b26b966e046b74b732daac86a755711c677 Mon Sep 17 00:00:00 2001 From: Brice Dutheil Date: Mon, 6 Oct 2025 15:08:41 +0200 Subject: [PATCH 02/12] wip jetty 9.4.21 --- .../JettyContinuationHandlerTest.groovy | 2 - .../jetty-server-9.4.21/build.gradle | 218 +++--------------- .../instrumentation/jetty9/Jetty9Test.groovy | 6 +- settings.gradle.kts | 1 + 4 files changed, 28 insertions(+), 199 deletions(-) diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/test/groovy/datadog/trace/instrumentation/jetty9/JettyContinuationHandlerTest.groovy b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/test/groovy/datadog/trace/instrumentation/jetty9/JettyContinuationHandlerTest.groovy index c63aa1af25f..a9999d16b8b 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/test/groovy/datadog/trace/instrumentation/jetty9/JettyContinuationHandlerTest.groovy +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/test/groovy/datadog/trace/instrumentation/jetty9/JettyContinuationHandlerTest.groovy @@ -25,8 +25,6 @@ import static datadog.trace.instrumentation.servlet3.TestServlet3.SERVLET_TIMEOU abstract class JettyContinuationHandlerTest extends Jetty9Test { - - @Override AbstractHandler handler() { def ret = new SessionHandler() diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/build.gradle b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/build.gradle index 2f89d95e72c..ea2daaf4df6 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/build.gradle +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/build.gradle @@ -1,32 +1,4 @@ muzzle { - pass { - name = '9_full_series' - group = "org.eclipse.jetty" - module = 'jetty-server' - versions = "[9,10)" - assertInverse = true - } - pass { - name = 'before_904' - group = "org.eclipse.jetty" - module = 'jetty-server' - versions = "[9,9.0.4)" - assertInverse = true - } - pass { - name = 'between_904_and_930' - group = "org.eclipse.jetty" - module = 'jetty-server' - versions = "[9.0.4,9.3.0.M1)" - assertInverse = true - } - pass { - name = 'between_930_and_9421' - group = "org.eclipse.jetty" - module = 'jetty-server' - versions = "[9.3.0.M1,9.4.21)" - assertInverse = true - } pass { name = 'between_9421_and_10' group = "org.eclipse.jetty" @@ -34,189 +6,51 @@ muzzle { versions = "[9.4.21,10)" assertInverse = true } - pass { - name = '10_series' - group = "org.eclipse.jetty" - module = 'jetty-server' - versions = "[10,11)" - assertInverse = true - javaVersion = 11 - } - pass { - name = 'named_dispatches' - group = 'org.eclipse.jetty' - module = 'jetty-server' - versions = "[10.0.16,11),[11.0.16,12)" - assertInverse = true - javaVersion = 11 - } - pass { - name = 'between_10_and_12' - group = "org.eclipse.jetty" - module = 'jetty-server' - versions = "[10,12)" - assertInverse = true - javaVersion = 11 - } } -apply plugin: 'java-test-fixtures' apply from: "$rootDir/gradle/java.gradle" -sourceSets { - main_jetty904 { - java.srcDirs "${project.projectDir}/src/main/java_jetty904" - } - main_jetty93 { - java.srcDirs "${project.projectDir}/src/main/java_jetty93" - } - main_jetty9421 { - java.srcDirs "${project.projectDir}/src/main/java_jetty9421" - } - main_jetty10 { - java.srcDirs "${project.projectDir}/src/main/java_jetty10" - } -} - -jar { - from sourceSets.main_jetty904.output - from sourceSets.main_jetty93.output - from sourceSets.main_jetty9421.output - from sourceSets.main_jetty10.output -} - -List extraInstrumentJavaDirs = [] -['main_jetty904', 'main_jetty93', 'main_jetty9421', 'main_jetty10'].each { - JavaCompile compileTask = tasks["compile${it.capitalize()}Java"] - extraInstrumentJavaDirs << compileTask.destinationDirectory - compileTask.dependsOn tasks['compileJava'] - project.afterEvaluate { p -> - tasks['instrumentJava'].dependsOn compileTask - tasks["forbiddenApis${it.capitalize()}"].dependsOn("instrument${it.capitalize()}Java") - } -} - -instrument { - // the instrumenters are in main, but helpers/advice in possibly other sourceSets - // The muzzle generator of references run as part of InstrumentJava needs access to - // these extra classes. The task dependencies for instrumentJava are added above - additionalClasspath = [ - instrumentJava: extraInstrumentJavaDirs - ] -} - -tasks.named("compileMain_jetty10Java", JavaCompile) { - setJavaVersion(it, 11) -} - -addTestSuiteForDir('jetty92ForkedTest', 'test') -addTestSuiteForDir('jetty94ForkedTest', 'test') -addTestSuiteForDir('latestDepJetty9ForkedTest', 'test') -addTestSuiteForDir('latestDepForkedTest', 'test') - -tasks.named("latestDepForkedTest") { - javaLauncher = getJavaLauncherFor(11) -} -tasks.named("compileLatestDepForkedTestGroovy", GroovyCompile) { - setJavaVersion(it, 11) -} +addTestSuiteForDir('latestDepTest', 'test') +addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'test') dependencies { - compileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.0.0.v20130308' - implementation project(':dd-java-agent:instrumentation:jetty:jetty-common') + compileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.21.v20190926' + compileOnly project(':internal-api') + compileOnly project(':dd-java-agent:agent-tooling') + compileOnly project(':dd-java-agent:agent-bootstrap') + compileOnly project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0") - main_jetty904CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.0.4.v20130625' - main_jetty904CompileOnly project(':internal-api') - main_jetty904CompileOnly project(':dd-java-agent:agent-tooling') - main_jetty904CompileOnly project(':dd-java-agent:agent-bootstrap') - // not pretty, but we can't depend on sourceSets.main.output; - // that would make a dependency on the classes task due to the - // intermediation of the InstrumentPlugin, creating a circular - // dependency (the instrument plugin needs all the sourceSets - // compiled to properly generate References) - main_jetty904CompileOnly files("$project.buildDir/classes/java/raw") - - main_jetty93CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.3.0.v20150612' - main_jetty93CompileOnly project(':internal-api') - main_jetty93CompileOnly project(':dd-java-agent:agent-tooling') - main_jetty93CompileOnly project(':dd-java-agent:agent-bootstrap') - main_jetty93CompileOnly files("$project.buildDir/classes/java/raw") { - builtBy = ['compileJava'] - } - - main_jetty9421CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.21.v20190926' - main_jetty9421CompileOnly project(':internal-api') - main_jetty9421CompileOnly project(':dd-java-agent:agent-tooling') - main_jetty9421CompileOnly project(':dd-java-agent:agent-bootstrap') - main_jetty9421CompileOnly files("$project.buildDir/classes/java/raw") { - builtBy = ['compileJava'] - } - - main_jetty10CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '10.0.0' - - main_jetty10CompileOnly project(':internal-api') - main_jetty10CompileOnly project(':dd-java-agent:agent-tooling') - main_jetty10CompileOnly project(':dd-java-agent:agent-bootstrap') - main_jetty10Implementation project(':dd-java-agent:instrumentation:jetty:jetty-common') - main_jetty10CompileOnly files("$project.buildDir/classes/java/raw") { - builtBy = ['compileJava'] - } - - testFixturesImplementation(project(':dd-java-agent:instrumentation-testing')) { - exclude group: 'org.eclipse.jetty', module: 'jetty-server' - } // Don't want to conflict with jetty from the test server. testImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-util-9.4.31') - String jetty9Version = '9.0.0.v20130308' - testFixturesCompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: jetty9Version - testFixturesCompileOnly group: 'org.eclipse.jetty', name: 'jetty-servlet', version: jetty9Version - testFixturesImplementation group: 'javax.websocket', name: 'javax.websocket-api', version: '1.0' - testImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: jetty9Version - testImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: jetty9Version - testImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: jetty9Version + testImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.21.v20190926' + testImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.4.21.v20190926' + testImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.4.21.v20190926' testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-7.0') testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-2.2') - testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-8.1.3') + testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:javax-websocket-1.0') - testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:jakarta-websocket-2.0') - testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:jetty-websocket:jetty-websocket-10') testImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) - testFixturesImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') - - jetty92TestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.2.30.v20200428' - jetty92TestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.2.30.v20200428' - jetty92TestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.2.30.v20200428' - jetty92TestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.2.30.v20200428' - jetty92TestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.2') - jetty92TestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) - - jetty94TestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.15.v20190215' - jetty94TestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.4.15.v20190215' - jetty94TestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.4.15.v20190215' - jetty94TestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.4.15.v20190215' - jetty94TestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') - jetty94TestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) - - latestDepJetty9TestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.+' - latestDepJetty9TestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.+' - latestDepJetty9TestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.+' - latestDepJetty9TestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.+' - - latestDepJetty9TestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') - latestDepJetty9TestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) - - latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '10.+' - latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '10.+' - latestDepTestImplementation group: 'org.eclipse.jetty.websocket', name: 'websocket-javax-server', version: '10.+' - latestDepTestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') + testImplementation testFixtures(project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0")) + + latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.+' + latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.+' + latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.+' + latestDepTestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.+' latestDepTestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) + latestDepForkedTestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.+' + latestDepForkedTestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.+' + latestDepForkedTestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.+' + latestDepForkedTestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) } -configurations.getByName('latestDepForkedTestRuntimeClasspath').resolutionStrategy { - force libs.slf4j + +configurations.named('latestDepForkedTestRuntimeClasspath') { + resolutionStrategy { + force libs.slf4j + } } diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy index 35b4b2c2e51..38eb20340c6 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy @@ -31,7 +31,7 @@ abstract class Jetty9Test extends HttpServerTest { protected boolean useWebsocketPojoEndpoint() { // only supported in jetty 10+ - isLatestDepTest + false } @@ -100,8 +100,4 @@ class Jetty9V0ForkedTest extends Jetty9Test implements TestingGenericHttpNamingC } class Jetty9V1ForkedTest extends Jetty9Test implements TestingGenericHttpNamingConventions.ServerV1 { - @Override - protected boolean useWebsocketPojoEndpoint() { - false - } } diff --git a/settings.gradle.kts b/settings.gradle.kts index a5ad5f456f6..fc7d96de54d 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -408,6 +408,7 @@ include( ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-7.6", ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0", ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0.4", + ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.4.21", ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-11.0", ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-12.0", ":dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-7.0", From 5c0dcb644bc25f860fe9406a5b216cfd1ca0b992 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Mon, 6 Oct 2025 17:01:30 +0200 Subject: [PATCH 03/12] wipwip --- .../jetty-server-10.0/build.gradle | 36 ----- .../jetty10/JettyServerInstrumentation.java | 5 - .../jetty10/RequestInstrumentation.java | 5 - .../jetty-server-9.0.4/build.gradle | 29 ++-- .../jetty-server-9.0/build.gradle | 1 + .../JettyCommitResponseInstrumentation.java | 6 + .../jetty-server-9.3/build.gradle | 124 +++++------------- .../instrumentation/jetty9/Jetty9Test.groovy | 7 +- .../jetty-server-9.4.21/build.gradle | 25 ++-- settings.gradle.kts | 1 + 10 files changed, 65 insertions(+), 174 deletions(-) diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/build.gradle b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/build.gradle index 2f89d95e72c..c64bbc4d112 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/build.gradle +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/build.gradle @@ -1,41 +1,5 @@ muzzle { pass { - name = '9_full_series' - group = "org.eclipse.jetty" - module = 'jetty-server' - versions = "[9,10)" - assertInverse = true - } - pass { - name = 'before_904' - group = "org.eclipse.jetty" - module = 'jetty-server' - versions = "[9,9.0.4)" - assertInverse = true - } - pass { - name = 'between_904_and_930' - group = "org.eclipse.jetty" - module = 'jetty-server' - versions = "[9.0.4,9.3.0.M1)" - assertInverse = true - } - pass { - name = 'between_930_and_9421' - group = "org.eclipse.jetty" - module = 'jetty-server' - versions = "[9.3.0.M1,9.4.21)" - assertInverse = true - } - pass { - name = 'between_9421_and_10' - group = "org.eclipse.jetty" - module = 'jetty-server' - versions = "[9.4.21,10)" - assertInverse = true - } - pass { - name = '10_series' group = "org.eclipse.jetty" module = 'jetty-server' versions = "[10,11)" diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyServerInstrumentation.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyServerInstrumentation.java index 874a618c0db..592f6157180 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyServerInstrumentation.java +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyServerInstrumentation.java @@ -44,11 +44,6 @@ public JettyServerInstrumentation() { super("jetty"); } - @Override - public String muzzleDirective() { - return "10_series"; - } - @Override public String instrumentedType() { return "org.eclipse.jetty.server.HttpChannel"; diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/RequestInstrumentation.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/RequestInstrumentation.java index d2a487f37e7..eab39505714 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/RequestInstrumentation.java +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/RequestInstrumentation.java @@ -15,11 +15,6 @@ public RequestInstrumentation() { super("jetty"); } - @Override - public String muzzleDirective() { - return "10_series"; - } - @Override public String instrumentedType() { return "org.eclipse.jetty.server.Request"; diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/build.gradle b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/build.gradle index 14a67927c28..2acb8e986a1 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/build.gradle +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/build.gradle @@ -14,17 +14,9 @@ addTestSuiteExtendingForDir("latestDepForkedTest", "latestDepTest", "test") dependencies { implementation project(':dd-java-agent:instrumentation:jetty:jetty-common') - compileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.0.4.v20130625' - compileOnly project(':internal-api') - compileOnly project(':dd-java-agent:agent-tooling') - compileOnly project(':dd-java-agent:agent-bootstrap') - // not pretty, but we can't depend on sourceSets.main.output; - // that would make a dependency on the classes task due to the - // intermediation of the InstrumentPlugin, creating a circular - // dependency (the instrument plugin needs all the sourceSets - // compiled to properly generate References) - compileOnly project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0") + implementation project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0") + compileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.0.4.v20130625' // Don't want to conflict with jetty from the test server. testImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' @@ -34,21 +26,24 @@ dependencies { testImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.0.4.v20130625' testImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.0.4.v20130625' testImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.0.4.v20130625' - testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-7.0') - testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-2.2') - testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-8.1.3') - testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:javax-websocket-1.0') - testImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') testImplementation testFixtures(project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0")) - testImplementation project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0") - testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.2') + testImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) + + testRuntimeOnly project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0") + testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-2.2') + testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:javax-websocket-1.0') + // test different appsec instrumentation (only the right one for the tested version will apply but we test everything together) + testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-7.0') + testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-8.1.3') + testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.2') latestDepTestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.2.30.v20200428' latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.2.+' latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.2.+' latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.2.+' latestDepTestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.2.+' + latestDepForkedTestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.2.+' latestDepForkedTestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.2.+' latestDepForkedTestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.2.+' diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/build.gradle b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/build.gradle index 0f4128fa1c4..3a1e9dfa6dd 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/build.gradle +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/build.gradle @@ -7,6 +7,7 @@ muzzle { assertInverse = true } pass { + name = "before_904" group = "org.eclipse.jetty" module = 'jetty-server' versions = "[9,9.0.4)" diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty9/JettyCommitResponseInstrumentation.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty9/JettyCommitResponseInstrumentation.java index 210f706a66d..49a4752fe87 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty9/JettyCommitResponseInstrumentation.java +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty9/JettyCommitResponseInstrumentation.java @@ -64,6 +64,12 @@ public String[] helperClassNames() { }; } + @Override + public String muzzleDirective() { + return "before_904"; + } + + @Override public void methodAdvice(MethodTransformer transformer) { transformer.applyAdvice( diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/build.gradle b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/build.gradle index 468e46ebeb5..5f985235965 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/build.gradle +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/build.gradle @@ -9,114 +9,50 @@ muzzle { apply from: "$rootDir/gradle/java.gradle" -addTestSuiteForDir('jetty92ForkedTest', 'test') -addTestSuiteForDir('jetty94ForkedTest', 'test') -addTestSuiteForDir('latestDepJetty9ForkedTest', 'test') -addTestSuiteForDir('latestDepForkedTest', 'test') -tasks.named("latestDepForkedTest") { - javaLauncher = getJavaLauncherFor(11) -} -tasks.named("compileLatestDepForkedTestGroovy", GroovyCompile) { - setJavaVersion(it, 11) -} +addTestSuiteForDir('latestDepTest', 'test') +addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'test') dependencies { - compileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.0.0.v20130308' - implementation project(':dd-java-agent:instrumentation:jetty:jetty-common') + compileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.3.0.M1' + compileOnly project(':internal-api') + compileOnly project(':dd-java-agent:agent-tooling') + compileOnly project(':dd-java-agent:agent-bootstrap') + compileOnly project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0") - main_jetty904CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.0.4.v20130625' - main_jetty904CompileOnly project(':internal-api') - main_jetty904CompileOnly project(':dd-java-agent:agent-tooling') - main_jetty904CompileOnly project(':dd-java-agent:agent-bootstrap') - // not pretty, but we can't depend on sourceSets.main.output; - // that would make a dependency on the classes task due to the - // intermediation of the InstrumentPlugin, creating a circular - // dependency (the instrument plugin needs all the sourceSets - // compiled to properly generate References) - main_jetty904CompileOnly files("$project.buildDir/classes/java/raw") - - main_jetty93CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.3.0.v20150612' - main_jetty93CompileOnly project(':internal-api') - main_jetty93CompileOnly project(':dd-java-agent:agent-tooling') - main_jetty93CompileOnly project(':dd-java-agent:agent-bootstrap') - main_jetty93CompileOnly files("$project.buildDir/classes/java/raw") { - builtBy = ['compileJava'] - } - - main_jetty9421CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.21.v20190926' - main_jetty9421CompileOnly project(':internal-api') - main_jetty9421CompileOnly project(':dd-java-agent:agent-tooling') - main_jetty9421CompileOnly project(':dd-java-agent:agent-bootstrap') - main_jetty9421CompileOnly files("$project.buildDir/classes/java/raw") { - builtBy = ['compileJava'] - } - - main_jetty10CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '10.0.0' - - main_jetty10CompileOnly project(':internal-api') - main_jetty10CompileOnly project(':dd-java-agent:agent-tooling') - main_jetty10CompileOnly project(':dd-java-agent:agent-bootstrap') - main_jetty10Implementation project(':dd-java-agent:instrumentation:jetty:jetty-common') - main_jetty10CompileOnly files("$project.buildDir/classes/java/raw") { - builtBy = ['compileJava'] - } - - testFixturesImplementation(project(':dd-java-agent:instrumentation-testing')) { - exclude group: 'org.eclipse.jetty', module: 'jetty-server' - } // Don't want to conflict with jetty from the test server. testImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-util-9.4.31') - String jetty9Version = '9.0.0.v20130308' - testFixturesCompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: jetty9Version - testFixturesCompileOnly group: 'org.eclipse.jetty', name: 'jetty-servlet', version: jetty9Version - testFixturesImplementation group: 'javax.websocket', name: 'javax.websocket-api', version: '1.0' - testImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: jetty9Version - testImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: jetty9Version - testImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: jetty9Version - testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-7.0') - testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-2.2') - testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-8.1.3') - testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:javax-websocket-1.0') - testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:jakarta-websocket-2.0') - testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:jetty-websocket:jetty-websocket-10') + testImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.3.0.M1' + testImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.3.0.M1' + testImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.3.0.M1' testImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) - testFixturesImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') + testImplementation testFixtures(project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0")) - jetty92TestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.2.30.v20200428' - jetty92TestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.2.30.v20200428' - jetty92TestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.2.30.v20200428' - jetty92TestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.2.30.v20200428' - jetty92TestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.2') - jetty92TestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) - - jetty94TestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.15.v20190215' - jetty94TestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.4.15.v20190215' - jetty94TestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.4.15.v20190215' - jetty94TestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.4.15.v20190215' - jetty94TestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') - jetty94TestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) - - latestDepJetty9TestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.+' - latestDepJetty9TestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.+' - latestDepJetty9TestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.+' - latestDepJetty9TestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.+' - - latestDepJetty9TestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') - latestDepJetty9TestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) + testRuntimeOnly project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0") + testRuntimeOnly project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0.4") + testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-2.2') + testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0') + testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:javax-websocket-1.0') + // test different appsec instrumentation (only the right one for the tested version will apply but we test everything together) + testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-7.0') + testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-8.1.3') + testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.2') + testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') - latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '10.+' - latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '10.+' - latestDepTestImplementation group: 'org.eclipse.jetty.websocket', name: 'websocket-javax-server', version: '10.+' - latestDepTestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') + latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.20.v20190813' + latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.4.20.v20190813' + latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.4.20.v20190813' + latestDepTestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.4.20.v20190813' latestDepTestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) -} -configurations.getByName('latestDepForkedTestRuntimeClasspath').resolutionStrategy { - force libs.slf4j + + latestDepForkedTestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.20.v20190813' + latestDepForkedTestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.4.20.v20190813' + latestDepForkedTestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.4.20.v20190813' + latestDepForkedTestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) } diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy index 35b4b2c2e51..32a1b300c28 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy @@ -30,8 +30,7 @@ abstract class Jetty9Test extends HttpServerTest { } protected boolean useWebsocketPojoEndpoint() { - // only supported in jetty 10+ - isLatestDepTest + false } @@ -100,8 +99,4 @@ class Jetty9V0ForkedTest extends Jetty9Test implements TestingGenericHttpNamingC } class Jetty9V1ForkedTest extends Jetty9Test implements TestingGenericHttpNamingConventions.ServerV1 { - @Override - protected boolean useWebsocketPojoEndpoint() { - false - } } diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/build.gradle b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/build.gradle index ea2daaf4df6..028898044f3 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/build.gradle +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/build.gradle @@ -30,27 +30,30 @@ dependencies { testImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.21.v20190926' testImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.4.21.v20190926' testImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.4.21.v20190926' - testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-7.0') - testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-2.2') - testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') - testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:javax-websocket-1.0') testImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') testImplementation testFixtures(project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0")) - + + testRuntimeOnly project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0") + testRuntimeOnly project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0.4") + testRuntimeOnly project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.3") + testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-2.2') + testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0') + // test different appsec instrumentation (only the right one for the tested version will apply but we test everything together) + testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-7.0') + testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-8.1.3') + testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.2') + testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') + + latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.+' latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.+' latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.+' latestDepTestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.+' latestDepTestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) + latestDepForkedTestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.+' latestDepForkedTestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.+' latestDepForkedTestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.+' latestDepForkedTestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) } - -configurations.named('latestDepForkedTestRuntimeClasspath') { - resolutionStrategy { - force libs.slf4j - } -} diff --git a/settings.gradle.kts b/settings.gradle.kts index fc7d96de54d..9a6f82cbef2 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -408,6 +408,7 @@ include( ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-7.6", ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0", ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0.4", + ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.3", ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.4.21", ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-11.0", ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-12.0", From a39b1dfdac0bfea2b921c8527c0e201352b7c792 Mon Sep 17 00:00:00 2001 From: Brice Dutheil Date: Mon, 6 Oct 2025 17:18:58 +0200 Subject: [PATCH 04/12] fix: muzzle depes --- .../jetty-server/jetty-server-9.0.4/build.gradle | 5 +++-- .../jetty/jetty-server/jetty-server-9.3/build.gradle | 9 +++------ .../jetty-server/jetty-server-9.4.21/build.gradle | 12 +++++------- 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/build.gradle b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/build.gradle index 2acb8e986a1..9d174eb9b5b 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/build.gradle +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/build.gradle @@ -15,8 +15,8 @@ addTestSuiteExtendingForDir("latestDepForkedTest", "latestDepTest", "test") dependencies { implementation project(':dd-java-agent:instrumentation:jetty:jetty-common') implementation project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0") - compileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.0.4.v20130625' + // Don't want to conflict with jetty from the test server. testImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' @@ -30,10 +30,11 @@ dependencies { testImplementation testFixtures(project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0")) testImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) + // Include all jetty-server instrumentation modules for testing. Only the version-compatible module will apply at runtime. testRuntimeOnly project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0") testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-2.2') testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:javax-websocket-1.0') - // test different appsec instrumentation (only the right one for the tested version will apply but we test everything together) + // Include all appsec instrumentation modules for testing. Only the version-compatible module will apply at runtime. testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-7.0') testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-8.1.3') testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.2') diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/build.gradle b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/build.gradle index 5f985235965..9fcb304d6d3 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/build.gradle +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/build.gradle @@ -9,17 +9,13 @@ muzzle { apply from: "$rootDir/gradle/java.gradle" - addTestSuiteForDir('latestDepTest', 'test') addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'test') dependencies { implementation project(':dd-java-agent:instrumentation:jetty:jetty-common') + implementation project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0") compileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.3.0.M1' - compileOnly project(':internal-api') - compileOnly project(':dd-java-agent:agent-tooling') - compileOnly project(':dd-java-agent:agent-bootstrap') - compileOnly project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0") // Don't want to conflict with jetty from the test server. testImplementation(project(':dd-java-agent:instrumentation-testing')) { @@ -34,12 +30,13 @@ dependencies { testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') testImplementation testFixtures(project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0")) + // Include all jetty-server instrumentation modules for testing. Only the version-compatible module will apply at runtime. testRuntimeOnly project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0") testRuntimeOnly project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0.4") testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-2.2') testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0') testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:javax-websocket-1.0') - // test different appsec instrumentation (only the right one for the tested version will apply but we test everything together) + // Include all appsec instrumentation modules for testing. Only the version-compatible module will apply at runtime. testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-7.0') testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-8.1.3') testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.2') diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/build.gradle b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/build.gradle index 028898044f3..3e568151942 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/build.gradle +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/build.gradle @@ -15,11 +15,9 @@ addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'test') dependencies { implementation project(':dd-java-agent:instrumentation:jetty:jetty-common') + implementation project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0") + compileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.21.v20190926' - compileOnly project(':internal-api') - compileOnly project(':dd-java-agent:agent-tooling') - compileOnly project(':dd-java-agent:agent-bootstrap') - compileOnly project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0") // Don't want to conflict with jetty from the test server. testImplementation(project(':dd-java-agent:instrumentation-testing')) { @@ -30,22 +28,22 @@ dependencies { testImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.21.v20190926' testImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.4.21.v20190926' testImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.4.21.v20190926' - testImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') testImplementation testFixtures(project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0")) + testImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) + // Include all jetty-server instrumentation modules for testing. Only the version-compatible module will apply at runtime. testRuntimeOnly project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0") testRuntimeOnly project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0.4") testRuntimeOnly project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.3") testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-2.2') testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0') - // test different appsec instrumentation (only the right one for the tested version will apply but we test everything together) + // Include all appsec instrumentation modules for testing. Only the version-compatible module will apply at runtime. testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-7.0') testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-8.1.3') testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.2') testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') - latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.+' latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.+' latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.+' From 26a51f07644e229b9414631ca6b33742ef25932c Mon Sep 17 00:00:00 2001 From: Brice Dutheil Date: Mon, 6 Oct 2025 17:55:21 +0200 Subject: [PATCH 05/12] wip jetty 10.0 --- .../jetty-server-10.0/build.gradle | 172 ++++-------------- .../JettyContinuationHandlerTest.groovy | 98 ---------- settings.gradle.kts | 1 + 3 files changed, 38 insertions(+), 233 deletions(-) delete mode 100644 dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty9/JettyContinuationHandlerTest.groovy diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/build.gradle b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/build.gradle index c64bbc4d112..56aa50c23eb 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/build.gradle +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/build.gradle @@ -24,163 +24,65 @@ muzzle { } } -apply plugin: 'java-test-fixtures' apply from: "$rootDir/gradle/java.gradle" -sourceSets { - main_jetty904 { - java.srcDirs "${project.projectDir}/src/main/java_jetty904" - } - main_jetty93 { - java.srcDirs "${project.projectDir}/src/main/java_jetty93" - } - main_jetty9421 { - java.srcDirs "${project.projectDir}/src/main/java_jetty9421" - } - main_jetty10 { - java.srcDirs "${project.projectDir}/src/main/java_jetty10" - } -} - -jar { - from sourceSets.main_jetty904.output - from sourceSets.main_jetty93.output - from sourceSets.main_jetty9421.output - from sourceSets.main_jetty10.output -} - -List extraInstrumentJavaDirs = [] -['main_jetty904', 'main_jetty93', 'main_jetty9421', 'main_jetty10'].each { - JavaCompile compileTask = tasks["compile${it.capitalize()}Java"] - extraInstrumentJavaDirs << compileTask.destinationDirectory - compileTask.dependsOn tasks['compileJava'] - project.afterEvaluate { p -> - tasks['instrumentJava'].dependsOn compileTask - tasks["forbiddenApis${it.capitalize()}"].dependsOn("instrument${it.capitalize()}Java") - } -} - -instrument { - // the instrumenters are in main, but helpers/advice in possibly other sourceSets - // The muzzle generator of references run as part of InstrumentJava needs access to - // these extra classes. The task dependencies for instrumentJava are added above - additionalClasspath = [ - instrumentJava: extraInstrumentJavaDirs - ] -} - -tasks.named("compileMain_jetty10Java", JavaCompile) { - setJavaVersion(it, 11) -} - -addTestSuiteForDir('jetty92ForkedTest', 'test') -addTestSuiteForDir('jetty94ForkedTest', 'test') -addTestSuiteForDir('latestDepJetty9ForkedTest', 'test') -addTestSuiteForDir('latestDepForkedTest', 'test') - -tasks.named("latestDepForkedTest") { - javaLauncher = getJavaLauncherFor(11) -} -tasks.named("compileLatestDepForkedTestGroovy", GroovyCompile) { - setJavaVersion(it, 11) -} +addTestSuiteForDir("latestDepTest", "test") +addTestSuiteExtendingForDir("latestDepForkedTest", "latestDepTest", "test") dependencies { - compileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.0.0.v20130308' - implementation project(':dd-java-agent:instrumentation:jetty:jetty-common') + implementation project(':dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0') + compileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '10.0.0' - main_jetty904CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.0.4.v20130625' - main_jetty904CompileOnly project(':internal-api') - main_jetty904CompileOnly project(':dd-java-agent:agent-tooling') - main_jetty904CompileOnly project(':dd-java-agent:agent-bootstrap') - // not pretty, but we can't depend on sourceSets.main.output; - // that would make a dependency on the classes task due to the - // intermediation of the InstrumentPlugin, creating a circular - // dependency (the instrument plugin needs all the sourceSets - // compiled to properly generate References) - main_jetty904CompileOnly files("$project.buildDir/classes/java/raw") - - main_jetty93CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.3.0.v20150612' - main_jetty93CompileOnly project(':internal-api') - main_jetty93CompileOnly project(':dd-java-agent:agent-tooling') - main_jetty93CompileOnly project(':dd-java-agent:agent-bootstrap') - main_jetty93CompileOnly files("$project.buildDir/classes/java/raw") { - builtBy = ['compileJava'] - } - - main_jetty9421CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.21.v20190926' - main_jetty9421CompileOnly project(':internal-api') - main_jetty9421CompileOnly project(':dd-java-agent:agent-tooling') - main_jetty9421CompileOnly project(':dd-java-agent:agent-bootstrap') - main_jetty9421CompileOnly files("$project.buildDir/classes/java/raw") { - builtBy = ['compileJava'] - } - - main_jetty10CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '10.0.0' - - main_jetty10CompileOnly project(':internal-api') - main_jetty10CompileOnly project(':dd-java-agent:agent-tooling') - main_jetty10CompileOnly project(':dd-java-agent:agent-bootstrap') - main_jetty10Implementation project(':dd-java-agent:instrumentation:jetty:jetty-common') - main_jetty10CompileOnly files("$project.buildDir/classes/java/raw") { - builtBy = ['compileJava'] - } - - testFixturesImplementation(project(':dd-java-agent:instrumentation-testing')) { - exclude group: 'org.eclipse.jetty', module: 'jetty-server' - } // Don't want to conflict with jetty from the test server. testImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-util-9.4.31') - String jetty9Version = '9.0.0.v20130308' - testFixturesCompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: jetty9Version - testFixturesCompileOnly group: 'org.eclipse.jetty', name: 'jetty-servlet', version: jetty9Version - testFixturesImplementation group: 'javax.websocket', name: 'javax.websocket-api', version: '1.0' - testImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: jetty9Version - testImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: jetty9Version - testImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: jetty9Version - testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-7.0') + testImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '10.0.0' + testImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '10.0.0' + testImplementation group: 'org.eclipse.jetty.websocket', name: 'websocket-javax-server', version: '10.0.0' + testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') + testImplementation testFixtures(project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0")) + testImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) + + // Include all jetty-server instrumentation modules for testing. Only the version-compatible module will apply at runtime. + testRuntimeOnly project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0") testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-2.2') + testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:javax-websocket-1.0') + // Include all appsec instrumentation modules for testing. Only the version-compatible module will apply at runtime. + testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-7.0') testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-8.1.3') + testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.2') + // Include all websocket instrumentation modules for testing. Only the version-compatible module will apply at runtime. testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:javax-websocket-1.0') testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:jakarta-websocket-2.0') testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:jetty-websocket:jetty-websocket-10') - testImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) - testFixturesImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) - testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') - - jetty92TestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.2.30.v20200428' - jetty92TestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.2.30.v20200428' - jetty92TestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.2.30.v20200428' - jetty92TestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.2.30.v20200428' - jetty92TestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.2') - jetty92TestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) - - jetty94TestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.15.v20190215' - jetty94TestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.4.15.v20190215' - jetty94TestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.4.15.v20190215' - jetty94TestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.4.15.v20190215' - jetty94TestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') - jetty94TestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) - - latestDepJetty9TestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.+' - latestDepJetty9TestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.+' - latestDepJetty9TestImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.+' - latestDepJetty9TestImplementation group: 'org.eclipse.jetty.websocket', name: 'javax-websocket-server-impl', version: '9.+' - - latestDepJetty9TestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') - latestDepJetty9TestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '10.+' latestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '10.+' latestDepTestImplementation group: 'org.eclipse.jetty.websocket', name: 'websocket-javax-server', version: '10.+' latestDepTestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') latestDepTestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) + + latestDepForkedTestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '10.+' + latestDepForkedTestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '10.+' + latestDepForkedTestImplementation group: 'org.eclipse.jetty.websocket', name: 'websocket-javax-server', version: '10.+' + latestDepForkedTestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') + latestDepForkedTestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) +} + +configurations.named('latestDepForkedTestRuntimeClasspath') { + resolutionStrategy { + force libs.slf4j + } +} + +tasks.withType(AbstractCompile).configureEach { + configureCompiler(it, 11, JavaVersion.VERSION_1_8) } -configurations.getByName('latestDepForkedTestRuntimeClasspath').resolutionStrategy { - force libs.slf4j + +tasks.withType(Test).configureEach { + javaLauncher = getJavaLauncherFor(11) } diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty9/JettyContinuationHandlerTest.groovy b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty9/JettyContinuationHandlerTest.groovy deleted file mode 100644 index a9999d16b8b..00000000000 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty9/JettyContinuationHandlerTest.groovy +++ /dev/null @@ -1,98 +0,0 @@ -package datadog.trace.instrumentation.jetty9 - -import datadog.trace.agent.test.asserts.TraceAssert -import datadog.trace.agent.test.naming.TestingGenericHttpNamingConventions -import datadog.trace.bootstrap.instrumentation.api.Tags -import datadog.trace.instrumentation.servlet3.AsyncDispatcherDecorator -import org.eclipse.jetty.continuation.Continuation -import org.eclipse.jetty.continuation.ContinuationSupport -import org.eclipse.jetty.server.Request -import org.eclipse.jetty.server.handler.AbstractHandler -import org.eclipse.jetty.server.session.SessionHandler - -import javax.servlet.MultipartConfigElement -import javax.servlet.ServletException -import javax.servlet.http.HttpServletRequest -import javax.servlet.http.HttpServletResponse -import java.util.concurrent.ExecutorService -import java.util.concurrent.Executors - -import static test.TestHandler.handleRequest -import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.SUCCESS -import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.TIMEOUT -import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.TIMEOUT_ERROR -import static datadog.trace.instrumentation.servlet3.TestServlet3.SERVLET_TIMEOUT - -abstract class JettyContinuationHandlerTest extends Jetty9Test { - - @Override - AbstractHandler handler() { - def ret = new SessionHandler() - ret.handler = ContinuationTestHandler.INSTANCE - ret - } - - static class ContinuationTestHandler extends AbstractHandler { - private static final MultipartConfigElement MULTIPART_CONFIG_ELEMENT = new MultipartConfigElement(System.getProperty('java.io.tmpdir')) - static final ContinuationTestHandler INSTANCE = new ContinuationTestHandler() - final ExecutorService executorService = Executors.newSingleThreadExecutor() - - @Override - void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { - request.setAttribute('org.eclipse.jetty.multipartConfig', MULTIPART_CONFIG_ELEMENT) - request.setAttribute('org.eclipse.multipartConfig', MULTIPART_CONFIG_ELEMENT) - final Continuation continuation = ContinuationSupport.getContinuation(request) - // some versions of jetty (like 9.4.15.v20190215) get into a loop: - // after an exception from handleRequest, the error will be handled here again; - // calling handleRequest will cause a new exception, and the process will repeat. - // this happens in the /exception endpoint - if (!request.getAttribute('javax.servlet.error.status_code')) { - if (continuation.initial) { - continuation.suspend() - executorService.execute { - continuation.resume() - } - } else { - handleRequest(baseRequest, response) - } - } - baseRequest.handled = true - } - } - - @Override - boolean hasHandlerSpan() { - true - } - - @Override - void handlerSpan(TraceAssert trace, ServerEndpoint endpoint = SUCCESS) { - trace.span { - serviceName expectedServiceName() - operationName 'servlet.dispatch' - resourceName 'servlet.dispatch' // should this not be a path? - childOfPrevious() - errored(endpoint.throwsException || endpoint == TIMEOUT_ERROR) - tags { - "$Tags.COMPONENT" AsyncDispatcherDecorator.DECORATE.component() - if (endpoint == TIMEOUT || endpoint == TIMEOUT_ERROR) { - "timeout" SERVLET_TIMEOUT - } - if (endpoint.throwsException) { - "error.message" endpoint.body - "error.type" { it == Exception.name || it == InputMismatchException.name } - "error.stack" String - } - defaultTags() - } - } - } -} - -class JettyContinuationHandlerV0ForkedTest extends JettyContinuationHandlerTest implements TestingGenericHttpNamingConventions.ServerV0 { - -} - -class JettyContinuationHandlerV1ForkedTest extends JettyContinuationHandlerTest implements TestingGenericHttpNamingConventions.ServerV1 { - -} diff --git a/settings.gradle.kts b/settings.gradle.kts index 9a6f82cbef2..3f5b677ed2b 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -410,6 +410,7 @@ include( ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0.4", ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.3", ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.4.21", + ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-10.0", ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-11.0", ":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-12.0", ":dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-7.0", From 27b028a0137014e3288c1c8601e7fb467803b248 Mon Sep 17 00:00:00 2001 From: Brice Dutheil Date: Mon, 6 Oct 2025 17:58:20 +0200 Subject: [PATCH 06/12] style: make google-java-format happy --- .../jetty9/JettyCommitResponseInstrumentation.java | 1 - 1 file changed, 1 deletion(-) diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty9/JettyCommitResponseInstrumentation.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty9/JettyCommitResponseInstrumentation.java index 49a4752fe87..8e478cad61a 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty9/JettyCommitResponseInstrumentation.java +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/main/java/datadog/trace/instrumentation/jetty9/JettyCommitResponseInstrumentation.java @@ -69,7 +69,6 @@ public String muzzleDirective() { return "before_904"; } - @Override public void methodAdvice(MethodTransformer transformer) { transformer.applyAdvice( From a1d615e1bcf114b4a13f68b0e7d4d47b597aa1e0 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Tue, 7 Oct 2025 11:01:31 +0200 Subject: [PATCH 07/12] Fix jetty 11 test --- .../jetty/jetty-server/jetty-server-11.0/build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-11.0/build.gradle b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-11.0/build.gradle index 1aea056660d..39cb974395d 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-11.0/build.gradle +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-11.0/build.gradle @@ -62,6 +62,7 @@ dependencies { testImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:jakarta-servlet-5.0')) testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0') + testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-10.0') testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:jakarta-servlet-5.0') testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:javax-websocket-1.0') testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:jakarta-websocket-2.0') From 780b9095eaf2d793f771fd3601ae9a3d552e2dae Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Tue, 7 Oct 2025 12:12:46 +0200 Subject: [PATCH 08/12] jetty 10 --- .../jetty-server-10.0/build.gradle | 33 ++- .../jetty10/JettyServerInstrumentation.java | 5 + .../jetty10/RequestInstrumentation.java | 4 + .../jetty10/DispatchableAdvice.java | 0 .../jetty10/ExtractAdapter.java | 0 .../instrumentation/jetty10/HandleAdvice.java | 0 .../jetty10/HandleExceptionAdvice.java | 0 .../jetty10/JettyCommitResponseHelper.java | 0 .../jetty10/JettyDecorator.java | 0 .../jetty10/JettyOnCommitBlockingHelper.java | 0 .../instrumentation/jetty10/ResetAdvice.java | 0 .../jetty10/SendResponseCbAdvice.java | 0 .../jetty10/ServerHandleAdvice.java | 0 .../jetty10/SetContextPathAdvice.java | 0 .../jetty10/SetRequestedSessionIdAdvice.java | 0 .../jetty10/SetServletPathAdvice.java | 0 .../Jetty10InactiveAppSecTest.groovy} | 4 +- .../Jetty10Test.groovy} | 8 +- .../jetty-server-11.0/build.gradle | 21 +- .../jetty-server-11.0/gradle.lockfile | 211 ------------------ 20 files changed, 45 insertions(+), 241 deletions(-) rename dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/{java => java11}/datadog/trace/instrumentation/jetty10/DispatchableAdvice.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/{java => java11}/datadog/trace/instrumentation/jetty10/ExtractAdapter.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/{java => java11}/datadog/trace/instrumentation/jetty10/HandleAdvice.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/{java => java11}/datadog/trace/instrumentation/jetty10/HandleExceptionAdvice.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/{java => java11}/datadog/trace/instrumentation/jetty10/JettyCommitResponseHelper.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/{java => java11}/datadog/trace/instrumentation/jetty10/JettyDecorator.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/{java => java11}/datadog/trace/instrumentation/jetty10/JettyOnCommitBlockingHelper.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/{java => java11}/datadog/trace/instrumentation/jetty10/ResetAdvice.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/{java => java11}/datadog/trace/instrumentation/jetty10/SendResponseCbAdvice.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/{java => java11}/datadog/trace/instrumentation/jetty10/ServerHandleAdvice.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/{java => java11}/datadog/trace/instrumentation/jetty10/SetContextPathAdvice.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/{java => java11}/datadog/trace/instrumentation/jetty10/SetRequestedSessionIdAdvice.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/{java => java11}/datadog/trace/instrumentation/jetty10/SetServletPathAdvice.java (100%) rename dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/{jetty9/Jetty9InactiveAppSecTest.groovy => jetty10/Jetty10InactiveAppSecTest.groovy} (65%) rename dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/{jetty9/Jetty9Test.groovy => jetty10/Jetty10Test.groovy} (83%) delete mode 100644 dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-11.0/gradle.lockfile diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/build.gradle b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/build.gradle index 56aa50c23eb..55e23c6fb6d 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/build.gradle +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/build.gradle @@ -1,5 +1,10 @@ +ext { + minJavaVersionForTests = JavaVersion.VERSION_11 +} + muzzle { pass { + name = "10_series" group = "org.eclipse.jetty" module = 'jetty-server' versions = "[10,11)" @@ -7,32 +12,35 @@ muzzle { javaVersion = 11 } pass { - name = 'named_dispatches' - group = 'org.eclipse.jetty' + name = "after_10" + group = "org.eclipse.jetty" module = 'jetty-server' - versions = "[10.0.16,11),[11.0.16,12)" + versions = "[10,12)" assertInverse = true javaVersion = 11 } pass { - name = 'between_10_and_12' - group = "org.eclipse.jetty" + name = 'named_dispatches' + group = 'org.eclipse.jetty' module = 'jetty-server' - versions = "[10,12)" + versions = "[10.0.16,11),[11.0.16,12)" assertInverse = true + //extraDependency "javax.servlet:javax.servlet-api:3.1.0" + //extraDependency "jakarta.servlet:jakarta.servlet-api:5.0.0" javaVersion = 11 } } apply from: "$rootDir/gradle/java.gradle" +apply plugin: "idea" addTestSuiteForDir("latestDepTest", "test") addTestSuiteExtendingForDir("latestDepForkedTest", "latestDepTest", "test") dependencies { - implementation project(':dd-java-agent:instrumentation:jetty:jetty-common') - implementation project(':dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0') - compileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '10.0.0' + main_java11Implementation project(':dd-java-agent:instrumentation:jetty:jetty-common') + main_java11Implementation project(':dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0') + main_java11CompileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '10.0.0' // Don't want to conflict with jetty from the test server. testImplementation(project(':dd-java-agent:instrumentation-testing')) { @@ -55,6 +63,7 @@ dependencies { testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-7.0') testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-8.1.3') testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.2') + testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.3') // Include all websocket instrumentation modules for testing. Only the version-compatible module will apply at runtime. testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:javax-websocket-1.0') testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:jakarta-websocket-2.0') @@ -83,6 +92,8 @@ tasks.withType(AbstractCompile).configureEach { configureCompiler(it, 11, JavaVersion.VERSION_1_8) } -tasks.withType(Test).configureEach { - javaLauncher = getJavaLauncherFor(11) +idea { + module { + jdkName = '11' + } } diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyServerInstrumentation.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyServerInstrumentation.java index 592f6157180..4010bfec103 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyServerInstrumentation.java +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyServerInstrumentation.java @@ -85,6 +85,11 @@ public Reference[] additionalMuzzleReferences() { }; } + @Override + public String muzzleDirective() { + return "10_series"; + } + @Override public void typeAdvice(TypeTransformer transformer) { transformer.applyAdvice(new HttpChannelHandleVisitorWrapper()); diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/RequestInstrumentation.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/RequestInstrumentation.java index eab39505714..8cc1645787b 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/RequestInstrumentation.java +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/RequestInstrumentation.java @@ -20,6 +20,10 @@ public String instrumentedType() { return "org.eclipse.jetty.server.Request"; } + public String muzzleDirective() { + return "10_series"; + } + @Override public void methodAdvice(MethodTransformer transformer) { transformer.applyAdvice( diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/DispatchableAdvice.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/DispatchableAdvice.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/DispatchableAdvice.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/DispatchableAdvice.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/ExtractAdapter.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/ExtractAdapter.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/ExtractAdapter.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/ExtractAdapter.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/HandleAdvice.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/HandleAdvice.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/HandleAdvice.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/HandleAdvice.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/HandleExceptionAdvice.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/HandleExceptionAdvice.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/HandleExceptionAdvice.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/HandleExceptionAdvice.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyCommitResponseHelper.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/JettyCommitResponseHelper.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyCommitResponseHelper.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/JettyCommitResponseHelper.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyDecorator.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/JettyDecorator.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyDecorator.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/JettyDecorator.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyOnCommitBlockingHelper.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/JettyOnCommitBlockingHelper.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/JettyOnCommitBlockingHelper.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/JettyOnCommitBlockingHelper.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/ResetAdvice.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/ResetAdvice.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/ResetAdvice.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/ResetAdvice.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/SendResponseCbAdvice.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/SendResponseCbAdvice.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/SendResponseCbAdvice.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/SendResponseCbAdvice.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/ServerHandleAdvice.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/ServerHandleAdvice.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/ServerHandleAdvice.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/ServerHandleAdvice.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/SetContextPathAdvice.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/SetContextPathAdvice.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/SetContextPathAdvice.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/SetContextPathAdvice.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/SetRequestedSessionIdAdvice.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/SetRequestedSessionIdAdvice.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/SetRequestedSessionIdAdvice.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/SetRequestedSessionIdAdvice.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/SetServletPathAdvice.java b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/SetServletPathAdvice.java similarity index 100% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java/datadog/trace/instrumentation/jetty10/SetServletPathAdvice.java rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10/SetServletPathAdvice.java diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9InactiveAppSecTest.groovy b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty10/Jetty10InactiveAppSecTest.groovy similarity index 65% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9InactiveAppSecTest.groovy rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty10/Jetty10InactiveAppSecTest.groovy index b54000a00ec..dc81a291c81 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9InactiveAppSecTest.groovy +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty10/Jetty10InactiveAppSecTest.groovy @@ -1,11 +1,11 @@ -package datadog.trace.instrumentation.jetty9 +package datadog.trace.instrumentation.jetty10 import com.datadog.appsec.AppSecInactiveHttpServerTest import datadog.trace.agent.test.base.HttpServer import test.JettyServer import test.TestHandler -class Jetty9InactiveAppSecTest extends AppSecInactiveHttpServerTest { +class Jetty10InactiveAppSecTest extends AppSecInactiveHttpServerTest { HttpServer server() { new JettyServer(TestHandler.INSTANCE) } diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty10/Jetty10Test.groovy similarity index 83% rename from dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy rename to dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty10/Jetty10Test.groovy index 35b4b2c2e51..7dec61c223f 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9Test.groovy +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/src/test/groovy/datadog/trace/instrumentation/jetty10/Jetty10Test.groovy @@ -1,4 +1,4 @@ -package datadog.trace.instrumentation.jetty9 +package datadog.trace.instrumentation.jetty10 import datadog.trace.agent.test.base.HttpServer import datadog.trace.agent.test.base.HttpServerTest @@ -8,7 +8,7 @@ import org.eclipse.jetty.server.handler.AbstractHandler import test.JettyServer import test.TestHandler -abstract class Jetty9Test extends HttpServerTest { +abstract class Jetty10Test extends HttpServerTest { @Override HttpServer server() { @@ -96,10 +96,10 @@ abstract class Jetty9Test extends HttpServerTest { } } -class Jetty9V0ForkedTest extends Jetty9Test implements TestingGenericHttpNamingConventions.ServerV0 { +class Jetty10V0ForkedTest extends Jetty10Test implements TestingGenericHttpNamingConventions.ServerV0 { } -class Jetty9V1ForkedTest extends Jetty9Test implements TestingGenericHttpNamingConventions.ServerV1 { +class Jetty10V1ForkedTest extends Jetty10Test implements TestingGenericHttpNamingConventions.ServerV1 { @Override protected boolean useWebsocketPojoEndpoint() { false diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-11.0/build.gradle b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-11.0/build.gradle index 39cb974395d..0de01c779fa 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-11.0/build.gradle +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-11.0/build.gradle @@ -17,17 +17,6 @@ apply plugin: "idea" addTestSuiteForDir('latestDepTest', 'test') addTestSuiteForDir('latestDepForkedTest', 'test') -tasks.named("compileMain_java11Java") { - configureCompiler(it, 11, JavaVersion.VERSION_1_8) -} - -tasks.withType(GroovyCompile).configureEach { - javaLauncher = getJavaLauncherFor(11) -} -tasks.withType(Test).configureEach { - javaLauncher = getJavaLauncherFor(11) -} - dependencies { main_java11CompileOnly ("org.eclipse.jetty:jetty-server:11.0.0") { exclude group: 'org.slf4j', module: 'slf4j-api' @@ -40,8 +29,6 @@ dependencies { testFixturesCompileOnly "org.eclipse.jetty.websocket:websocket-jakarta-server:11.0.0" testFixturesImplementation group: 'jakarta.websocket', name: 'jakarta.websocket-client-api', version: '2.0.0' - - testFixturesImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } @@ -84,6 +71,14 @@ dependencies { latestDepTestRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0') } +tasks.withType(AbstractCompile).configureEach { + configureCompiler(it, 11, JavaVersion.VERSION_1_8) +} + +tasks.withType(Test).configureEach { + javaLauncher = getJavaLauncherFor(11) +} + idea { module { jdkName = '11' diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-11.0/gradle.lockfile b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-11.0/gradle.lockfile deleted file mode 100644 index 55e303a083a..00000000000 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-11.0/gradle.lockfile +++ /dev/null @@ -1,211 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -cafe.cryptography:curve25519-elisabeth:0.1.0=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -cafe.cryptography:ed25519-elisabeth:0.1.0=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -ch.qos.logback:logback-classic:1.2.13=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -ch.qos.logback:logback-core:1.2.13=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.beust:jcommander:1.78=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.blogspot.mydailyjava:weak-lock-free:0.17=compileClasspath,instrumentPluginClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,main_java11CompileClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.datadoghq.okhttp3:okhttp:3.12.15=compileClasspath,instrumentPluginClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,main_java11CompileClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.datadoghq.okio:okio:1.17.6=compileClasspath,instrumentPluginClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,main_java11CompileClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.datadoghq:dd-javac-plugin-client:0.2.2=compileClasspath,instrumentPluginClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,main_java11CompileClasspath,main_java11RuntimeClasspath,muzzleBootstrap,muzzleTooling,runtimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.datadoghq:java-dogstatsd-client:4.4.3=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.datadoghq:sketches-java:0.8.3=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.github.javaparser:javaparser-core:3.25.6=codenarc,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.github.jnr:jffi:1.3.13=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.github.jnr:jnr-a64asm:1.0.0=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.github.jnr:jnr-constants:0.10.4=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.github.jnr:jnr-enxio:0.32.17=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.github.jnr:jnr-ffi:2.2.16=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.github.jnr:jnr-posix:3.1.19=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.github.jnr:jnr-unixsocket:0.38.22=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.github.jnr:jnr-x86asm:1.0.2=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.github.spotbugs:spotbugs-annotations:4.2.0=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath -com.github.spotbugs:spotbugs-annotations:4.7.3=spotbugs -com.github.spotbugs:spotbugs:4.7.3=spotbugs -com.github.stefanbirkner:system-rules:1.19.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.google.auto.service:auto-service-annotations:1.1.1=annotationProcessor,compileClasspath,latestDepForkedTestAnnotationProcessor,latestDepForkedTestCompileClasspath,latestDepTestAnnotationProcessor,latestDepTestCompileClasspath,testAnnotationProcessor,testCompileClasspath -com.google.auto.service:auto-service:1.1.1=annotationProcessor,latestDepForkedTestAnnotationProcessor,latestDepTestAnnotationProcessor,testAnnotationProcessor -com.google.auto:auto-common:1.2.1=annotationProcessor,latestDepForkedTestAnnotationProcessor,latestDepTestAnnotationProcessor,testAnnotationProcessor -com.google.code.findbugs:jsr305:3.0.2=annotationProcessor,compileClasspath,latestDepForkedTestAnnotationProcessor,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestAnnotationProcessor,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,spotbugs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.code.gson:gson:2.9.1=spotbugs -com.google.errorprone:error_prone_annotations:2.18.0=annotationProcessor,latestDepForkedTestAnnotationProcessor,latestDepTestAnnotationProcessor,testAnnotationProcessor -com.google.guava:failureaccess:1.0.1=annotationProcessor,latestDepForkedTestAnnotationProcessor,latestDepTestAnnotationProcessor,testAnnotationProcessor -com.google.guava:guava:20.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.google.guava:guava:32.0.1-jre=annotationProcessor,latestDepForkedTestAnnotationProcessor,latestDepTestAnnotationProcessor,testAnnotationProcessor -com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,latestDepForkedTestAnnotationProcessor,latestDepTestAnnotationProcessor,testAnnotationProcessor -com.google.j2objc:j2objc-annotations:2.8=annotationProcessor,latestDepForkedTestAnnotationProcessor,latestDepTestAnnotationProcessor,testAnnotationProcessor -com.google.re2j:re2j:1.7=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.squareup.moshi:moshi:1.11.0=compileClasspath,instrumentPluginClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,main_java11CompileClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.squareup.okhttp3:logging-interceptor:3.12.12=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.squareup.okhttp3:okhttp:3.12.12=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.squareup.okio:okio:1.17.5=compileClasspath,instrumentPluginClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,main_java11CompileClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.thoughtworks.qdox:qdox:1.12.1=codenarc,latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -commons-codec:commons-codec:1.15=spotbugs -commons-fileupload:commons-fileupload:1.5=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -commons-io:commons-io:2.11.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -de.thetaphi:forbiddenapis:3.8=compileClasspath -info.picocli:picocli:4.6.3=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -io.leangen.geantyref:geantyref:1.3.16=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -io.sqreen:libsqreen:16.0.0=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -jakarta.annotation:jakarta.annotation-api:2.0.0=testCompileClasspath,testFixturesCompileClasspath,testRuntimeClasspath -jakarta.annotation:jakarta.annotation-api:2.1.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -jakarta.transaction:jakarta.transaction-api:2.0.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -jakarta.transaction:jakarta.transaction-api:2.0.0-RC1=testCompileClasspath,testFixturesCompileClasspath,testRuntimeClasspath -jakarta.websocket:jakarta.websocket-client-api:2.0.0=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -javax.servlet:javax.servlet-api:4.0.1=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath -jaxen:jaxen:1.2.0=spotbugs -jline:jline:2.14.6=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -junit:junit-dep:4.11=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -junit:junit:4.13.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -net.bytebuddy:byte-buddy-agent:1.17.5=compileClasspath,instrumentPluginClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,main_java11CompileClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -net.bytebuddy:byte-buddy:1.17.5=compileClasspath,instrumentPluginClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,main_java11CompileClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -net.java.dev.jna:jna-platform:5.8.0=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -net.java.dev.jna:jna:5.8.0=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -net.jcip:jcip-annotations:1.0=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,spotbugs,testCompileClasspath,testRuntimeClasspath -net.sf.saxon:Saxon-HE:11.4=spotbugs -org.apache.ant:ant-antlr:1.10.14=codenarc -org.apache.ant:ant-antlr:1.10.15=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.apache.ant:ant-junit:1.10.14=codenarc -org.apache.ant:ant-junit:1.10.15=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.apache.ant:ant-launcher:1.10.15=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.apache.ant:ant:1.10.15=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.apache.bcel:bcel:6.5.0=spotbugs -org.apache.commons:commons-lang3:3.12.0=spotbugs -org.apache.commons:commons-text:1.10.0=spotbugs -org.apache.httpcomponents.client5:httpclient5:5.1.3=spotbugs -org.apache.httpcomponents.core5:httpcore5-h2:5.1.3=spotbugs -org.apache.httpcomponents.core5:httpcore5:5.1.3=spotbugs -org.apache.logging.log4j:log4j-api:2.19.0=spotbugs -org.apache.logging.log4j:log4j-core:2.19.0=spotbugs -org.apiguardian:apiguardian-api:1.1.2=latestDepForkedTestCompileClasspath,latestDepTestCompileClasspath,testCompileClasspath,testFixturesCompileClasspath -org.checkerframework:checker-qual:3.33.0=annotationProcessor,latestDepForkedTestAnnotationProcessor,latestDepTestAnnotationProcessor,testAnnotationProcessor -org.codehaus.groovy:groovy-all:3.0.24=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-ant:3.0.23=codenarc -org.codehaus.groovy:groovy-ant:3.0.24=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-astbuilder:3.0.24=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-cli-picocli:3.0.24=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-console:3.0.24=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-datetime:3.0.24=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-docgenerator:3.0.23=codenarc -org.codehaus.groovy:groovy-docgenerator:3.0.24=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-groovydoc:3.0.23=codenarc -org.codehaus.groovy:groovy-groovydoc:3.0.24=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-groovysh:3.0.24=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-jmx:3.0.24=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-json:3.0.23=codenarc -org.codehaus.groovy:groovy-json:3.0.24=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-jsr223:3.0.24=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-macro:3.0.24=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-nio:3.0.24=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-servlet:3.0.24=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-sql:3.0.24=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-swing:3.0.24=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-templates:3.0.23=codenarc -org.codehaus.groovy:groovy-templates:3.0.24=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-test-junit5:3.0.24=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-test:3.0.24=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-testng:3.0.24=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-xml:3.0.23=codenarc -org.codehaus.groovy:groovy-xml:3.0.24=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy:3.0.23=codenarc -org.codehaus.groovy:groovy:3.0.24=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.codenarc:CodeNarc:3.6.0=codenarc -org.dom4j:dom4j:2.1.3=spotbugs -org.eclipse.jetty.toolchain:jetty-jakarta-servlet-api:5.0.1=main_java11CompileClasspath,testCompileClasspath,testFixturesCompileClasspath,testRuntimeClasspath -org.eclipse.jetty.toolchain:jetty-jakarta-servlet-api:5.0.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.eclipse.jetty.toolchain:jetty-jakarta-websocket-api:2.0.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testRuntimeClasspath -org.eclipse.jetty.websocket:websocket-core-client:11.0.0=testCompileClasspath,testFixturesCompileClasspath,testRuntimeClasspath -org.eclipse.jetty.websocket:websocket-core-client:11.0.26=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.eclipse.jetty.websocket:websocket-core-common:11.0.0=testCompileClasspath,testFixturesCompileClasspath,testRuntimeClasspath -org.eclipse.jetty.websocket:websocket-core-common:11.0.26=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.eclipse.jetty.websocket:websocket-core-server:11.0.0=testCompileClasspath,testFixturesCompileClasspath,testRuntimeClasspath -org.eclipse.jetty.websocket:websocket-core-server:11.0.26=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.eclipse.jetty.websocket:websocket-jakarta-client:11.0.0=testCompileClasspath,testFixturesCompileClasspath,testRuntimeClasspath -org.eclipse.jetty.websocket:websocket-jakarta-client:11.0.26=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.eclipse.jetty.websocket:websocket-jakarta-common:11.0.0=testCompileClasspath,testFixturesCompileClasspath,testRuntimeClasspath -org.eclipse.jetty.websocket:websocket-jakarta-common:11.0.26=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.eclipse.jetty.websocket:websocket-jakarta-server:11.0.0=testCompileClasspath,testFixturesCompileClasspath,testRuntimeClasspath -org.eclipse.jetty.websocket:websocket-jakarta-server:11.0.26=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.eclipse.jetty.websocket:websocket-servlet:11.0.0=testCompileClasspath,testFixturesCompileClasspath,testRuntimeClasspath -org.eclipse.jetty.websocket:websocket-servlet:11.0.26=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.eclipse.jetty:jetty-alpn-client:11.0.0=testCompileClasspath,testFixturesCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-alpn-client:11.0.26=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.eclipse.jetty:jetty-annotations:11.0.0=testCompileClasspath,testFixturesCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-annotations:11.0.26=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.eclipse.jetty:jetty-client:11.0.0=testCompileClasspath,testFixturesCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-client:11.0.26=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.eclipse.jetty:jetty-http:11.0.0=main_java11CompileClasspath,testCompileClasspath,testFixturesCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-http:11.0.26=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.eclipse.jetty:jetty-io:11.0.0=main_java11CompileClasspath,testCompileClasspath,testFixturesCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-io:11.0.26=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.eclipse.jetty:jetty-jndi:11.0.0=testCompileClasspath,testFixturesCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-jndi:11.0.26=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.eclipse.jetty:jetty-plus:11.0.0=testCompileClasspath,testFixturesCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-plus:11.0.26=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.eclipse.jetty:jetty-security:11.0.0=testCompileClasspath,testFixturesCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-security:11.0.26=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.eclipse.jetty:jetty-server:11.0.0=main_java11CompileClasspath,testCompileClasspath,testFixturesCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-server:11.0.26=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.eclipse.jetty:jetty-servlet:11.0.0=testCompileClasspath,testFixturesCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-servlet:11.0.26=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.eclipse.jetty:jetty-util:11.0.0=main_java11CompileClasspath,testCompileClasspath,testFixturesCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-util:11.0.26=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.eclipse.jetty:jetty-webapp:11.0.0=testCompileClasspath,testFixturesCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-webapp:11.0.26=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.eclipse.jetty:jetty-xml:11.0.0=testCompileClasspath,testFixturesCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-xml:11.0.26=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.gmetrics:GMetrics:2.1.0=codenarc -org.hamcrest:hamcrest-core:1.3=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.hamcrest:hamcrest:3.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.jctools:jctools-core:3.3.0=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.junit.jupiter:junit-jupiter-api:5.12.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.junit.jupiter:junit-jupiter-engine:5.12.2=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.junit.jupiter:junit-jupiter-params:5.12.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath -org.junit.jupiter:junit-jupiter:5.12.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath -org.junit.platform:junit-platform-commons:1.12.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.junit.platform:junit-platform-engine:1.12.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.junit.platform:junit-platform-launcher:1.12.2=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.junit.platform:junit-platform-runner:1.12.2=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.junit.platform:junit-platform-suite-api:1.12.2=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.junit.platform:junit-platform-suite-commons:1.12.2=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.junit:junit-bom:5.12.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.junit:junit-bom:5.9.1=spotbugs -org.mockito:mockito-core:4.4.0=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,testRuntimeClasspath -org.objenesis:objenesis:3.3=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.opentest4j:opentest4j:1.3.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.ow2.asm:asm-analysis:9.0=testCompileClasspath,testFixturesCompileClasspath -org.ow2.asm:asm-analysis:9.2=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.ow2.asm:asm-analysis:9.4=spotbugs -org.ow2.asm:asm-commons:9.0=testCompileClasspath,testFixturesCompileClasspath -org.ow2.asm:asm-commons:9.2=instrumentPluginClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath -org.ow2.asm:asm-commons:9.4=spotbugs -org.ow2.asm:asm-commons:9.8=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.ow2.asm:asm-tree:9.0=testCompileClasspath,testFixturesCompileClasspath -org.ow2.asm:asm-tree:9.2=instrumentPluginClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath -org.ow2.asm:asm-tree:9.4=spotbugs -org.ow2.asm:asm-tree:9.8=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.ow2.asm:asm-util:9.2=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.ow2.asm:asm-util:9.4=spotbugs -org.ow2.asm:asm:9.0=testCompileClasspath,testFixturesCompileClasspath -org.ow2.asm:asm:9.2=instrumentPluginClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath -org.ow2.asm:asm:9.4=spotbugs -org.ow2.asm:asm:9.8=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.slf4j:jcl-over-slf4j:1.7.30=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.slf4j:jul-to-slf4j:1.7.30=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.slf4j:log4j-over-slf4j:1.7.30=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.slf4j:slf4j-api:1.7.30=compileClasspath,instrumentPluginClasspath,main_java11CompileClasspath,main_java11RuntimeClasspath,muzzleBootstrap,muzzleTooling,runtimeClasspath -org.slf4j:slf4j-api:1.7.32=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.slf4j:slf4j-api:2.0.0=spotbugs,spotbugsSlf4j -org.slf4j:slf4j-api:2.0.0-alpha1=testFixturesCompileClasspath -org.slf4j:slf4j-simple:2.0.0=spotbugsSlf4j -org.snakeyaml:snakeyaml-engine:2.9=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,main_java11RuntimeClasspath,muzzleTooling,runtimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.spockframework:spock-bom:2.4-M6-groovy-3.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.spockframework:spock-core:2.4-M6-groovy-3.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.spockframework:spock-junit4:2.4-M6-groovy-3.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.testng:testng:7.5.1=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.webjars:jquery:3.5.1=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.xmlresolver:xmlresolver:4.4.3=spotbugs -xml-apis:xml-apis:1.4.01=spotbugs -empty=main_java11AnnotationProcessor,spotbugsPlugins,testFixturesAnnotationProcessor From 6d716550a35647afca1d48b376cf58aab8734e68 Mon Sep 17 00:00:00 2001 From: Brice Dutheil Date: Tue, 7 Oct 2025 14:05:11 +0200 Subject: [PATCH 09/12] fix: Jersey tests --- dd-java-agent/instrumentation/jersey/build.gradle | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dd-java-agent/instrumentation/jersey/build.gradle b/dd-java-agent/instrumentation/jersey/build.gradle index a226454bfe2..423ad5c73f1 100644 --- a/dd-java-agent/instrumentation/jersey/build.gradle +++ b/dd-java-agent/instrumentation/jersey/build.gradle @@ -53,6 +53,7 @@ dependencies { jersey2JettyTestRuntimeOnly group: 'javax.activation', name: 'javax.activation-api', version: '1.2.0' jersey2JettyTestRuntimeOnly group: 'javax.xml.bind', name: 'jaxb-api', version: '2.2.3' jersey2JettyTestRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0') + jersey2JettyTestRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0.4') jersey2JettyTestRuntimeOnly project(':dd-java-agent:instrumentation:jersey-2-appsec') jersey2JettyTestRuntimeOnly project(':dd-java-agent:instrumentation:jax-rs-annotations-2') @@ -68,6 +69,7 @@ dependencies { jersey3JettyTestRuntimeOnly group: 'javax.activation', name: 'javax.activation-api', version: '1.2.0' jersey3JettyTestRuntimeOnly group: 'javax.xml.bind', name: 'jaxb-api', version: '2.2.3' jersey3JettyTestRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0') + jersey3JettyTestRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-10.0') jersey3JettyTestRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-11.0') jersey3JettyTestRuntimeOnly project(':dd-java-agent:instrumentation:jersey-2-appsec') jersey3JettyTestRuntimeOnly project(':dd-java-agent:instrumentation:jersey-3-appsec') From e70f602a43d25f460a58b782d98f2a6e66f426ca Mon Sep 17 00:00:00 2001 From: Brice Dutheil Date: Tue, 7 Oct 2025 14:13:17 +0200 Subject: [PATCH 10/12] fix: javax-servlet tests --- .../servlet/javax-servlet/javax-servlet-3.0/build.gradle | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dd-java-agent/instrumentation/servlet/javax-servlet/javax-servlet-3.0/build.gradle b/dd-java-agent/instrumentation/servlet/javax-servlet/javax-servlet-3.0/build.gradle index 3333d751262..f1146605c33 100644 --- a/dd-java-agent/instrumentation/servlet/javax-servlet/javax-servlet-3.0/build.gradle +++ b/dd-java-agent/instrumentation/servlet/javax-servlet/javax-servlet-3.0/build.gradle @@ -49,6 +49,10 @@ dependencies { testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-7.0') // See if there's any conflicts. testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-7.6') // See if there's any conflicts. testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0') // See if there's any conflicts. + testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0.4') // See if there's any conflicts. + testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.3') // See if there's any conflicts. + testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.4.21') // See if there's any conflicts. + testImplementation project(':dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-10.0') // See if there's any conflicts. testImplementation project(':dd-java-agent:instrumentation:tomcat:tomcat-5.5') // See if there's any conflicts. testRuntimeOnly project(':dd-java-agent:instrumentation:tomcat:tomcat-appsec:tomcat-appsec-6.0') testRuntimeOnly project(':dd-java-agent:instrumentation:tomcat:tomcat-appsec:tomcat-appsec-7.0') From 2bb335675d472f68d7c94b929acf620065c4ff78 Mon Sep 17 00:00:00 2001 From: Brice Dutheil Date: Tue, 7 Oct 2025 14:20:19 +0200 Subject: [PATCH 11/12] fix: jersey-server-9.4.21 websocket tests --- .../jetty/jetty-server/jetty-server-9.3/build.gradle | 2 +- .../jetty/jetty-server/jetty-server-9.4.21/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/build.gradle b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/build.gradle index 9fcb304d6d3..5d08c44f4c9 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/build.gradle +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.3/build.gradle @@ -26,9 +26,9 @@ dependencies { testImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.3.0.M1' testImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.3.0.M1' testImplementation group: 'org.eclipse.jetty', name: 'jetty-continuation', version: '9.3.0.M1' - testImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') testImplementation testFixtures(project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0")) + testImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) // Include all jetty-server instrumentation modules for testing. Only the version-compatible module will apply at runtime. testRuntimeOnly project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0") diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/build.gradle b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/build.gradle index 3e568151942..d9ef585146e 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/build.gradle +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.4.21/build.gradle @@ -16,7 +16,6 @@ addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'test') dependencies { implementation project(':dd-java-agent:instrumentation:jetty:jetty-common') implementation project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0") - compileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.21.v20190926' // Don't want to conflict with jetty from the test server. @@ -38,6 +37,7 @@ dependencies { testRuntimeOnly project(":dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.3") testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-2.2') testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0') + testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:javax-websocket-1.0') // Include all appsec instrumentation modules for testing. Only the version-compatible module will apply at runtime. testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-7.0') testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-8.1.3') From 1b67b9ba5895240c4b44295a79d224314d9fad30 Mon Sep 17 00:00:00 2001 From: Brice Dutheil Date: Tue, 7 Oct 2025 15:04:56 +0200 Subject: [PATCH 12/12] fix: cxf-2.1 tests --- dd-java-agent/instrumentation/cxf-2.1/build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/dd-java-agent/instrumentation/cxf-2.1/build.gradle b/dd-java-agent/instrumentation/cxf-2.1/build.gradle index 865148c39b0..25d27b028ab 100644 --- a/dd-java-agent/instrumentation/cxf-2.1/build.gradle +++ b/dd-java-agent/instrumentation/cxf-2.1/build.gradle @@ -60,6 +60,7 @@ dependencies { testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-7.0') testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-7.6') testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-9.0') + testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-10.0') testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-11.0') testRuntimeOnly project(':dd-java-agent:instrumentation:jetty:jetty-server:jetty-server-12.0') testRuntimeOnly project(':dd-java-agent:instrumentation:trace-annotation')