diff --git a/instrumentation/resources/library/build.gradle.kts b/instrumentation/resources/library/build.gradle.kts index 2c2ba58a3901..ec94154e0749 100644 --- a/instrumentation/resources/library/build.gradle.kts +++ b/instrumentation/resources/library/build.gradle.kts @@ -69,3 +69,22 @@ tasks { ) } } + +testing { + suites { + // Security Manager tests involve setup that can poison the environment for other tests + val testSecurityManager by registering(JvmTestSuite::class) { + dependencies { + implementation(project(":instrumentation:resources:library")) + implementation("io.opentelemetry:opentelemetry-sdk-common") + implementation("io.opentelemetry.semconv:opentelemetry-semconv-incubating") + } + } + } +} + +tasks { + check { + dependsOn(testing.suites) + } +} diff --git a/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/HostResource.java b/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/HostResource.java index 82810aeb9178..0c38d860639c 100644 --- a/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/HostResource.java +++ b/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/HostResource.java @@ -17,8 +17,8 @@ public final class HostResource { // copied from HostIncubatingAttributes - public static final AttributeKey HOST_ARCH = AttributeKey.stringKey("host.arch"); - public static final AttributeKey HOST_NAME = AttributeKey.stringKey("host.name"); + private static final AttributeKey HOST_ARCH = AttributeKey.stringKey("host.arch"); + private static final AttributeKey HOST_NAME = AttributeKey.stringKey("host.name"); private static final Resource INSTANCE = buildResource(); diff --git a/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/HostResourceTest.java b/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/HostResourceTest.java index 4c2e0ca45514..ef46578cd619 100644 --- a/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/HostResourceTest.java +++ b/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/HostResourceTest.java @@ -11,12 +11,7 @@ import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.semconv.SchemaUrls; import io.opentelemetry.semconv.incubating.HostIncubatingAttributes; -import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestInstance; -import org.junit.jupiter.api.condition.EnabledOnJre; -import org.junit.jupiter.api.condition.JRE; -import org.junit.jupiter.api.extension.ExtendWith; class HostResourceTest { @Test @@ -30,18 +25,4 @@ void shouldCreateRuntimeAttributes() { assertThat(attributes.get(HostIncubatingAttributes.HOST_NAME)).isNotBlank(); assertThat(attributes.get(HostIncubatingAttributes.HOST_ARCH)).isNotBlank(); } - - @Nested - @TestInstance(TestInstance.Lifecycle.PER_CLASS) - @ExtendWith(SecurityManagerExtension.class) - @EnabledOnJre( - value = {JRE.JAVA_8, JRE.JAVA_11, JRE.JAVA_16}, - disabledReason = "Java 17 deprecates security manager for removal") - static class SecurityManagerEnabled { - @Test - void empty() { - Attributes attributes = HostResource.buildResource().getAttributes(); - assertThat(attributes.asMap()).containsOnlyKeys(HostIncubatingAttributes.HOST_NAME); - } - } } diff --git a/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/OsResourceTest.java b/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/OsResourceTest.java index 682de97565a1..453fb92ac071 100644 --- a/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/OsResourceTest.java +++ b/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/OsResourceTest.java @@ -10,12 +10,7 @@ import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.semconv.SchemaUrls; import io.opentelemetry.semconv.incubating.OsIncubatingAttributes; -import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestInstance; -import org.junit.jupiter.api.condition.EnabledOnJre; -import org.junit.jupiter.api.condition.JRE; -import org.junit.jupiter.api.extension.ExtendWith; import org.junitpioneer.jupiter.SetSystemProperty; class OsResourceTest { @@ -138,17 +133,4 @@ void unknown() { assertThat(resource.getAttribute(OsIncubatingAttributes.OS_TYPE)).isNull(); assertThat(resource.getAttribute(OsIncubatingAttributes.OS_DESCRIPTION)).isNotEmpty(); } - - @Nested - @TestInstance(TestInstance.Lifecycle.PER_CLASS) - @ExtendWith(SecurityManagerExtension.class) - @EnabledOnJre( - value = {JRE.JAVA_8, JRE.JAVA_11, JRE.JAVA_16}, - disabledReason = "Java 17 deprecates security manager for removal") - static class SecurityManagerEnabled { - @Test - void empty() { - assertThat(OsResource.buildResource()).isEqualTo(Resource.empty()); - } - } } diff --git a/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/ProcessResourceTest.java b/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/ProcessResourceTest.java index 27bfe409e2c2..c40429e147d3 100644 --- a/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/ProcessResourceTest.java +++ b/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/ProcessResourceTest.java @@ -11,12 +11,7 @@ import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.semconv.SchemaUrls; import io.opentelemetry.semconv.incubating.ProcessIncubatingAttributes; -import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestInstance; -import org.junit.jupiter.api.condition.EnabledOnJre; -import org.junit.jupiter.api.condition.JRE; -import org.junit.jupiter.api.extension.ExtendWith; import org.junitpioneer.jupiter.SetSystemProperty; class ProcessResourceTest { @@ -52,18 +47,4 @@ void windows() { // With Java 9+ and a compiled jar, ResourceAttributes.PROCESS_COMMAND_ARGS // will be set instead of ResourceAttributes.PROCESS_COMMAND_LINE } - - @Nested - @TestInstance(TestInstance.Lifecycle.PER_CLASS) - @ExtendWith(SecurityManagerExtension.class) - @EnabledOnJre( - value = {JRE.JAVA_8, JRE.JAVA_11, JRE.JAVA_16}, - disabledReason = "Java 17 deprecates security manager for removal") - static class SecurityManagerEnabled { - @Test - void empty() { - Attributes attributes = ProcessResource.buildResource().getAttributes(); - assertThat(attributes.asMap()).containsOnlyKeys(ProcessIncubatingAttributes.PROCESS_PID); - } - } } diff --git a/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/ProcessRuntimeResourceTest.java b/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/ProcessRuntimeResourceTest.java index d8fd1084c009..ab56bbffc875 100644 --- a/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/ProcessRuntimeResourceTest.java +++ b/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/ProcessRuntimeResourceTest.java @@ -11,12 +11,7 @@ import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.semconv.SchemaUrls; import io.opentelemetry.semconv.incubating.ProcessIncubatingAttributes; -import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestInstance; -import org.junit.jupiter.api.condition.EnabledOnJre; -import org.junit.jupiter.api.condition.JRE; -import org.junit.jupiter.api.extension.ExtendWith; class ProcessRuntimeResourceTest { @Test @@ -32,17 +27,4 @@ void shouldCreateRuntimeAttributes() { assertThat(attributes.get(ProcessIncubatingAttributes.PROCESS_RUNTIME_DESCRIPTION)) .isNotBlank(); } - - @Nested - @TestInstance(TestInstance.Lifecycle.PER_CLASS) - @ExtendWith(SecurityManagerExtension.class) - @EnabledOnJre( - value = {JRE.JAVA_8, JRE.JAVA_11, JRE.JAVA_16}, - disabledReason = "Java 17 deprecates security manager for removal") - static class SecurityManagerEnabled { - @Test - void empty() { - assertThat(ProcessRuntimeResource.buildResource()).isEqualTo(Resource.empty()); - } - } } diff --git a/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/SecurityManagerExtension.java b/instrumentation/resources/library/src/testSecurityManager/java/io/opentelemetry/instrumentation/resources/SecurityManagerExtension.java similarity index 100% rename from instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/SecurityManagerExtension.java rename to instrumentation/resources/library/src/testSecurityManager/java/io/opentelemetry/instrumentation/resources/SecurityManagerExtension.java diff --git a/instrumentation/resources/library/src/testSecurityManager/java/io/opentelemetry/instrumentation/resources/SecurityManagerResourceTest.java b/instrumentation/resources/library/src/testSecurityManager/java/io/opentelemetry/instrumentation/resources/SecurityManagerResourceTest.java new file mode 100644 index 000000000000..fad07fcccd30 --- /dev/null +++ b/instrumentation/resources/library/src/testSecurityManager/java/io/opentelemetry/instrumentation/resources/SecurityManagerResourceTest.java @@ -0,0 +1,48 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.resources; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.sdk.resources.Resource; +import io.opentelemetry.semconv.incubating.HostIncubatingAttributes; +import io.opentelemetry.semconv.incubating.ProcessIncubatingAttributes; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.condition.EnabledOnJre; +import org.junit.jupiter.api.condition.JRE; +import org.junit.jupiter.api.extension.ExtendWith; + +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +@ExtendWith(SecurityManagerExtension.class) +@EnabledOnJre( + value = {JRE.JAVA_8, JRE.JAVA_11}, + disabledReason = "Java 17 deprecates security manager for removal") +class SecurityManagerResourceTest { + + @Test + void hostResourceTestEmpty() { + Attributes attributes = HostResource.buildResource().getAttributes(); + assertThat(attributes.asMap()).containsOnlyKeys(HostIncubatingAttributes.HOST_NAME); + } + + @Test + void osResourceEmpty() { + assertThat(OsResource.buildResource()).isEqualTo(Resource.empty()); + } + + @Test + void processResourceEmpty() { + Attributes attributes = ProcessResource.buildResource().getAttributes(); + assertThat(attributes.asMap()).containsOnlyKeys(ProcessIncubatingAttributes.PROCESS_PID); + } + + @Test + void processRuntimeResourceEmpty() { + assertThat(ProcessRuntimeResource.buildResource()).isEqualTo(Resource.empty()); + } +}