Skip to content

Commit ce166be

Browse files
committed
test(appsec): add earlyDep10ForkedTest to cover Jetty 10.0.0–10.0.9
The jetty-appsec-9.4 early_10_series muzzle pass covers [10.0.0, 10.0.10) where _multiParts is MultiPartFormInputStream (before the type changed to MultiParts in 10.0.10). The existing test suite used 10.0.10, leaving the early versions untested. Add earlyDep10ForkedTest (Jetty 10.0.9) to exercise the OR-muzzle reference and verify that multipart filename events fire correctly on the old field type. All three filename tests pass: filenames, filenames-called-once, filenames-combined.
1 parent 1799f8b commit ce166be

2 files changed

Lines changed: 43 additions & 0 deletions

File tree

dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-10.0/build.gradle

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ tracerJava {
3636

3737
addTestSuiteForDir("latestDepTest", "test")
3838
addTestSuiteExtendingForDir("latestDepForkedTest", "latestDepTest", "test")
39+
// Exercises jetty-appsec-9.4's early_10_series muzzle pass: _multiParts was
40+
// MultiPartFormInputStream in [10.0.0, 10.0.10) before switching to MultiParts in 10.0.10.
41+
addTestSuiteForDir("earlyDep10ForkedTest", "test")
3942

4043
dependencies {
4144
main_java11Implementation project(':dd-java-agent:instrumentation:jetty:jetty-common')
@@ -82,6 +85,17 @@ dependencies {
8285
latestDepForkedTestImplementation group: 'org.eclipse.jetty.websocket', name: 'websocket-javax-server', version: '10.+'
8386
latestDepForkedTestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.4')
8487
latestDepForkedTestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0'))
88+
89+
// Early Jetty 10 (10.0.0–10.0.9): _multiParts is MultiPartFormInputStream, not MultiParts.
90+
earlyDep10ForkedTestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '10.0.9'
91+
earlyDep10ForkedTestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '10.0.9'
92+
earlyDep10ForkedTestImplementation group: 'org.eclipse.jetty.websocket', name: 'websocket-javax-server', version: '10.0.9'
93+
earlyDep10ForkedTestImplementation project(':dd-java-agent:instrumentation:jetty:jetty-appsec:jetty-appsec-9.4')
94+
earlyDep10ForkedTestImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0'))
95+
}
96+
97+
tasks.named('earlyDep10ForkedTest', Test) {
98+
systemProperty 'test.dd.earlyJetty10', 'true'
8599
}
86100

87101
configurations.named('latestDepForkedTestRuntimeClasspath') {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package datadog.trace.instrumentation.jetty10
2+
3+
import datadog.trace.agent.test.naming.TestingGenericHttpNamingConventions
4+
import spock.lang.Requires
5+
6+
/**
7+
* Exercises jetty-appsec-9.4's "early_10_series" muzzle pass ([10.0.0, 10.0.10)) where
8+
* {@code _multiParts} is {@code MultiPartFormInputStream} instead of {@code MultiParts}.
9+
* The OR-muzzle reference in jetty-appsec-9.4 covers both field types; this suite
10+
* verifies the advice actually applies and fires AppSec events on the older field type.
11+
*
12+
* <p>Guarded by the {@code test.dd.earlyJetty10} system property so these classes
13+
* only run in the {@code earlyDep10ForkedTest} Gradle task (Jetty 10.0.9).
14+
*/
15+
@Requires({
16+
System.getProperty('test.dd.earlyJetty10')
17+
})
18+
class Jetty10EarlyDepV0ForkedTest extends Jetty10Test implements TestingGenericHttpNamingConventions.ServerV0 {
19+
}
20+
21+
@Requires({
22+
System.getProperty('test.dd.earlyJetty10')
23+
})
24+
class Jetty10EarlyDepV1ForkedTest extends Jetty10Test implements TestingGenericHttpNamingConventions.ServerV1 {
25+
@Override
26+
protected boolean useWebsocketPojoEndpoint() {
27+
false
28+
}
29+
}

0 commit comments

Comments
 (0)