Metadata for the JAX-RS family (#14669)

This commit is contained in:
Jay DeLuca 2025-09-19 08:47:23 -04:00 committed by GitHub
parent 74e6360cfb
commit 9332f4d5aa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
36 changed files with 564 additions and 29 deletions

View File

@ -4251,21 +4251,64 @@ libraries:
- io.javalin:javalin:[5.0.0,)
jaxrs:
- name: jaxrs-1.0
disabled_by_default: true
display_name: JAX-RS 1.x
description: |
This instrumentation enables spans for JAX-RS methods, and enriches existing HTTP server spans with route information.
library_link: https://javaee.github.io/javaee-spec/javadocs/javax/ws/rs/package-summary.html
source_path: instrumentation/jaxrs/jaxrs-1.0
scope:
name: io.opentelemetry.jaxrs-1.0
target_versions:
javaagent:
- javax.ws.rs:jsr311-api:[0.5,)
configurations:
- name: otel.instrumentation.common.experimental.controller-telemetry.enabled
description: Enables the creation of experimental controller (INTERNAL) spans.
type: boolean
default: false
telemetry:
- when: default
spans:
- span_kind: INTERNAL
attributes:
- name: code.function
type: STRING
- name: code.namespace
type: STRING
- name: jaxrs-2.0-annotations
display_name: JAX-RS 2.x
description: |
This instrumentation enables spans for JAX-RS annotated methods, and enriches existing HTTP server spans with route information.
library_link: https://javaee.github.io/javaee-spec/javadocs/javax/ws/rs/package-summary.html
source_path: instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-annotations
scope:
name: io.opentelemetry.jaxrs-2.0-annotations
target_versions:
javaagent:
- javax.ws.rs:javax.ws.rs-api:[,]
configurations:
- name: otel.instrumentation.common.experimental.controller-telemetry.enabled
description: Enables the creation of experimental controller (INTERNAL) spans.
type: boolean
default: false
- name: otel.instrumentation.jaxrs.experimental-span-attributes
description: Enables the experimental `jaxrs.canceled` span attribute.
type: boolean
default: false
telemetry:
- when: default
spans:
- span_kind: INTERNAL
attributes:
- name: code.function
type: STRING
- name: code.namespace
type: STRING
- name: jaxrs-2.0-cxf-3.2
display_name: Apache CXF JAX-RS 2.x
description: |
This instrumentation enables spans for JAX-RS methods when using Apache CXF, and enriches existing HTTP server spans with route information.
library_link: https://cxf.apache.org/
source_path: instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2
scope:
name: io.opentelemetry.jaxrs-2.0-cxf-3.2
@ -4273,7 +4316,39 @@ libraries:
javaagent:
- org.apache.tomee:openejb-cxf-rs:(8,)
- org.apache.cxf:cxf-rt-frontend-jaxrs:[3.2,4)
configurations:
- name: otel.instrumentation.common.experimental.controller-telemetry.enabled
description: Enables the creation of experimental controller (INTERNAL) spans.
type: boolean
default: false
- name: otel.instrumentation.jaxrs.experimental-span-attributes
description: Enables the experimental `jaxrs.canceled` span attribute.
type: boolean
default: false
telemetry:
- when: default
spans:
- span_kind: INTERNAL
attributes:
- name: code.function
type: STRING
- name: code.namespace
type: STRING
- when: otel.instrumentation.jaxrs.experimental-span-attributes=true
spans:
- span_kind: INTERNAL
attributes:
- name: code.function
type: STRING
- name: code.namespace
type: STRING
- name: jaxrs.canceled
type: BOOLEAN
- name: jaxrs-2.0-jersey-2.0
display_name: Eclipse Jersey JAX-RS 2.x
description: |
This instrumentation enables spans for JAX-RS methods when using Jersey, and enriches existing HTTP server spans with route information.
library_link: https://eclipse-ee4j.github.io/jersey/
source_path: instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0
scope:
name: io.opentelemetry.jaxrs-2.0-jersey-2.0
@ -4281,7 +4356,39 @@ libraries:
javaagent:
- org.glassfish.jersey.core:jersey-server:[2.0,3.0.0)
- org.glassfish.jersey.containers:jersey-container-servlet:[2.0,3.0.0)
configurations:
- name: otel.instrumentation.common.experimental.controller-telemetry.enabled
description: Enables the creation of experimental controller (INTERNAL) spans.
type: boolean
default: false
- name: otel.instrumentation.jaxrs.experimental-span-attributes
description: Enables the experimental `jaxrs.canceled` span attribute.
type: boolean
default: false
telemetry:
- when: default
spans:
- span_kind: INTERNAL
attributes:
- name: code.function
type: STRING
- name: code.namespace
type: STRING
- when: otel.instrumentation.jaxrs.experimental-span-attributes=true
spans:
- span_kind: INTERNAL
attributes:
- name: code.function
type: STRING
- name: code.namespace
type: STRING
- name: jaxrs.canceled
type: BOOLEAN
- name: jaxrs-2.0-resteasy-3.0
display_name: JBoss RESTEasy JAX-RS 2.x
description: |
This instrumentation enables spans for JAX-RS methods when using RESTEasy, and enriches existing HTTP server spans with route information.
library_link: https://resteasy.dev/
source_path: instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0
scope:
name: io.opentelemetry.jaxrs-2.0-resteasy-3.0
@ -4289,7 +4396,39 @@ libraries:
javaagent:
- org.jboss.resteasy:resteasy-jaxrs:[3.0.0.Final,3.1.0.Final)
- org.jboss.resteasy:resteasy-jaxrs:[3.5.0.Final,4)
configurations:
- name: otel.instrumentation.common.experimental.controller-telemetry.enabled
description: Enables the creation of experimental controller (INTERNAL) spans.
type: boolean
default: false
- name: otel.instrumentation.jaxrs.experimental-span-attributes
description: Enables the experimental `jaxrs.canceled` span attribute.
type: boolean
default: false
telemetry:
- when: default
spans:
- span_kind: INTERNAL
attributes:
- name: code.function
type: STRING
- name: code.namespace
type: STRING
- when: otel.instrumentation.jaxrs.experimental-span-attributes=true
spans:
- span_kind: INTERNAL
attributes:
- name: code.function
type: STRING
- name: code.namespace
type: STRING
- name: jaxrs.canceled
type: BOOLEAN
- name: jaxrs-2.0-resteasy-3.1
display_name: JBoss RESTEasy JAX-RS 2.x
description: |
This instrumentation enables spans for JAX-RS methods when using RESTEasy, and enriches existing HTTP server spans with route information.
library_link: https://resteasy.dev/
source_path: instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.1
scope:
name: io.opentelemetry.jaxrs-2.0-resteasy-3.1
@ -4297,14 +4436,68 @@ libraries:
javaagent:
- org.jboss.resteasy:resteasy-jaxrs:[3.1.0.Final,3.5.0.Final)
- org.jboss.resteasy:resteasy-core:[4.0.0.Final,6)
configurations:
- name: otel.instrumentation.common.experimental.controller-telemetry.enabled
description: Enables the creation of experimental controller (INTERNAL) spans.
type: boolean
default: false
- name: otel.instrumentation.jaxrs.experimental-span-attributes
description: Enables the experimental `jaxrs.canceled` span attribute.
type: boolean
default: false
telemetry:
- when: default
spans:
- span_kind: INTERNAL
attributes:
- name: code.function
type: STRING
- name: code.namespace
type: STRING
- when: otel.instrumentation.jaxrs.experimental-span-attributes=true
spans:
- span_kind: INTERNAL
attributes:
- name: code.function
type: STRING
- name: code.namespace
type: STRING
- name: jaxrs.canceled
type: BOOLEAN
- name: jaxrs-3.0-annotations
display_name: JAX-RS 3.x
description: |
This instrumentation enables spans for JAX-RS annotated methods, and enriches existing HTTP server spans with route information.
library_link: https://jakarta.ee/specifications/restful-ws/3.0/
source_path: instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-annotations
scope:
name: io.opentelemetry.jaxrs-3.0-annotations
target_versions:
javaagent:
- jakarta.ws.rs:jakarta.ws.rs-api:[3.0.0,)
configurations:
- name: otel.instrumentation.common.experimental.controller-telemetry.enabled
description: Enables the creation of experimental controller (INTERNAL) spans.
type: boolean
default: false
- name: otel.instrumentation.jaxrs.experimental-span-attributes
description: Enables the experimental `jaxrs.canceled` span attribute.
type: boolean
default: false
telemetry:
- when: default
spans:
- span_kind: INTERNAL
attributes:
- name: code.function
type: STRING
- name: code.namespace
type: STRING
- name: jaxrs-3.0-jersey-3.0
display_name: Eclipse Jersey JAX-RS 3.x
description: |
This instrumentation enables spans for JAX-RS methods when using Jersey, and enriches existing HTTP server spans with route information.
library_link: https://eclipse-ee4j.github.io/jersey/
source_path: instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-jersey-3.0
minimum_java_version: 11
scope:
@ -4312,7 +4505,39 @@ libraries:
target_versions:
javaagent:
- org.glassfish.jersey.core:jersey-server:[3.0.0,)
configurations:
- name: otel.instrumentation.common.experimental.controller-telemetry.enabled
description: Enables the creation of experimental controller (INTERNAL) spans.
type: boolean
default: false
- name: otel.instrumentation.jaxrs.experimental-span-attributes
description: Enables the experimental `jaxrs.canceled` span attribute.
type: boolean
default: false
telemetry:
- when: default
spans:
- span_kind: INTERNAL
attributes:
- name: code.function
type: STRING
- name: code.namespace
type: STRING
- when: otel.instrumentation.jaxrs.experimental-span-attributes=true
spans:
- span_kind: INTERNAL
attributes:
- name: code.function
type: STRING
- name: code.namespace
type: STRING
- name: jaxrs.canceled
type: BOOLEAN
- name: jaxrs-3.0-resteasy-6.0
display_name: JBoss RESTEasy JAX-RS 3.x
description: |
This instrumentation enables spans for JAX-RS methods when using RESTEasy, and enriches existing HTTP server spans with route information.
library_link: https://resteasy.dev/
source_path: instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-resteasy-6.0
minimum_java_version: 11
scope:
@ -4320,6 +4545,34 @@ libraries:
target_versions:
javaagent:
- org.jboss.resteasy:resteasy-core:[6.0.0.Final,)
configurations:
- name: otel.instrumentation.common.experimental.controller-telemetry.enabled
description: Enables the creation of experimental controller (INTERNAL) spans.
type: boolean
default: false
- name: otel.instrumentation.jaxrs.experimental-span-attributes
description: Enables the experimental `jaxrs.canceled` span attribute.
type: boolean
default: false
telemetry:
- when: default
spans:
- span_kind: INTERNAL
attributes:
- name: code.function
type: STRING
- name: code.namespace
type: STRING
- when: otel.instrumentation.jaxrs.experimental-span-attributes=true
spans:
- span_kind: INTERNAL
attributes:
- name: code.function
type: STRING
- name: code.namespace
type: STRING
- name: jaxrs.canceled
type: BOOLEAN
jaxws:
- name: jaxws-2.0
source_path: instrumentation/jaxws/jaxws-2.0

View File

@ -159,6 +159,21 @@ readonly INSTRUMENTATIONS=(
"influxdb-2.4:javaagent:testStableSemconv"
"java-http-server:javaagent:test"
"failsafe-3.0:library:test"
"jaxrs:jaxrs-1.0:javaagent:test"
"jaxrs:jaxrs-2.0:jaxrs-2.0-annotations:javaagent:test"
"jaxrs:jaxrs-2.0:jaxrs-2.0-cxf-3.2:javaagent:test"
"jaxrs:jaxrs-2.0:jaxrs-2.0-cxf-3.2:javaagent:testExperimental"
"jaxrs:jaxrs-2.0:jaxrs-2.0-jersey-2.0:javaagent:test"
"jaxrs:jaxrs-2.0:jaxrs-2.0-jersey-2.0:javaagent:testExperimental"
"jaxrs:jaxrs-2.0:jaxrs-2.0-resteasy-3.0:javaagent:test"
"jaxrs:jaxrs-2.0:jaxrs-2.0-resteasy-3.0:javaagent:testExperimental"
"jaxrs:jaxrs-2.0:jaxrs-2.0-resteasy-3.1:javaagent:test"
"jaxrs:jaxrs-2.0:jaxrs-2.0-resteasy-3.1:javaagent:testExperimental"
"jaxrs:jaxrs-3.0:jaxrs-3.0-annotations:javaagent:test"
"jaxrs:jaxrs-3.0:jaxrs-3.0-jersey-3.0:javaagent:test"
"jaxrs:jaxrs-3.0:jaxrs-3.0-jersey-3.0:javaagent:testExperimental"
"jaxrs:jaxrs-3.0:jaxrs-3.0-resteasy-6.0:javaagent:test"
"jaxrs:jaxrs-3.0:jaxrs-3.0-resteasy-6.0:javaagent:testExperimental"
)
# Some instrumentation test suites don't run ARM, so we use colima to run them in an x86_64

View File

@ -19,7 +19,17 @@ class TelemetryParser {
"io.opentelemetry.couchbase-2.6", Set.of("io.opentelemetry.couchbase-2.0"),
// elasticsearch-rest-7.0 extends elasticsearch-api-client-7.16 with more attributes.
"io.opentelemetry.elasticsearch-api-client-7.16",
Set.of("io.opentelemetry.elasticsearch-rest-7.0"));
Set.of("io.opentelemetry.elasticsearch-rest-7.0"),
// jaxrs instrumentations add attributes to the jaxrs-2.0-annotations scope.
"io.opentelemetry.jaxrs-2.0-cxf-3.2", Set.of("io.opentelemetry.jaxrs-2.0-annotations"),
"io.opentelemetry.jaxrs-2.0-jersey-2.0", Set.of("io.opentelemetry.jaxrs-2.0-annotations"),
"io.opentelemetry.jaxrs-2.0-resteasy-3.0",
Set.of("io.opentelemetry.jaxrs-2.0-annotations"),
"io.opentelemetry.jaxrs-2.0-resteasy-3.1",
Set.of("io.opentelemetry.jaxrs-2.0-annotations"),
"io.opentelemetry.jaxrs-3.0-jersey-3.0", Set.of("io.opentelemetry.jaxrs-3.0-annotations"),
"io.opentelemetry.jaxrs-3.0-resteasy-6.0",
Set.of("io.opentelemetry.jaxrs-3.0-annotations"));
/**
* Checks if the given telemetry scope is valid for the specified module scope.

View File

@ -35,4 +35,6 @@ tasks.withType<Test>().configureEach {
// required on jdk17
jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED")
jvmArgs("-XX:+IgnoreUnrecognizedVMOptions")
systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false")
}

View File

@ -1 +1,10 @@
disabled_by_default: true
display_name: JAX-RS 1.x
description: >
This instrumentation enables spans for JAX-RS methods, and enriches existing HTTP server spans
with route information.
library_link: https://javaee.github.io/javaee-spec/javadocs/javax/ws/rs/package-summary.html
configurations:
- name: otel.instrumentation.common.experimental.controller-telemetry.enabled
description: Enables the creation of experimental controller (INTERNAL) spans.
type: boolean
default: false

View File

@ -28,5 +28,7 @@ dependencies {
tasks {
withType<Test>().configureEach {
jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true")
systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false")
}
}

View File

@ -0,0 +1,14 @@
display_name: JAX-RS 2.x
description: >
This instrumentation enables spans for JAX-RS annotated methods, and enriches existing HTTP server
spans with route information.
library_link: https://javaee.github.io/javaee-spec/javadocs/javax/ws/rs/package-summary.html
configurations:
- name: otel.instrumentation.common.experimental.controller-telemetry.enabled
description: Enables the creation of experimental controller (INTERNAL) spans.
type: boolean
default: false
- name: otel.instrumentation.jaxrs.experimental-span-attributes
type: boolean
description: Enables the experimental `jaxrs.canceled` span attribute.
default: false

View File

@ -52,10 +52,23 @@ dependencies {
latestDepTestLibrary("org.apache.cxf:cxf-rt-ws-policy:3.+") // documented limitation
}
tasks.withType<Test>().configureEach {
systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean)
tasks {
withType<Test>().configureEach {
systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean)
jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true")
// TODO run tests both with and without experimental span attributes
jvmArgs("-Dotel.instrumentation.jaxrs.experimental-span-attributes=true")
jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true")
systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false")
}
val testExperimental by registering(Test::class) {
testClassesDirs = sourceSets.test.get().output.classesDirs
classpath = sourceSets.test.get().runtimeClasspath
jvmArgs("-Dotel.instrumentation.jaxrs.experimental-span-attributes=true")
systemProperty("metadataConfig", "otel.instrumentation.jaxrs.experimental-span-attributes=true")
}
check {
dependsOn(testExperimental)
}
}

View File

@ -55,4 +55,9 @@ class CxfHttpServerTest extends JaxRsHttpServerTest<Server> {
options.setResponseCodeOnNonStandardHttpMethod(500);
}
@Override
protected boolean testExperimental() {
return Boolean.getBoolean("otel.instrumentation.jaxrs.experimental-span-attributes");
}
}

View File

@ -22,4 +22,9 @@ class CxfJettyHttpServerTest extends JaxRsJettyHttpServerTest {
options.setResponseCodeOnNonStandardHttpMethod(
Boolean.getBoolean("testLatestDeps") ? 500 : 405);
}
@Override
protected boolean testExperimental() {
return Boolean.getBoolean("otel.instrumentation.jaxrs.experimental-span-attributes");
}
}

View File

@ -0,0 +1,14 @@
display_name: Apache CXF JAX-RS 2.x
description: >
This instrumentation enables spans for JAX-RS methods when using Apache CXF, and enriches
existing HTTP server spans with route information.
library_link: https://cxf.apache.org/
configurations:
- name: otel.instrumentation.common.experimental.controller-telemetry.enabled
description: Enables the creation of experimental controller (INTERNAL) spans.
type: boolean
default: false
- name: otel.instrumentation.jaxrs.experimental-span-attributes
type: boolean
description: Enables the experimental `jaxrs.canceled` span attribute.
default: false

View File

@ -62,16 +62,27 @@ if (!(findProperty("testLatestDeps") as Boolean)) {
}
tasks {
test {
systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean)
}
withType<Test>().configureEach {
// TODO run tests both with and without experimental span attributes
jvmArgs("-Dotel.instrumentation.jaxrs.experimental-span-attributes=true")
// required on jdk17
jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED")
jvmArgs("-XX:+IgnoreUnrecognizedVMOptions")
jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true")
systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean)
jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true")
systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false")
}
val testExperimental by registering(Test::class) {
testClassesDirs = sourceSets.test.get().output.classesDirs
classpath = sourceSets.test.get().runtimeClasspath
jvmArgs("-Dotel.instrumentation.jaxrs.experimental-span-attributes=true")
systemProperty("metadataConfig", "otel.instrumentation.jaxrs.experimental-span-attributes=true")
}
check {
dependsOn(testExperimental)
}
}

View File

@ -68,4 +68,9 @@ class JerseyHttpServerTest extends JaxRsHttpServerTest<Server> {
return expectedHttpRoute(endpoint, method);
});
}
@Override
protected boolean testExperimental() {
return Boolean.getBoolean("otel.instrumentation.jaxrs.experimental-span-attributes");
}
}

View File

@ -32,4 +32,9 @@ class JerseyJettyHttpServerTest extends JaxRsJettyHttpServerTest {
// disables a test that jersey deems invalid
return false;
}
@Override
protected boolean testExperimental() {
return Boolean.getBoolean("otel.instrumentation.jaxrs.experimental-span-attributes");
}
}

View File

@ -0,0 +1,14 @@
display_name: Eclipse Jersey JAX-RS 2.x
description: >
This instrumentation enables spans for JAX-RS methods when using Jersey, and enriches
existing HTTP server spans with route information.
library_link: https://eclipse-ee4j.github.io/jersey/
configurations:
- name: otel.instrumentation.common.experimental.controller-telemetry.enabled
description: Enables the creation of experimental controller (INTERNAL) spans.
type: boolean
default: false
- name: otel.instrumentation.jaxrs.experimental-span-attributes
type: boolean
description: Enables the experimental `jaxrs.canceled` span attribute.
default: false

View File

@ -71,13 +71,22 @@ dependencies {
}
tasks {
test {
withType<Test>().configureEach {
systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean)
jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true")
systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false")
}
withType<Test>().configureEach {
// TODO run tests both with and without experimental span attributes
val testExperimental by registering(Test::class) {
testClassesDirs = sourceSets.test.get().output.classesDirs
classpath = sourceSets.test.get().runtimeClasspath
jvmArgs("-Dotel.instrumentation.jaxrs.experimental-span-attributes=true")
jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true")
systemProperty("metadataConfig", "otel.instrumentation.jaxrs.experimental-span-attributes=true")
}
check {
dependsOn(testExperimental)
}
}

View File

@ -53,4 +53,9 @@ class ResteasyHttpServerTest extends JaxRsHttpServerTest<UndertowJaxrsServer> {
protected boolean shouldTestCompletableStageAsync() {
return false;
}
@Override
protected boolean testExperimental() {
return Boolean.getBoolean("otel.instrumentation.jaxrs.experimental-span-attributes");
}
}

View File

@ -27,4 +27,9 @@ class ResteasyJettyHttpServerTest extends JaxRsJettyHttpServerTest {
protected boolean shouldTestCompletableStageAsync() {
return false;
}
@Override
protected boolean testExperimental() {
return Boolean.getBoolean("otel.instrumentation.jaxrs.experimental-span-attributes");
}
}

View File

@ -0,0 +1,14 @@
display_name: JBoss RESTEasy JAX-RS 2.x
description: >
This instrumentation enables spans for JAX-RS methods when using RESTEasy, and enriches existing
HTTP server spans with route information.
library_link: https://resteasy.dev/
configurations:
- name: otel.instrumentation.common.experimental.controller-telemetry.enabled
description: Enables the creation of experimental controller (INTERNAL) spans.
type: boolean
default: false
- name: otel.instrumentation.jaxrs.experimental-span-attributes
type: boolean
description: Enables the experimental `jaxrs.canceled` span attribute.
default: false

View File

@ -68,14 +68,23 @@ dependencies {
}
tasks {
test {
withType<Test>().configureEach {
systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean)
jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true")
systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false")
}
withType<Test>().configureEach {
// TODO run tests both with and without experimental span attributes
val testExperimental by registering(Test::class) {
testClassesDirs = sourceSets.test.get().output.classesDirs
classpath = sourceSets.test.get().runtimeClasspath
jvmArgs("-Dotel.instrumentation.jaxrs.experimental-span-attributes=true")
jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true")
systemProperty("metadataConfig", "otel.instrumentation.jaxrs.experimental-span-attributes=true")
}
check {
dependsOn(testExperimental)
}
}

View File

@ -47,4 +47,9 @@ class ResteasyHttpServerTest extends JaxRsHttpServerTest<UndertowJaxrsServer> {
return expectedHttpRoute(endpoint, method);
});
}
@Override
protected boolean testExperimental() {
return Boolean.getBoolean("otel.instrumentation.jaxrs.experimental-span-attributes");
}
}

View File

@ -21,4 +21,9 @@ class ResteasyJettyHttpServerTest extends JaxRsJettyHttpServerTest {
options.setResponseCodeOnNonStandardHttpMethod(500);
}
@Override
protected boolean testExperimental() {
return Boolean.getBoolean("otel.instrumentation.jaxrs.experimental-span-attributes");
}
}

View File

@ -0,0 +1,14 @@
display_name: JBoss RESTEasy JAX-RS 2.x
description: >
This instrumentation enables spans for JAX-RS methods when using RESTEasy, and enriches existing
HTTP server spans with route information.
library_link: https://resteasy.dev/
configurations:
- name: otel.instrumentation.common.experimental.controller-telemetry.enabled
description: Enables the creation of experimental controller (INTERNAL) spans.
type: boolean
default: false
- name: otel.instrumentation.jaxrs.experimental-span-attributes
type: boolean
description: Enables the experimental `jaxrs.canceled` span attribute.
default: false

View File

@ -1 +0,0 @@
disabled_by_default: true

View File

@ -24,5 +24,7 @@ dependencies {
tasks {
withType<Test>().configureEach {
jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true")
systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false")
}
}

View File

@ -0,0 +1,14 @@
display_name: JAX-RS 3.x
description: >
This instrumentation enables spans for JAX-RS annotated methods, and enriches existing HTTP server
spans with route information.
library_link: https://jakarta.ee/specifications/restful-ws/3.0/
configurations:
- name: otel.instrumentation.common.experimental.controller-telemetry.enabled
description: Enables the creation of experimental controller (INTERNAL) spans.
type: boolean
default: false
- name: otel.instrumentation.jaxrs.experimental-span-attributes
type: boolean
description: Enables the experimental `jaxrs.canceled` span attribute.
default: false

View File

@ -40,8 +40,21 @@ dependencies {
tasks {
withType<Test>().configureEach {
// TODO run tests both with and without experimental span attributes
jvmArgs("-Dotel.instrumentation.jaxrs.experimental-span-attributes=true")
systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean)
jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true")
systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false")
}
val testExperimental by registering(Test::class) {
testClassesDirs = sourceSets.test.get().output.classesDirs
classpath = sourceSets.test.get().runtimeClasspath
jvmArgs("-Dotel.instrumentation.jaxrs.experimental-span-attributes=true")
systemProperty("metadataConfig", "otel.instrumentation.jaxrs.experimental-span-attributes=true")
}
check {
dependsOn(testExperimental)
}
}

View File

@ -68,4 +68,9 @@ class JerseyHttpServerTest extends JaxRsHttpServerTest<Server> {
return expectedHttpRoute(endpoint, method);
});
}
@Override
protected boolean testExperimental() {
return Boolean.getBoolean("otel.instrumentation.jaxrs.experimental-span-attributes");
}
}

View File

@ -32,4 +32,9 @@ class JerseyJettyHttpServerTest extends JaxRsJettyHttpServerTest {
// disables a test that jersey deems invalid
return false;
}
@Override
protected boolean testExperimental() {
return Boolean.getBoolean("otel.instrumentation.jaxrs.experimental-span-attributes");
}
}

View File

@ -0,0 +1,14 @@
display_name: Eclipse Jersey JAX-RS 3.x
description: >
This instrumentation enables spans for JAX-RS methods when using Jersey, and enriches existing
HTTP server spans with route information.
library_link: https://eclipse-ee4j.github.io/jersey/
configurations:
- name: otel.instrumentation.common.experimental.controller-telemetry.enabled
description: Enables the creation of experimental controller (INTERNAL) spans.
type: boolean
default: false
- name: otel.instrumentation.jaxrs.experimental-span-attributes
type: boolean
description: Enables the experimental `jaxrs.canceled` span attribute.
default: false

View File

@ -43,8 +43,21 @@ dependencies {
tasks {
withType<Test>().configureEach {
// TODO run tests both with and without experimental span attributes
jvmArgs("-Dotel.instrumentation.jaxrs.experimental-span-attributes=true")
systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean)
jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true")
systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false")
}
val testExperimental by registering(Test::class) {
testClassesDirs = sourceSets.test.get().output.classesDirs
classpath = sourceSets.test.get().runtimeClasspath
jvmArgs("-Dotel.instrumentation.jaxrs.experimental-span-attributes=true")
systemProperty("metadataConfig", "otel.instrumentation.jaxrs.experimental-span-attributes=true")
}
check {
dependsOn(testExperimental)
}
}

View File

@ -47,4 +47,9 @@ class ResteasyHttpServerTest extends JaxRsHttpServerTest<UndertowJaxrsServer> {
return expectedHttpRoute(endpoint, method);
});
}
@Override
protected boolean testExperimental() {
return Boolean.getBoolean("otel.instrumentation.jaxrs.experimental-span-attributes");
}
}

View File

@ -21,4 +21,9 @@ class ResteasyJettyHttpServerTest extends JaxRsJettyHttpServerTest {
options.setResponseCodeOnNonStandardHttpMethod(500);
}
@Override
protected boolean testExperimental() {
return Boolean.getBoolean("otel.instrumentation.jaxrs.experimental-span-attributes");
}
}

View File

@ -0,0 +1,14 @@
display_name: JBoss RESTEasy JAX-RS 3.x
description: >
This instrumentation enables spans for JAX-RS methods when using RESTEasy, and enriches existing
HTTP server spans with route information.
library_link: https://resteasy.dev/
configurations:
- name: otel.instrumentation.common.experimental.controller-telemetry.enabled
description: Enables the creation of experimental controller (INTERNAL) spans.
type: boolean
default: false
- name: otel.instrumentation.jaxrs.experimental-span-attributes
type: boolean
description: Enables the experimental `jaxrs.canceled` span attribute.
default: false

View File

@ -1 +0,0 @@
disabled_by_default: true

View File

@ -44,6 +44,10 @@ public abstract class AbstractJaxRsHttpServerTest<SERVER> extends AbstractHttpSe
return false;
}
protected boolean testExperimental() {
return false;
}
protected boolean shouldTestCompletableStageAsync() {
return Boolean.getBoolean("testLatestDeps");
}
@ -192,7 +196,7 @@ public abstract class AbstractJaxRsHttpServerTest<SERVER> extends AbstractHttpSe
List<AttributeAssertion> attributeAssertions =
codeFunctionSuffixAssertions("test.JaxRsTestResource", "asyncOp");
if (testKind == AsyncResponseTestKind.CANCELED) {
if (testKind == AsyncResponseTestKind.CANCELED && testExperimental()) {
attributeAssertions.add(equalTo(AttributeKey.booleanKey("jaxrs.canceled"), true));
}