diff --git a/docs/instrumentation-list.yaml b/docs/instrumentation-list.yaml index 858d45d17e1f..7d918f90a5be 100644 --- a/docs/instrumentation-list.yaml +++ b/docs/instrumentation-list.yaml @@ -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 diff --git a/instrumentation-docs/instrumentations.sh b/instrumentation-docs/instrumentations.sh index c72abd2a05ec..5364c1c1f7af 100755 --- a/instrumentation-docs/instrumentations.sh +++ b/instrumentation-docs/instrumentations.sh @@ -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 diff --git a/instrumentation-docs/src/main/java/io/opentelemetry/instrumentation/docs/parsers/TelemetryParser.java b/instrumentation-docs/src/main/java/io/opentelemetry/instrumentation/docs/parsers/TelemetryParser.java index c5aaf6934321..164f9f16f995 100644 --- a/instrumentation-docs/src/main/java/io/opentelemetry/instrumentation/docs/parsers/TelemetryParser.java +++ b/instrumentation-docs/src/main/java/io/opentelemetry/instrumentation/docs/parsers/TelemetryParser.java @@ -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. diff --git a/instrumentation/jaxrs/jaxrs-1.0/javaagent/build.gradle.kts b/instrumentation/jaxrs/jaxrs-1.0/javaagent/build.gradle.kts index 918062a20b02..10366be8d601 100644 --- a/instrumentation/jaxrs/jaxrs-1.0/javaagent/build.gradle.kts +++ b/instrumentation/jaxrs/jaxrs-1.0/javaagent/build.gradle.kts @@ -35,4 +35,6 @@ tasks.withType().configureEach { // required on jdk17 jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED") jvmArgs("-XX:+IgnoreUnrecognizedVMOptions") + + systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false") } diff --git a/instrumentation/jaxrs/jaxrs-1.0/metadata.yaml b/instrumentation/jaxrs/jaxrs-1.0/metadata.yaml index 1aee203e711b..d75d31eaad4c 100644 --- a/instrumentation/jaxrs/jaxrs-1.0/metadata.yaml +++ b/instrumentation/jaxrs/jaxrs-1.0/metadata.yaml @@ -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 diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-annotations/javaagent/build.gradle.kts b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-annotations/javaagent/build.gradle.kts index 4cd18bf4d3e5..c79d2953b24f 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-annotations/javaagent/build.gradle.kts +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-annotations/javaagent/build.gradle.kts @@ -28,5 +28,7 @@ dependencies { tasks { withType().configureEach { jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true") + + systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false") } } diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-annotations/metadata.yaml b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-annotations/metadata.yaml new file mode 100644 index 000000000000..d353e20eeaa5 --- /dev/null +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-annotations/metadata.yaml @@ -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 diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/build.gradle.kts b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/build.gradle.kts index d7deace26eee..295971fb18e1 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/build.gradle.kts +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/build.gradle.kts @@ -52,10 +52,23 @@ dependencies { latestDepTestLibrary("org.apache.cxf:cxf-rt-ws-policy:3.+") // documented limitation } -tasks.withType().configureEach { - systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean) +tasks { + withType().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) + } } diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfHttpServerTest.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfHttpServerTest.java index 735751feeaa6..3f958ec60565 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfHttpServerTest.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfHttpServerTest.java @@ -55,4 +55,9 @@ protected void configure(HttpServerTestOptions options) { options.setResponseCodeOnNonStandardHttpMethod(500); } + + @Override + protected boolean testExperimental() { + return Boolean.getBoolean("otel.instrumentation.jaxrs.experimental-span-attributes"); + } } diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfJettyHttpServerTest.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfJettyHttpServerTest.java index 3581b2774bcc..3535040cc2ce 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfJettyHttpServerTest.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfJettyHttpServerTest.java @@ -22,4 +22,9 @@ protected void configure(HttpServerTestOptions options) { options.setResponseCodeOnNonStandardHttpMethod( Boolean.getBoolean("testLatestDeps") ? 500 : 405); } + + @Override + protected boolean testExperimental() { + return Boolean.getBoolean("otel.instrumentation.jaxrs.experimental-span-attributes"); + } } diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/metadata.yaml b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/metadata.yaml new file mode 100644 index 000000000000..1ac22667aa8c --- /dev/null +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/metadata.yaml @@ -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 diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/build.gradle.kts b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/build.gradle.kts index 0e88dcd78a0d..5ecdce11f706 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/build.gradle.kts +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/build.gradle.kts @@ -62,16 +62,27 @@ if (!(findProperty("testLatestDeps") as Boolean)) { } tasks { - test { - systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean) - } - withType().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) } } diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JerseyHttpServerTest.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JerseyHttpServerTest.java index 00c5fe75a4b6..c30501f308ec 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JerseyHttpServerTest.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JerseyHttpServerTest.java @@ -68,4 +68,9 @@ protected void configure(HttpServerTestOptions options) { return expectedHttpRoute(endpoint, method); }); } + + @Override + protected boolean testExperimental() { + return Boolean.getBoolean("otel.instrumentation.jaxrs.experimental-span-attributes"); + } } diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JerseyJettyHttpServerTest.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JerseyJettyHttpServerTest.java index 12ff37e61417..9c6590e989ee 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JerseyJettyHttpServerTest.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JerseyJettyHttpServerTest.java @@ -32,4 +32,9 @@ protected boolean testInterfaceMethodWithPath() { // disables a test that jersey deems invalid return false; } + + @Override + protected boolean testExperimental() { + return Boolean.getBoolean("otel.instrumentation.jaxrs.experimental-span-attributes"); + } } diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/metadata.yaml b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/metadata.yaml new file mode 100644 index 000000000000..be9838132313 --- /dev/null +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/metadata.yaml @@ -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 diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0/javaagent/build.gradle.kts b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0/javaagent/build.gradle.kts index 0bec377acc2d..ff5ea93fdafe 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0/javaagent/build.gradle.kts +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0/javaagent/build.gradle.kts @@ -71,13 +71,22 @@ dependencies { } tasks { - test { + withType().configureEach { systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean) + jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true") + + systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false") } - withType().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) } } diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyHttpServerTest.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyHttpServerTest.java index 98ff16c8b83e..86bd8bcdf006 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyHttpServerTest.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyHttpServerTest.java @@ -53,4 +53,9 @@ protected void configure(HttpServerTestOptions options) { protected boolean shouldTestCompletableStageAsync() { return false; } + + @Override + protected boolean testExperimental() { + return Boolean.getBoolean("otel.instrumentation.jaxrs.experimental-span-attributes"); + } } diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyJettyHttpServerTest.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyJettyHttpServerTest.java index 86da019629b7..ce8e94a894d5 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyJettyHttpServerTest.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyJettyHttpServerTest.java @@ -27,4 +27,9 @@ protected void configure(HttpServerTestOptions options) { protected boolean shouldTestCompletableStageAsync() { return false; } + + @Override + protected boolean testExperimental() { + return Boolean.getBoolean("otel.instrumentation.jaxrs.experimental-span-attributes"); + } } diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0/metadata.yaml b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0/metadata.yaml new file mode 100644 index 000000000000..3b2f16e2db25 --- /dev/null +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0/metadata.yaml @@ -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 diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.1/javaagent/build.gradle.kts b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.1/javaagent/build.gradle.kts index 67436b728b59..09f587237f89 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.1/javaagent/build.gradle.kts +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.1/javaagent/build.gradle.kts @@ -68,14 +68,23 @@ dependencies { } tasks { - test { + withType().configureEach { systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean) + jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true") + + systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false") } - withType().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) } } diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyHttpServerTest.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyHttpServerTest.java index 4ed601b35f72..45888e87e2e0 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyHttpServerTest.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyHttpServerTest.java @@ -47,4 +47,9 @@ protected void configure(HttpServerTestOptions options) { return expectedHttpRoute(endpoint, method); }); } + + @Override + protected boolean testExperimental() { + return Boolean.getBoolean("otel.instrumentation.jaxrs.experimental-span-attributes"); + } } diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyJettyHttpServerTest.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyJettyHttpServerTest.java index bff66faf6589..5c0786214123 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyJettyHttpServerTest.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyJettyHttpServerTest.java @@ -21,4 +21,9 @@ protected void configure(HttpServerTestOptions options) { options.setResponseCodeOnNonStandardHttpMethod(500); } + + @Override + protected boolean testExperimental() { + return Boolean.getBoolean("otel.instrumentation.jaxrs.experimental-span-attributes"); + } } diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.1/metadata.yaml b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.1/metadata.yaml new file mode 100644 index 000000000000..3b2f16e2db25 --- /dev/null +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.1/metadata.yaml @@ -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 diff --git a/instrumentation/jaxrs/jaxrs-2.0/metadata.yaml b/instrumentation/jaxrs/jaxrs-2.0/metadata.yaml deleted file mode 100644 index 1aee203e711b..000000000000 --- a/instrumentation/jaxrs/jaxrs-2.0/metadata.yaml +++ /dev/null @@ -1 +0,0 @@ -disabled_by_default: true diff --git a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-annotations/javaagent/build.gradle.kts b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-annotations/javaagent/build.gradle.kts index 754031ecc78f..ed1931f232c5 100644 --- a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-annotations/javaagent/build.gradle.kts +++ b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-annotations/javaagent/build.gradle.kts @@ -24,5 +24,7 @@ dependencies { tasks { withType().configureEach { jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true") + + systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false") } } diff --git a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-annotations/metadata.yaml b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-annotations/metadata.yaml new file mode 100644 index 000000000000..33c532bad7b8 --- /dev/null +++ b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-annotations/metadata.yaml @@ -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 diff --git a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-jersey-3.0/javaagent/build.gradle.kts b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-jersey-3.0/javaagent/build.gradle.kts index a84bb422c608..06442827e6fc 100644 --- a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-jersey-3.0/javaagent/build.gradle.kts +++ b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-jersey-3.0/javaagent/build.gradle.kts @@ -40,8 +40,21 @@ dependencies { tasks { withType().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) } } diff --git a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-jersey-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/JerseyHttpServerTest.java b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-jersey-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/JerseyHttpServerTest.java index d5a3e1f35c64..64af8ec752cf 100644 --- a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-jersey-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/JerseyHttpServerTest.java +++ b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-jersey-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/JerseyHttpServerTest.java @@ -68,4 +68,9 @@ protected void configure(HttpServerTestOptions options) { return expectedHttpRoute(endpoint, method); }); } + + @Override + protected boolean testExperimental() { + return Boolean.getBoolean("otel.instrumentation.jaxrs.experimental-span-attributes"); + } } diff --git a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-jersey-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/JerseyJettyHttpServerTest.java b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-jersey-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/JerseyJettyHttpServerTest.java index 93944d10acdd..e4da8e989481 100644 --- a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-jersey-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/JerseyJettyHttpServerTest.java +++ b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-jersey-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/JerseyJettyHttpServerTest.java @@ -32,4 +32,9 @@ protected boolean testInterfaceMethodWithPath() { // disables a test that jersey deems invalid return false; } + + @Override + protected boolean testExperimental() { + return Boolean.getBoolean("otel.instrumentation.jaxrs.experimental-span-attributes"); + } } diff --git a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-jersey-3.0/metadata.yaml b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-jersey-3.0/metadata.yaml new file mode 100644 index 000000000000..f0cafeeeb211 --- /dev/null +++ b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-jersey-3.0/metadata.yaml @@ -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 diff --git a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-resteasy-6.0/javaagent/build.gradle.kts b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-resteasy-6.0/javaagent/build.gradle.kts index 9720803a9bd1..e86a67640402 100644 --- a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-resteasy-6.0/javaagent/build.gradle.kts +++ b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-resteasy-6.0/javaagent/build.gradle.kts @@ -43,8 +43,21 @@ dependencies { tasks { withType().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) } } diff --git a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-resteasy-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/ResteasyHttpServerTest.java b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-resteasy-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/ResteasyHttpServerTest.java index 9d98c6e47072..c9292b84e6f7 100644 --- a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-resteasy-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/ResteasyHttpServerTest.java +++ b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-resteasy-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/ResteasyHttpServerTest.java @@ -47,4 +47,9 @@ protected void configure(HttpServerTestOptions options) { return expectedHttpRoute(endpoint, method); }); } + + @Override + protected boolean testExperimental() { + return Boolean.getBoolean("otel.instrumentation.jaxrs.experimental-span-attributes"); + } } diff --git a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-resteasy-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/ResteasyJettyHttpServerTest.java b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-resteasy-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/ResteasyJettyHttpServerTest.java index 8aab21abc9fa..d3f193b56ce6 100644 --- a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-resteasy-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/ResteasyJettyHttpServerTest.java +++ b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-resteasy-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/ResteasyJettyHttpServerTest.java @@ -21,4 +21,9 @@ protected void configure(HttpServerTestOptions options) { options.setResponseCodeOnNonStandardHttpMethod(500); } + + @Override + protected boolean testExperimental() { + return Boolean.getBoolean("otel.instrumentation.jaxrs.experimental-span-attributes"); + } } diff --git a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-resteasy-6.0/metadata.yaml b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-resteasy-6.0/metadata.yaml new file mode 100644 index 000000000000..a1a9085435c8 --- /dev/null +++ b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-resteasy-6.0/metadata.yaml @@ -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 diff --git a/instrumentation/jaxrs/jaxrs-3.0/metadata.yaml b/instrumentation/jaxrs/jaxrs-3.0/metadata.yaml deleted file mode 100644 index 1aee203e711b..000000000000 --- a/instrumentation/jaxrs/jaxrs-3.0/metadata.yaml +++ /dev/null @@ -1 +0,0 @@ -disabled_by_default: true diff --git a/instrumentation/jaxrs/jaxrs-common/testing/src/main/java/io/opentelemetry/instrumentation/jaxrs/AbstractJaxRsHttpServerTest.java b/instrumentation/jaxrs/jaxrs-common/testing/src/main/java/io/opentelemetry/instrumentation/jaxrs/AbstractJaxRsHttpServerTest.java index 8c49b0b462d9..c8e565250974 100644 --- a/instrumentation/jaxrs/jaxrs-common/testing/src/main/java/io/opentelemetry/instrumentation/jaxrs/AbstractJaxRsHttpServerTest.java +++ b/instrumentation/jaxrs/jaxrs-common/testing/src/main/java/io/opentelemetry/instrumentation/jaxrs/AbstractJaxRsHttpServerTest.java @@ -44,6 +44,10 @@ protected boolean asyncCancelHasSendError() { return false; } + protected boolean testExperimental() { + return false; + } + protected boolean shouldTestCompletableStageAsync() { return Boolean.getBoolean("testLatestDeps"); } @@ -192,7 +196,7 @@ void shouldHandleAsyncResponse(AsyncResponseTestKind testKind) throws Exception List attributeAssertions = codeFunctionSuffixAssertions("test.JaxRsTestResource", "asyncOp"); - if (testKind == AsyncResponseTestKind.CANCELED) { + if (testKind == AsyncResponseTestKind.CANCELED && testExperimental()) { attributeAssertions.add(equalTo(AttributeKey.booleanKey("jaxrs.canceled"), true)); }