Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ import datadog.trace.api.DDSpanTypes
import datadog.trace.api.DDTags
import datadog.trace.bootstrap.instrumentation.api.Tags
import datadog.trace.core.datastreams.StatsGroup
import org.eclipse.jetty.http2.server.HTTP2CServerConnectionFactory
import org.eclipse.jetty.server.HttpConfiguration
import org.eclipse.jetty.server.HttpConnectionFactory
import org.eclipse.jetty.server.Server
import org.eclipse.jetty.server.ServerConnector
import org.eclipse.jetty.server.SslConnectionFactory
import datadog.eclipse.jetty.http2.server.HTTP2CServerConnectionFactory
import datadog.eclipse.jetty.server.HttpConfiguration
import datadog.eclipse.jetty.server.HttpConnectionFactory
import datadog.eclipse.jetty.server.Server
import datadog.eclipse.jetty.server.ServerConnector
import datadog.eclipse.jetty.server.SslConnectionFactory
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider
import software.amazon.awssdk.core.ResponseInputStream
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ import datadog.trace.api.DDTags
import datadog.trace.bootstrap.instrumentation.api.Tags
import datadog.trace.core.datastreams.StatsGroup
import datadog.trace.instrumentation.aws.ExpectedQueryParams
import org.eclipse.jetty.http2.server.HTTP2CServerConnectionFactory
import org.eclipse.jetty.server.HttpConfiguration
import org.eclipse.jetty.server.HttpConnectionFactory
import org.eclipse.jetty.server.Server
import org.eclipse.jetty.server.ServerConnector
import org.eclipse.jetty.server.SslConnectionFactory
import datadog.eclipse.jetty.http2.server.HTTP2CServerConnectionFactory
import datadog.eclipse.jetty.server.HttpConfiguration
import datadog.eclipse.jetty.server.HttpConnectionFactory
import datadog.eclipse.jetty.server.Server
import datadog.eclipse.jetty.server.ServerConnector
import datadog.eclipse.jetty.server.SslConnectionFactory
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider
import software.amazon.awssdk.core.ResponseInputStream
Expand Down
6 changes: 5 additions & 1 deletion dd-java-agent/testing/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ dependencies {
// Note: 9.4 last to support java 8
compileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.56.v20240826'
runtimeOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.56.v20240826'
compileOnly group: 'org.eclipse.jetty.http2', name: 'http2-server', version: '9.4.56.v20240826'
runtimeOnly group: 'org.eclipse.jetty.http2', name: 'http2-server', version: '9.4.56.v20240826'
// Since jetty-server is shadowed, it is needed to exports the servlet api as well.
api group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0'

Expand All @@ -65,7 +67,7 @@ tasks.named("shadowJar", ShadowJar) {
// All other dependencies remain as transitive dependencies
dependencies {
include(dependency {
it.moduleGroup == 'org.eclipse.jetty'
it.moduleGroup == 'org.eclipse.jetty' || it.moduleGroup == 'org.eclipse.jetty.http2'
})
}

Expand All @@ -83,11 +85,13 @@ configurations {
outgoing.artifacts.clear()
outgoing.artifact(tasks.named('shadowJar'))
exclude group: 'org.eclipse.jetty'
exclude group: 'org.eclipse.jetty.http2'
}
named('runtimeElements') {
outgoing.artifacts.clear()
outgoing.artifact(tasks.named('shadowJar'))
exclude group: 'org.eclipse.jetty'
exclude group: 'org.eclipse.jetty.http2'
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,18 @@ class TestHttpServer implements AutoCloseable {
https.setPort(0)
internalServer.addConnector(https)

// Guard against shading mismatch: test code may use non-shaded Jetty types
// while TestHttpServer uses shaded Jetty (datadog.eclipse.jetty.*)
if (customizer.maximumNumberOfParameters > 0) {
def expectedType = customizer.parameterTypes[0]
def actualType = internalServer.getClass()
if (expectedType != Object && !expectedType.isAssignableFrom(actualType)) {
throw new IllegalArgumentException(
"Customizer closure expects '${expectedType.name}' but TestHttpServer uses shaded Jetty '${actualType.name}'. " +
"Update your test imports to use 'datadog.eclipse.jetty.*' instead of 'org.eclipse.jetty.*'."
)
}
}
customizer.call(internalServer)
internalServer.start()
// set after starting, otherwise two callbacks get added.
Expand Down
Loading