From 782c70eadf0d4909aa18f67e38cbd2c6fcc382eb Mon Sep 17 00:00:00 2001 From: Jay DeLuca Date: Sun, 15 Sep 2024 07:57:09 -0400 Subject: [PATCH] move security manager tests to their own suite --- .../resources/library/build.gradle.kts | 18 +++++++ .../resources/HostResourceTest.java | 19 -------- .../resources/OsResourceTest.java | 18 ------- .../resources/ProcessResourceTest.java | 19 -------- .../resources/ProcessRuntimeResourceTest.java | 18 ------- .../internal/DeclarativeConfigTest.java | 3 +- .../resources/SecurityManagerExtension.java | 0 .../SecurityManagerResourceTest.java | 47 +++++++++++++++++++ 8 files changed, 67 insertions(+), 75 deletions(-) rename instrumentation/resources/library/src/{test => testSecurityManager}/java/io/opentelemetry/instrumentation/resources/SecurityManagerExtension.java (100%) create mode 100644 instrumentation/resources/library/src/testSecurityManager/java/io/opentelemetry/instrumentation/resources/SecurityManagerResourceTest.java diff --git a/instrumentation/resources/library/build.gradle.kts b/instrumentation/resources/library/build.gradle.kts index 2c2ba58a3901..b779e231aee9 100644 --- a/instrumentation/resources/library/build.gradle.kts +++ b/instrumentation/resources/library/build.gradle.kts @@ -69,3 +69,21 @@ 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") + } + } + } +} + +tasks { + check { + dependsOn(testing.suites) + } +} 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/internal/DeclarativeConfigTest.java b/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/internal/DeclarativeConfigTest.java index 8b54cc6f0d4b..14b8aacc2aa1 100644 --- a/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/internal/DeclarativeConfigTest.java +++ b/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/internal/DeclarativeConfigTest.java @@ -48,7 +48,8 @@ void endToEnd() { .collect(Collectors.toSet()); // ContainerResourceComponentProvider - no container attributes reliably provided // HostIdResourceComponentProvider - host.id attribute not reliably provided - // HostResourceComponentProvider - host.arch attribute not reliably provided + // HostResourceComponentProvider + assertThat(attributeKeys).contains("host.arch"); assertThat(attributeKeys).contains("host.name"); // OsResourceComponentProvider assertThat(attributeKeys).contains("os.description"); 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..9243214e3f37 --- /dev/null +++ b/instrumentation/resources/library/src/testSecurityManager/java/io/opentelemetry/instrumentation/resources/SecurityManagerResourceTest.java @@ -0,0 +1,47 @@ +/* + * 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.AttributeKey; +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.sdk.resources.Resource; +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, JRE.JAVA_16}, + disabledReason = "Java 17 deprecates security manager for removal") +class SecurityManagerResourceTest { + + @Test + void hostResourceTestEmpty() { + Attributes attributes = HostResource.buildResource().getAttributes(); + assertThat(attributes.asMap()).containsOnlyKeys(AttributeKey.stringKey("host.name")); + } + + @Test + void osResourceEmpty() { + assertThat(OsResource.buildResource()).isEqualTo(Resource.empty()); + } + + @Test + void processResourceEmpty() { + Attributes attributes = ProcessResource.buildResource().getAttributes(); + assertThat(attributes.asMap()).containsOnlyKeys(AttributeKey.longKey("process.pid")); + } + + @Test + void processRuntimeResourceEmpty() { + assertThat(ProcessRuntimeResource.buildResource()).isEqualTo(Resource.empty()); + } +}