From aeb57f38886aa79106cbb585ac70ead68a5979ae Mon Sep 17 00:00:00 2001 From: Jack Berg Date: Fri, 7 Oct 2022 10:51:27 -0500 Subject: [PATCH] Stop publishing opentelemetry-sdk-extension-resources artifact --- README.md | 1 - all/build.gradle.kts | 1 + .../all/FallbackArtifactsTest.java | 14 ++ bom/build.gradle.kts | 1 + .../opentelemetry-sdk-extension-resources.txt | 2 - exporters/otlp/common/build.gradle.kts | 1 - sdk-extensions/autoconfigure/build.gradle.kts | 33 ---- .../ResourceConfigurationTest.java | 61 ++----- ...r.java => TestAnimalResourceProvider.java} | 2 +- .../TestColorResourceProvider.java | 19 +++ ...try.sdk.autoconfigure.spi.ResourceProvider | 3 +- sdk-extensions/resources/README.md | 54 ------ sdk-extensions/resources/build.gradle.kts | 66 -------- .../resources/ContainerResource.java | 128 --------------- .../resources/ContainerResourceProvider.java | 24 --- .../sdk/extension/resources/HostResource.java | 53 ------ .../resources/HostResourceProvider.java | 24 --- .../sdk/extension/resources/OsResource.java | 97 ----------- .../resources/OsResourceProvider.java | 24 --- .../sdk/extension/resources/ProcessPid.java | 31 ---- .../extension/resources/ProcessResource.java | 91 ----------- .../resources/ProcessResourceProvider.java | 24 --- .../resources/ProcessRuntimeResource.java | 59 ------- .../ProcessRuntimeResourceProvider.java | 24 --- .../sdk/extension/resources/package-info.java | 13 -- .../sdk/extension/resources/ProcessPid.java | 19 --- ...try.sdk.autoconfigure.spi.ResourceProvider | 5 - .../resources/ContainerResourceTest.java | 105 ------------ .../extension/resources/HostResourceTest.java | 47 ------ .../extension/resources/OsResourceTest.java | 154 ------------------ .../resources/ProcessResourceTest.java | 64 -------- .../resources/ProcessRuntimeResourceTest.java | 47 ------ .../resources/SecurityManagerExtension.java | 60 ------- sdk/common/build.gradle.kts | 1 - settings.gradle.kts | 1 - 35 files changed, 55 insertions(+), 1298 deletions(-) delete mode 100644 docs/apidiffs/current_vs_latest/opentelemetry-sdk-extension-resources.txt rename sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/{ResourceProviderCustomizer.java => TestAnimalResourceProvider.java} (89%) create mode 100644 sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/TestColorResourceProvider.java delete mode 100644 sdk-extensions/resources/README.md delete mode 100644 sdk-extensions/resources/build.gradle.kts delete mode 100644 sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ContainerResource.java delete mode 100644 sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ContainerResourceProvider.java delete mode 100644 sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/HostResource.java delete mode 100644 sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/HostResourceProvider.java delete mode 100644 sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/OsResource.java delete mode 100644 sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/OsResourceProvider.java delete mode 100644 sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ProcessPid.java delete mode 100644 sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ProcessResource.java delete mode 100644 sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ProcessResourceProvider.java delete mode 100644 sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ProcessRuntimeResource.java delete mode 100644 sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ProcessRuntimeResourceProvider.java delete mode 100644 sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/package-info.java delete mode 100644 sdk-extensions/resources/src/main/java11/io/opentelemetry/sdk/extension/resources/ProcessPid.java delete mode 100644 sdk-extensions/resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider delete mode 100644 sdk-extensions/resources/src/test/java/io/opentelemetry/sdk/extension/resources/ContainerResourceTest.java delete mode 100644 sdk-extensions/resources/src/test/java/io/opentelemetry/sdk/extension/resources/HostResourceTest.java delete mode 100644 sdk-extensions/resources/src/test/java/io/opentelemetry/sdk/extension/resources/OsResourceTest.java delete mode 100644 sdk-extensions/resources/src/test/java/io/opentelemetry/sdk/extension/resources/ProcessResourceTest.java delete mode 100644 sdk-extensions/resources/src/test/java/io/opentelemetry/sdk/extension/resources/ProcessRuntimeResourceTest.java delete mode 100644 sdk-extensions/resources/src/test/java/io/opentelemetry/sdk/extension/resources/SecurityManagerExtension.java diff --git a/README.md b/README.md index 195d4585ee3..5ba88a99771 100644 --- a/README.md +++ b/README.md @@ -270,7 +270,6 @@ dependency as follows, replacing `{{artifact-id}}` with the value from the "Arti |-------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------|-----------------------------------------------------|-------------------------------------------------------------| | [SDK Autoconfigure Extension](./sdk-extensions/autoconfigure) | Autoconfigure OpenTelemetry SDK from env vars, system properties, and SPI | `opentelemetry-sdk-extension-autoconfigure` | 1.19.0-alpha | | [SDK Autoconfigure SPI](./sdk-extensions/autoconfigure-spi) | Service Provider Interface (SPI) definitions for autoconfigure | `opentelemetry-sdk-extension-autoconfigure-spi` | 1.19.0 | -| [SDK Resources Extension](./sdk-extensions/resources) | Resource providers, including container, host, os, and process (deprecated) | `opentelemetry-sdk-extension-resources` | 1.19.0 | | [SDK AWS Extension](./sdk-extensions/aws) | AWS resource providers, including beanstalk, ec2, ecs, eks, and lambda (deprecated) | `opentelemetry-sdk-extension-aws` | 1.19.0 | | [SDK Jaeger Remote Sampler Extension](./sdk-extensions/jaeger-remote-sampler) | Sampler which obtains sampling configuration from remote Jaeger server | `opentelemetry-sdk-extension-jaeger-remote-sampler` | 1.19.0 | | [SDK Incubator](./sdk-extensions/incubator) | SDK incubator, including YAML based view configuration, LeakDetectingSpanProcessor, and zPages | `opentelemetry-sdk-extension-incubator` | 1.19.0-alpha | diff --git a/all/build.gradle.kts b/all/build.gradle.kts index 085127b8ebc..548a2249e0d 100644 --- a/all/build.gradle.kts +++ b/all/build.gradle.kts @@ -48,6 +48,7 @@ dependencies { testImplementation("io.grpc:grpc-protobuf") testImplementation("io.grpc:grpc-stub") testImplementation("io.opentelemetry:opentelemetry-extension-annotations") + testImplementation("io.opentelemetry:opentelemetry-sdk-extension-resources") testImplementation("com.tngtech.archunit:archunit-junit5") } diff --git a/all/src/test/java/io/opentelemetry/all/FallbackArtifactsTest.java b/all/src/test/java/io/opentelemetry/all/FallbackArtifactsTest.java index f1099667c45..18c69d7b4b7 100644 --- a/all/src/test/java/io/opentelemetry/all/FallbackArtifactsTest.java +++ b/all/src/test/java/io/opentelemetry/all/FallbackArtifactsTest.java @@ -23,6 +23,20 @@ void extensionAnnotations() { classAvailable("io.opentelemetry.extension.annotations.SpanAttribute"); } + @Test + void sdkExtensionResources() { + classAvailable("io.opentelemetry.sdk.extension.resources.ContainerResource"); + classAvailable("io.opentelemetry.sdk.extension.resources.ContainerResourceProvider"); + classAvailable("io.opentelemetry.sdk.extension.resources.HostResource"); + classAvailable("io.opentelemetry.sdk.extension.resources.HostResourceProvider"); + classAvailable("io.opentelemetry.sdk.extension.resources.OsResource"); + classAvailable("io.opentelemetry.sdk.extension.resources.OsResourceProvider"); + classAvailable("io.opentelemetry.sdk.extension.resources.ProcessResource"); + classAvailable("io.opentelemetry.sdk.extension.resources.ProcessResourceProvider"); + classAvailable("io.opentelemetry.sdk.extension.resources.ProcessRuntimeResource"); + classAvailable("io.opentelemetry.sdk.extension.resources.ProcessRuntimeResourceProvider"); + } + private static void classAvailable(String fqcn) { Assertions.assertThatCode(() -> Class.forName(fqcn)).doesNotThrowAnyException(); } diff --git a/bom/build.gradle.kts b/bom/build.gradle.kts index 150358a3ab2..3dc206de8c7 100644 --- a/bom/build.gradle.kts +++ b/bom/build.gradle.kts @@ -11,3 +11,4 @@ otelBom.projectFilter.set { !it.hasProperty("otel.release") } // Artifacts that were previously published and included in the BOM for backwards compatibility otelBom.addFallback("opentelemetry-exporter-jaeger-proto", "1.17.0") otelBom.addFallback("opentelemetry-extension-annotations", "1.18.0") +otelBom.addFallback("opentelemetry-sdk-extension-resources", "1.19.0") diff --git a/docs/apidiffs/current_vs_latest/opentelemetry-sdk-extension-resources.txt b/docs/apidiffs/current_vs_latest/opentelemetry-sdk-extension-resources.txt deleted file mode 100644 index df26146497b..00000000000 --- a/docs/apidiffs/current_vs_latest/opentelemetry-sdk-extension-resources.txt +++ /dev/null @@ -1,2 +0,0 @@ -Comparing source compatibility of against -No changes. \ No newline at end of file diff --git a/exporters/otlp/common/build.gradle.kts b/exporters/otlp/common/build.gradle.kts index 92bbc4ae27d..1b363e69d62 100644 --- a/exporters/otlp/common/build.gradle.kts +++ b/exporters/otlp/common/build.gradle.kts @@ -34,7 +34,6 @@ dependencies { testImplementation("io.opentelemetry.proto:opentelemetry-proto") jmhImplementation(project(":sdk:testing")) - jmhImplementation(project(":sdk-extensions:resources")) jmhImplementation("com.fasterxml.jackson.core:jackson-core") jmhImplementation("io.opentelemetry.proto:opentelemetry-proto") jmhImplementation("io.grpc:grpc-netty") diff --git a/sdk-extensions/autoconfigure/build.gradle.kts b/sdk-extensions/autoconfigure/build.gradle.kts index 515b27935eb..d6ac1c4781b 100644 --- a/sdk-extensions/autoconfigure/build.gradle.kts +++ b/sdk-extensions/autoconfigure/build.gradle.kts @@ -84,7 +84,6 @@ testing { implementation(project(":exporters:otlp:common")) implementation(project(":exporters:prometheus")) implementation(project(":exporters:zipkin")) - implementation(project(":sdk-extensions:resources")) implementation(project(":sdk:testing")) implementation(project(":semconv")) @@ -175,38 +174,6 @@ testing { } } } - val testResourceDisabledByProperty by registering(JvmTestSuite::class) { - dependencies { - implementation(project(":sdk-extensions:resources")) - } - - targets { - all { - testTask { - jvmArgs("-Dotel.java.disabled.resource-providers=io.opentelemetry.sdk.extension.resources.OsResourceProvider,io.opentelemetry.sdk.extension.resources.ProcessResourceProvider") - // Properties win, this is ignored. - environment("OTEL_JAVA_DISABLED_RESOURCE_PROVIDERS", "io.opentelemetry.sdk.extension.resources.ProcessRuntimeResourceProvider") - environment("OTEL_TRACES_EXPORTER", "none") - environment("OTEL_METRICS_EXPORTER", "none") - } - } - } - } - val testResourceDisabledByEnv by registering(JvmTestSuite::class) { - dependencies { - implementation(project(":sdk-extensions:resources")) - } - - targets { - all { - testTask { - environment("OTEL_JAVA_DISABLED_RESOURCE_PROVIDERS", "io.opentelemetry.sdk.extension.resources.OsResourceProvider,io.opentelemetry.sdk.extension.resources.ProcessResourceProvider") - environment("OTEL_TRACES_EXPORTER", "none") - environment("OTEL_METRICS_EXPORTER", "none") - } - } - } - } val testZipkin by registering(JvmTestSuite::class) { dependencies { implementation(project(":exporters:zipkin")) diff --git a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/ResourceConfigurationTest.java b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/ResourceConfigurationTest.java index 8b83569f90c..ec5b149277c 100644 --- a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/ResourceConfigurationTest.java +++ b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/ResourceConfigurationTest.java @@ -9,7 +9,6 @@ import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.semconv.resource.attributes.ResourceAttributes; import java.net.URL; import java.net.URLClassLoader; import java.util.Collections; @@ -20,7 +19,7 @@ class ResourceConfigurationTest { @Test - void resource() { + void configureResource() { Attributes attributes = ResourceConfiguration.configureResource( DefaultConfigProperties.get(Collections.emptyMap()), @@ -28,20 +27,12 @@ void resource() { (r, c) -> r) .getAttributes(); - assertThat(attributes.get(ResourceAttributes.OS_TYPE)).isNotNull(); - assertThat(attributes.get(ResourceAttributes.OS_DESCRIPTION)).isNotNull(); - - assertThat(attributes.get(ResourceAttributes.PROCESS_PID)).isNotNull(); - assertThat(attributes.get(ResourceAttributes.PROCESS_EXECUTABLE_PATH)).isNotNull(); - assertThat(attributes.get(ResourceAttributes.PROCESS_COMMAND_LINE)).isNotNull(); - - assertThat(attributes.get(ResourceAttributes.PROCESS_RUNTIME_NAME)).isNotNull(); - assertThat(attributes.get(ResourceAttributes.PROCESS_RUNTIME_VERSION)).isNotNull(); - assertThat(attributes.get(ResourceAttributes.PROCESS_RUNTIME_DESCRIPTION)).isNotNull(); + assertThat(attributes.get(AttributeKey.stringKey("animal"))).isNotNull(); + assertThat(attributes.get(AttributeKey.stringKey("color"))).isNotNull(); } @Test - void emptyClassLoader() { + void configureResource_EmptyClassLoader() { Attributes attributes = ResourceConfiguration.configureResource( DefaultConfigProperties.get(Collections.emptyMap()), @@ -49,15 +40,16 @@ void emptyClassLoader() { (r, c) -> r) .getAttributes(); - assertProcessAttributeIsNull(attributes); + assertThat(attributes.get(AttributeKey.stringKey("animal"))).isNull(); + assertThat(attributes.get(AttributeKey.stringKey("color"))).isNull(); } @Test - void onlyEnabledCustomResourceProvider() { + void configureResource_OnlyEnabled() { Map customConfigs = new HashMap<>(1); customConfigs.put( "otel.java.enabled.resource.providers", - "io.opentelemetry.sdk.autoconfigure.ResourceProviderCustomizer"); + "io.opentelemetry.sdk.autoconfigure.TestAnimalResourceProvider"); Attributes attributes = ResourceConfiguration.configureResource( DefaultConfigProperties.get(customConfigs), @@ -65,19 +57,19 @@ void onlyEnabledCustomResourceProvider() { (r, c) -> r) .getAttributes(); - assertProcessAttributeIsNull(attributes); assertThat(attributes.get(AttributeKey.stringKey("animal"))).isEqualTo("cat"); + assertThat(attributes.get(AttributeKey.stringKey("color"))).isNull(); } @Test - void settingEnabledAndDisabledConfiguration() { + void configureResource_EnabledAndDisabled() { Map customConfigs = new HashMap<>(2); customConfigs.put( "otel.java.enabled.resource.providers", - "io.opentelemetry.sdk.autoconfigure.ResourceProviderCustomizer,io.opentelemetry.sdk.extension.resources.OsResourceProvider,io.opentelemetry.sdk.extension.resources.ProcessResourceProvider"); + "io.opentelemetry.sdk.autoconfigure.TestAnimalResourceProvider"); customConfigs.put( "otel.java.disabled.resource.providers", - "io.opentelemetry.sdk.extension.resources.OsResourceProvider"); + "io.opentelemetry.sdk.extension.resources.TestColorResourceProvider"); Attributes attributes = ResourceConfiguration.configureResource( DefaultConfigProperties.get(customConfigs), @@ -85,22 +77,16 @@ void settingEnabledAndDisabledConfiguration() { (r, c) -> r) .getAttributes(); - assertThat(attributes.get(ResourceAttributes.OS_TYPE)).isNull(); - assertThat(attributes.get(ResourceAttributes.OS_DESCRIPTION)).isNull(); - - assertThat(attributes.get(ResourceAttributes.PROCESS_PID)).isNotNull(); - assertThat(attributes.get(ResourceAttributes.PROCESS_EXECUTABLE_PATH)).isNotNull(); - assertThat(attributes.get(ResourceAttributes.PROCESS_COMMAND_LINE)).isNotNull(); - assertThat(attributes.get(AttributeKey.stringKey("animal"))).isEqualTo("cat"); + assertThat(attributes.get(AttributeKey.stringKey("color"))).isNull(); } @Test - void onlySettingEnabledConfiguration() { + void configureResource_OnlyDisabled() { Map customConfigs = new HashMap<>(1); customConfigs.put( - "otel.java.enabled.resource.providers", - "io.opentelemetry.sdk.autoconfigure.ResourceProviderCustomizer"); + "otel.java.disabled.resource.providers", + "io.opentelemetry.sdk.autoconfigure.TestColorResourceProvider"); Attributes attributes = ResourceConfiguration.configureResource( DefaultConfigProperties.get(customConfigs), @@ -108,20 +94,7 @@ void onlySettingEnabledConfiguration() { (r, c) -> r) .getAttributes(); - assertProcessAttributeIsNull(attributes); assertThat(attributes.get(AttributeKey.stringKey("animal"))).isEqualTo("cat"); - } - - void assertProcessAttributeIsNull(Attributes attributes) { - assertThat(attributes.get(ResourceAttributes.OS_TYPE)).isNull(); - assertThat(attributes.get(ResourceAttributes.OS_DESCRIPTION)).isNull(); - - assertThat(attributes.get(ResourceAttributes.PROCESS_PID)).isNull(); - assertThat(attributes.get(ResourceAttributes.PROCESS_EXECUTABLE_PATH)).isNull(); - assertThat(attributes.get(ResourceAttributes.PROCESS_COMMAND_LINE)).isNull(); - - assertThat(attributes.get(ResourceAttributes.PROCESS_RUNTIME_NAME)).isNull(); - assertThat(attributes.get(ResourceAttributes.PROCESS_RUNTIME_VERSION)).isNull(); - assertThat(attributes.get(ResourceAttributes.PROCESS_RUNTIME_DESCRIPTION)).isNull(); + assertThat(attributes.get(AttributeKey.stringKey("color"))).isNull(); } } diff --git a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/ResourceProviderCustomizer.java b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/TestAnimalResourceProvider.java similarity index 89% rename from sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/ResourceProviderCustomizer.java rename to sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/TestAnimalResourceProvider.java index f6abd2451f8..f2eedf8b864 100644 --- a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/ResourceProviderCustomizer.java +++ b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/TestAnimalResourceProvider.java @@ -11,7 +11,7 @@ import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider; import io.opentelemetry.sdk.resources.Resource; -public class ResourceProviderCustomizer implements ResourceProvider { +public class TestAnimalResourceProvider implements ResourceProvider { @Override public Resource createResource(ConfigProperties config) { return Resource.create(Attributes.of(AttributeKey.stringKey("animal"), "cat")); diff --git a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/TestColorResourceProvider.java b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/TestColorResourceProvider.java new file mode 100644 index 00000000000..7a5f9719952 --- /dev/null +++ b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/TestColorResourceProvider.java @@ -0,0 +1,19 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.sdk.autoconfigure; + +import io.opentelemetry.api.common.AttributeKey; +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; +import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider; +import io.opentelemetry.sdk.resources.Resource; + +public class TestColorResourceProvider implements ResourceProvider { + @Override + public Resource createResource(ConfigProperties config) { + return Resource.create(Attributes.of(AttributeKey.stringKey("color"), "blue")); + } +} diff --git a/sdk-extensions/autoconfigure/src/testFullConfig/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider b/sdk-extensions/autoconfigure/src/testFullConfig/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider index 88f0e92b239..2141cc904da 100644 --- a/sdk-extensions/autoconfigure/src/testFullConfig/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider +++ b/sdk-extensions/autoconfigure/src/testFullConfig/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider @@ -1 +1,2 @@ -io.opentelemetry.sdk.autoconfigure.ResourceProviderCustomizer \ No newline at end of file +io.opentelemetry.sdk.autoconfigure.TestAnimalResourceProvider +io.opentelemetry.sdk.autoconfigure.TestColorResourceProvider \ No newline at end of file diff --git a/sdk-extensions/resources/README.md b/sdk-extensions/resources/README.md deleted file mode 100644 index 323cc417ed1..00000000000 --- a/sdk-extensions/resources/README.md +++ /dev/null @@ -1,54 +0,0 @@ -# OpenTelemetry Resource Providers - -[![Javadocs][javadoc-image]][javadoc-url] - -> **NOTICE**: This artifact is deprecated and its contents have been moved -> to [io.opentelemetry.instrumentation:opentelemetry-resources](https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/resources). -> Version 1.19.0 will be the last minor version published. However, it will continue to receive -> patches for security vulnerabilities, and `io.opentelemetry:opentelemetry-bom` will reference the -> last published version. - -This package includes some standard `ResourceProvider`s for filling in attributes related to -common environments. Currently the resources provide the following semantic conventions - -## Populated attributes - -### Operating System - -Provider: `io.opentelemetry.sdk.extension.resources.OsResource` - -Specification: https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/resource/semantic_conventions/os.md - -Implemented attributes: -- `os.name` -- `os.description` - -### Process - -Implementation: `io.opentelemetry.sdk.extension.resources.ProcessResource` - -Specification: https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/resource/semantic_conventions/process.md#process - -Implemented attributes: -- `process.pid` -- `process.executable.path` (note, we assume the `java` binary is located in the `bin` subfolder of `JAVA_HOME`) -- `process.command_line` (note this includes all system properties and arguments when running) - -### Java Runtime - -Implementation: `io.opentelemetry.sdk.extension.resources.ProcessRuntimeResource` - -Specification: https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/resource/semantic_conventions/process.md#process-runtimes - -Implemented attributes: -- `process.runtime.name` -- `process.runtime.version` -- `process.runtime.description` - -## Platforms - -This package currently does not run on Android. It has been verified on OpenJDK and should work on -other server JVM distributions but if you find any issues please let us know. - -[javadoc-image]: https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-sdk-extension-resources.svg -[javadoc-url]: https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-sdk-extension-resources diff --git a/sdk-extensions/resources/build.gradle.kts b/sdk-extensions/resources/build.gradle.kts deleted file mode 100644 index 51db76b723e..00000000000 --- a/sdk-extensions/resources/build.gradle.kts +++ /dev/null @@ -1,66 +0,0 @@ -plugins { - id("otel.java-conventions") - id("otel.publish-conventions") - - id("otel.animalsniffer-conventions") -} - -description = "OpenTelemetry SDK Resource Providers" -otelJava.moduleName.set("io.opentelemetry.sdk.extension.resources") - -val mrJarVersions = listOf(11) - -dependencies { - api(project(":sdk:common")) - - implementation(project(":semconv")) - - compileOnly(project(":sdk-extensions:autoconfigure")) - - compileOnly("org.codehaus.mojo:animal-sniffer-annotations") -} - -for (version in mrJarVersions) { - sourceSets { - create("java$version") { - java { - setSrcDirs(listOf("src/main/java$version")) - } - } - } - - tasks { - named("compileJava${version}Java") { - sourceCompatibility = "$version" - targetCompatibility = "$version" - options.release.set(version) - } - } - - configurations { - named("java${version}Implementation") { - extendsFrom(configurations["implementation"]) - } - named("java${version}CompileOnly") { - extendsFrom(configurations["compileOnly"]) - } - } - - dependencies { - // Common to reference classes in main sourceset from Java 9 one (e.g., to return a common interface) - add("java${version}Implementation", files(sourceSets.main.get().output.classesDirs)) - } -} - -tasks { - withType(Jar::class) { - for (version in mrJarVersions) { - into("META-INF/versions/$version") { - from(sourceSets["java$version"].output) - } - } - manifest.attributes( - "Multi-Release" to "true" - ) - } -} diff --git a/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ContainerResource.java b/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ContainerResource.java deleted file mode 100644 index b555a12bb1b..00000000000 --- a/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ContainerResource.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.extension.resources; - -import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.internal.OtelEncodingUtils; -import io.opentelemetry.sdk.resources.Resource; -import io.opentelemetry.semconv.resource.attributes.ResourceAttributes; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Objects; -import java.util.Optional; -import java.util.logging.Level; -import java.util.logging.Logger; -import java.util.stream.Stream; -import javax.annotation.Nullable; -import org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement; - -/** - * Factory for {@link Resource} retrieving Container ID information. - * - * @deprecated Moved to io.opentelemetry.instrumentation:opentelemetry-resources. - */ -@Deprecated -public final class ContainerResource { - - private static final Logger logger = Logger.getLogger(ContainerResource.class.getName()); - private static final String UNIQUE_HOST_NAME_FILE_NAME = "/proc/self/cgroup"; - private static final Resource INSTANCE = buildSingleton(UNIQUE_HOST_NAME_FILE_NAME); - - @IgnoreJRERequirement - private static Resource buildSingleton(String uniqueHostNameFileName) { - // can't initialize this statically without running afoul of animalSniffer on paths - return buildResource(Paths.get(uniqueHostNameFileName)); - } - - // package private for testing - static Resource buildResource(Path path) { - String containerId = extractContainerId(path); - - if (containerId == null || containerId.isEmpty()) { - return Resource.empty(); - } else { - return Resource.create(Attributes.of(ResourceAttributes.CONTAINER_ID, containerId)); - } - } - - /** Returns resource with container information. */ - public static Resource get() { - return INSTANCE; - } - - /** - * Each line of cgroup file looks like "14:name=systemd:/docker/.../... A hex string is expected - * inside the last section separated by '/' Each segment of the '/' can contain metadata separated - * by either '.' (at beginning) or '-' (at end) - * - * @return containerId - */ - @IgnoreJRERequirement - @Nullable - private static String extractContainerId(Path cgroupFilePath) { - if (!Files.exists(cgroupFilePath) || !Files.isReadable(cgroupFilePath)) { - return null; - } - try (Stream lines = Files.lines(cgroupFilePath)) { - Optional value = - lines - .filter(line -> !line.isEmpty()) - .map(ContainerResource::getIdFromLine) - .filter(Objects::nonNull) - .findFirst(); - if (value.isPresent()) { - return value.get(); - } - } catch (Exception e) { - logger.log(Level.WARNING, "Unable to read file", e); - } - return null; - } - - @Nullable - private static String getIdFromLine(String line) { - // This cgroup output line should have the container id in it - int lastSlashIdx = line.lastIndexOf('/'); - if (lastSlashIdx < 0) { - return null; - } - - String containerId; - - String lastSection = line.substring(lastSlashIdx + 1); - int colonIdx = lastSection.lastIndexOf(':'); - - if (colonIdx != -1) { - // since containerd v1.5.0+, containerId is divided by the last colon when the cgroupDriver is - // systemd: - // https://github.com/containerd/containerd/blob/release/1.5/pkg/cri/server/helpers_linux.go#L64 - containerId = lastSection.substring(colonIdx + 1); - } else { - int startIdx = lastSection.lastIndexOf('-'); - int endIdx = lastSection.lastIndexOf('.'); - - startIdx = startIdx == -1 ? 0 : startIdx + 1; - if (endIdx == -1) { - endIdx = lastSection.length(); - } - if (startIdx > endIdx) { - return null; - } - - containerId = lastSection.substring(startIdx, endIdx); - } - - if (OtelEncodingUtils.isValidBase16String(containerId) && !containerId.isEmpty()) { - return containerId; - } else { - return null; - } - } - - private ContainerResource() {} -} diff --git a/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ContainerResourceProvider.java b/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ContainerResourceProvider.java deleted file mode 100644 index a8c9d290c60..00000000000 --- a/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ContainerResourceProvider.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.extension.resources; - -import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; -import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider; -import io.opentelemetry.sdk.resources.Resource; - -/** - * {@link ResourceProvider} for automatically configuring {@link ResourceProvider}. - * - * @deprecated Moved to io.opentelemetry.instrumentation:opentelemetry-resources. - */ -@Deprecated -public class ContainerResourceProvider implements ResourceProvider { - @Override - public Resource createResource(ConfigProperties config) { - return ContainerResource.get(); - } -} diff --git a/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/HostResource.java b/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/HostResource.java deleted file mode 100644 index 96fb49f0b23..00000000000 --- a/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/HostResource.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.extension.resources; - -import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.common.AttributesBuilder; -import io.opentelemetry.sdk.resources.Resource; -import io.opentelemetry.semconv.resource.attributes.ResourceAttributes; -import java.net.InetAddress; -import java.net.UnknownHostException; - -/** - * Factory for a {@link Resource} which provides information about the host info. - * - * @deprecated Moved to io.opentelemetry.instrumentation:opentelemetry-resources. - */ -@Deprecated -public final class HostResource { - - private static final Resource INSTANCE = buildResource(); - - /** Returns a {@link Resource} which provides information about host. */ - public static Resource get() { - return INSTANCE; - } - - // Visible for testing - static Resource buildResource() { - AttributesBuilder attributes = Attributes.builder(); - try { - attributes.put(ResourceAttributes.HOST_NAME, InetAddress.getLocalHost().getHostName()); - } catch (UnknownHostException e) { - // Ignore - } - String hostArch = null; - try { - hostArch = System.getProperty("os.arch"); - } catch (SecurityException t) { - // Ignore - } - if (hostArch != null) { - attributes.put(ResourceAttributes.HOST_ARCH, hostArch); - } - - return Resource.create(attributes.build(), ResourceAttributes.SCHEMA_URL); - } - - private HostResource() {} -} diff --git a/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/HostResourceProvider.java b/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/HostResourceProvider.java deleted file mode 100644 index b4ff167bc3e..00000000000 --- a/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/HostResourceProvider.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.extension.resources; - -import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; -import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider; -import io.opentelemetry.sdk.resources.Resource; - -/** - * {@link ResourceProvider} for automatically configuring {@link HostResource}. - * - * @deprecated Moved to io.opentelemetry.instrumentation:opentelemetry-resources. - */ -@Deprecated -public final class HostResourceProvider implements ResourceProvider { - @Override - public Resource createResource(ConfigProperties config) { - return HostResource.get(); - } -} diff --git a/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/OsResource.java b/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/OsResource.java deleted file mode 100644 index c82298d9afd..00000000000 --- a/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/OsResource.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.extension.resources; - -import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.common.AttributesBuilder; -import io.opentelemetry.sdk.resources.Resource; -import io.opentelemetry.semconv.resource.attributes.ResourceAttributes; -import javax.annotation.Nullable; - -/** - * Factory of a {@link Resource} which provides information about the current operating system. - * - * @deprecated Moved to io.opentelemetry.instrumentation:opentelemetry-resources. - */ -@Deprecated -public final class OsResource { - - private static final Resource INSTANCE = buildResource(); - - /** - * Returns a factory for a {@link Resource} which provides information about the current operating - * system. - */ - public static Resource get() { - return INSTANCE; - } - - // Visible for testing - static Resource buildResource() { - - String os; - try { - os = System.getProperty("os.name"); - } catch (SecurityException t) { - // Security manager enabled, can't provide much os information. - return Resource.empty(); - } - - if (os == null) { - return Resource.empty(); - } - - AttributesBuilder attributes = Attributes.builder(); - - String osName = getOs(os); - if (osName != null) { - attributes.put(ResourceAttributes.OS_TYPE, osName); - } - - String version = null; - try { - version = System.getProperty("os.version"); - } catch (SecurityException e) { - // Ignore - } - String osDescription = version != null ? os + ' ' + version : os; - attributes.put(ResourceAttributes.OS_DESCRIPTION, osDescription); - - return Resource.create(attributes.build(), ResourceAttributes.SCHEMA_URL); - } - - @Nullable - private static String getOs(String os) { - os = os.toLowerCase(); - if (os.startsWith("windows")) { - return ResourceAttributes.OsTypeValues.WINDOWS; - } else if (os.startsWith("linux")) { - return ResourceAttributes.OsTypeValues.LINUX; - } else if (os.startsWith("mac")) { - return ResourceAttributes.OsTypeValues.DARWIN; - } else if (os.startsWith("freebsd")) { - return ResourceAttributes.OsTypeValues.FREEBSD; - } else if (os.startsWith("netbsd")) { - return ResourceAttributes.OsTypeValues.NETBSD; - } else if (os.startsWith("openbsd")) { - return ResourceAttributes.OsTypeValues.OPENBSD; - } else if (os.startsWith("dragonflybsd")) { - return ResourceAttributes.OsTypeValues.DRAGONFLYBSD; - } else if (os.startsWith("hp-ux")) { - return ResourceAttributes.OsTypeValues.HPUX; - } else if (os.startsWith("aix")) { - return ResourceAttributes.OsTypeValues.AIX; - } else if (os.startsWith("solaris")) { - return ResourceAttributes.OsTypeValues.SOLARIS; - } else if (os.startsWith("z/os")) { - return ResourceAttributes.OsTypeValues.Z_OS; - } - return null; - } - - private OsResource() {} -} diff --git a/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/OsResourceProvider.java b/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/OsResourceProvider.java deleted file mode 100644 index 565d518ce58..00000000000 --- a/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/OsResourceProvider.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.extension.resources; - -import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; -import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider; -import io.opentelemetry.sdk.resources.Resource; - -/** - * {@link ResourceProvider} for automatically configuring {@link OsResource}. - * - * @deprecated Moved to io.opentelemetry.instrumentation:opentelemetry-resources. - */ -@Deprecated -public final class OsResourceProvider implements ResourceProvider { - @Override - public Resource createResource(ConfigProperties config) { - return OsResource.get(); - } -} diff --git a/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ProcessPid.java b/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ProcessPid.java deleted file mode 100644 index 43ad8e10f63..00000000000 --- a/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ProcessPid.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.extension.resources; - -import java.lang.management.ManagementFactory; -import org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement; - -final class ProcessPid { - - private ProcessPid() {} - - @IgnoreJRERequirement - static long getPid() { - // While this is not strictly defined, almost all commonly used JVMs format this as - // pid@hostname. - String runtimeName = ManagementFactory.getRuntimeMXBean().getName(); - int atIndex = runtimeName.indexOf('@'); - if (atIndex >= 0) { - String pidString = runtimeName.substring(0, atIndex); - try { - return Long.parseLong(pidString); - } catch (NumberFormatException ignored) { - // Ignore parse failure. - } - } - return -1; - } -} diff --git a/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ProcessResource.java b/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ProcessResource.java deleted file mode 100644 index 2e7d0251a42..00000000000 --- a/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ProcessResource.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.extension.resources; - -import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.common.AttributesBuilder; -import io.opentelemetry.sdk.resources.Resource; -import io.opentelemetry.semconv.resource.attributes.ResourceAttributes; -import java.io.File; -import java.lang.management.ManagementFactory; -import java.lang.management.RuntimeMXBean; -import org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement; - -/** - * Factory of a {@link Resource} which provides information about the current running process. - * - * @deprecated Moved to io.opentelemetry.instrumentation:opentelemetry-resources. - */ -@Deprecated -public final class ProcessResource { - - private static final Resource INSTANCE = buildResource(); - - /** - * Returns a factory for a {@link Resource} which provides information about the current running - * process. - */ - public static Resource get() { - return INSTANCE; - } - - // Visible for testing - static Resource buildResource() { - try { - return doBuildResource(); - } catch (LinkageError t) { - // Will only happen on Android, where these attributes generally don't make much sense - // anyways. - return Resource.empty(); - } - } - - @IgnoreJRERequirement - private static Resource doBuildResource() { - AttributesBuilder attributes = Attributes.builder(); - - RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean(); - - long pid = ProcessPid.getPid(); - - if (pid >= 0) { - attributes.put(ResourceAttributes.PROCESS_PID, pid); - } - - String javaHome = null; - String osName = null; - try { - javaHome = System.getProperty("java.home"); - osName = System.getProperty("os.name"); - } catch (SecurityException e) { - // Ignore - } - if (javaHome != null) { - StringBuilder executablePath = new StringBuilder(javaHome); - executablePath - .append(File.separatorChar) - .append("bin") - .append(File.separatorChar) - .append("java"); - if (osName != null && osName.toLowerCase().startsWith("windows")) { - executablePath.append(".exe"); - } - - attributes.put(ResourceAttributes.PROCESS_EXECUTABLE_PATH, executablePath.toString()); - - StringBuilder commandLine = new StringBuilder(executablePath); - for (String arg : runtime.getInputArguments()) { - commandLine.append(' ').append(arg); - } - attributes.put(ResourceAttributes.PROCESS_COMMAND_LINE, commandLine.toString()); - } - - return Resource.create(attributes.build(), ResourceAttributes.SCHEMA_URL); - } - - private ProcessResource() {} -} diff --git a/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ProcessResourceProvider.java b/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ProcessResourceProvider.java deleted file mode 100644 index 83ee3920956..00000000000 --- a/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ProcessResourceProvider.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.extension.resources; - -import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; -import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider; -import io.opentelemetry.sdk.resources.Resource; - -/** - * {@link ResourceProvider} for automatically configuring {@link ProcessResource}. - * - * @deprecated Moved to io.opentelemetry.instrumentation:opentelemetry-resources. - */ -@Deprecated -public final class ProcessResourceProvider implements ResourceProvider { - @Override - public Resource createResource(ConfigProperties config) { - return ProcessResource.get(); - } -} diff --git a/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ProcessRuntimeResource.java b/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ProcessRuntimeResource.java deleted file mode 100644 index 751d83f2ebd..00000000000 --- a/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ProcessRuntimeResource.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.extension.resources; - -import static io.opentelemetry.semconv.resource.attributes.ResourceAttributes.PROCESS_RUNTIME_DESCRIPTION; -import static io.opentelemetry.semconv.resource.attributes.ResourceAttributes.PROCESS_RUNTIME_NAME; -import static io.opentelemetry.semconv.resource.attributes.ResourceAttributes.PROCESS_RUNTIME_VERSION; - -import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.sdk.resources.Resource; -import io.opentelemetry.semconv.resource.attributes.ResourceAttributes; - -/** - * Factory of a {@link Resource} which provides information about the Java runtime. - * - * @deprecated Moved to io.opentelemetry.instrumentation:opentelemetry-resources. - */ -@Deprecated -public final class ProcessRuntimeResource { - - private static final Resource INSTANCE = buildResource(); - - /** Returns a factory for a {@link Resource} which provides information about the Java runtime. */ - public static Resource get() { - return INSTANCE; - } - - // Visible for testing - static Resource buildResource() { - try { - String name = System.getProperty("java.runtime.name"); - String version = System.getProperty("java.runtime.version"); - String description = - System.getProperty("java.vm.vendor") - + " " - + System.getProperty("java.vm.name") - + " " - + System.getProperty("java.vm.version"); - - return Resource.create( - Attributes.of( - PROCESS_RUNTIME_NAME, - name, - PROCESS_RUNTIME_VERSION, - version, - PROCESS_RUNTIME_DESCRIPTION, - description), - ResourceAttributes.SCHEMA_URL); - } catch (SecurityException ignored) { - return Resource.empty(); - } - } - - private ProcessRuntimeResource() {} -} diff --git a/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ProcessRuntimeResourceProvider.java b/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ProcessRuntimeResourceProvider.java deleted file mode 100644 index 03ae005378f..00000000000 --- a/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/ProcessRuntimeResourceProvider.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.extension.resources; - -import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; -import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider; -import io.opentelemetry.sdk.resources.Resource; - -/** - * {@link ResourceProvider} for automatically configuring {@link ProcessRuntimeResource}. - * - * @deprecated Moved to io.opentelemetry.instrumentation:opentelemetry-resources. - */ -@Deprecated -public final class ProcessRuntimeResourceProvider implements ResourceProvider { - @Override - public Resource createResource(ConfigProperties config) { - return ProcessRuntimeResource.get(); - } -} diff --git a/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/package-info.java b/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/package-info.java deleted file mode 100644 index 9d134a78cd1..00000000000 --- a/sdk-extensions/resources/src/main/java/io/opentelemetry/sdk/extension/resources/package-info.java +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * {@link io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider} implementations for common - * resource information. - */ -@ParametersAreNonnullByDefault -package io.opentelemetry.sdk.extension.resources; - -import javax.annotation.ParametersAreNonnullByDefault; diff --git a/sdk-extensions/resources/src/main/java11/io/opentelemetry/sdk/extension/resources/ProcessPid.java b/sdk-extensions/resources/src/main/java11/io/opentelemetry/sdk/extension/resources/ProcessPid.java deleted file mode 100644 index e4da0fc9437..00000000000 --- a/sdk-extensions/resources/src/main/java11/io/opentelemetry/sdk/extension/resources/ProcessPid.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.extension.resources; - -import java.lang.management.ManagementFactory; -import org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement; - -final class ProcessPid { - - private ProcessPid() {} - - @IgnoreJRERequirement - static long getPid() { - return ManagementFactory.getRuntimeMXBean().getPid(); - } -} diff --git a/sdk-extensions/resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider b/sdk-extensions/resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider deleted file mode 100644 index 8ac23c697a4..00000000000 --- a/sdk-extensions/resources/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider +++ /dev/null @@ -1,5 +0,0 @@ -io.opentelemetry.sdk.extension.resources.ContainerResourceProvider -io.opentelemetry.sdk.extension.resources.HostResourceProvider -io.opentelemetry.sdk.extension.resources.OsResourceProvider -io.opentelemetry.sdk.extension.resources.ProcessResourceProvider -io.opentelemetry.sdk.extension.resources.ProcessRuntimeResourceProvider diff --git a/sdk-extensions/resources/src/test/java/io/opentelemetry/sdk/extension/resources/ContainerResourceTest.java b/sdk-extensions/resources/src/test/java/io/opentelemetry/sdk/extension/resources/ContainerResourceTest.java deleted file mode 100644 index 77124a520e2..00000000000 --- a/sdk-extensions/resources/src/test/java/io/opentelemetry/sdk/extension/resources/ContainerResourceTest.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.extension.resources; - -import static org.assertj.core.api.Assertions.assertThat; - -import io.opentelemetry.sdk.resources.Resource; -import io.opentelemetry.semconv.resource.attributes.ResourceAttributes; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.io.TempDir; - -@SuppressWarnings("deprecation") // Moved to instrumentation -class ContainerResourceTest { - - @Test - void buildResource_Invalid(@TempDir Path tempFolder) throws IOException { - // invalid containerId (non-hex) - Path cgroup = - createCGroup( - tempFolder.resolve("cgroup1"), - "13:name=systemd:/podruntime/docker/kubepods/ac679f8a8319c8cf7d38e1adf263bc08d23zzzz"); - assertThat(ContainerResource.buildResource(cgroup)).isEqualTo(Resource.empty()); - - // unrecognized format (last "-" is after last ".") - cgroup = - createCGroup( - tempFolder.resolve("cgroup1"), - "13:name=systemd:/podruntime/docker/kubepods/ac679f8.a8319c8cf7d38e1adf263bc08-d23zzzz"); - assertThat(ContainerResource.buildResource(cgroup)).isEqualTo(Resource.empty()); - - // test invalid file - cgroup = tempFolder.resolve("DoesNotExist"); - assertThat(ContainerResource.buildResource(cgroup)).isEqualTo(Resource.empty()); - } - - @Test - void buildResource_Valid(@TempDir Path tempFolder) throws IOException { - // with suffix - Path cgroup = - createCGroup( - tempFolder.resolve("cgroup1"), - "13:name=systemd:/podruntime/docker/kubepods/ac679f8a8319c8cf7d38e1adf263bc08d23.aaaa"); - assertThat(getContainerId(ContainerResource.buildResource(cgroup))) - .isEqualTo("ac679f8a8319c8cf7d38e1adf263bc08d23"); - - // with prefix and suffix - Path cgroup2 = - createCGroup( - tempFolder.resolve("cgroup2"), - "13:name=systemd:/podruntime/docker/kubepods/crio-dc679f8a8319c8cf7d38e1adf263bc08d23.stuff"); - assertThat(getContainerId(ContainerResource.buildResource(cgroup2))) - .isEqualTo("dc679f8a8319c8cf7d38e1adf263bc08d23"); - - // just container id - Path cgroup3 = - createCGroup( - tempFolder.resolve("cgroup3"), - "13:name=systemd:/pod/d86d75589bf6cc254f3e2cc29debdf85dde404998aa128997a819ff991827356"); - assertThat(getContainerId(ContainerResource.buildResource(cgroup3))) - .isEqualTo("d86d75589bf6cc254f3e2cc29debdf85dde404998aa128997a819ff991827356"); - - // with prefix - Path cgroup4 = - createCGroup( - tempFolder.resolve("cgroup4"), - "//\n" - + "1:name=systemd:/podruntime/docker/kubepods/docker-dc579f8a8319c8cf7d38e1adf263bc08d23" - + "2:name=systemd:/podruntime/docker/kubepods/docker-dc579f8a8319c8cf7d38e1adf263bc08d23" - + "3:name=systemd:/podruntime/docker/kubepods/docker-dc579f8a8319c8cf7d38e1adf263bc08d23"); - assertThat(getContainerId(ContainerResource.buildResource(cgroup4))) - .isEqualTo("dc579f8a8319c8cf7d38e1adf263bc08d23"); - - // with two dashes in prefix - Path cgroup5 = - createCGroup( - tempFolder.resolve("cgroup5"), - "11:perf_event:/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod4415fd05_2c0f_4533_909b_f2180dca8d7c.slice/cri-containerd-713a77a26fe2a38ebebd5709604a048c3d380db1eb16aa43aca0b2499e54733c.scope"); - assertThat(getContainerId(ContainerResource.buildResource(cgroup5))) - .isEqualTo("713a77a26fe2a38ebebd5709604a048c3d380db1eb16aa43aca0b2499e54733c"); - - // with colon, env: k8s v1.24.0, the cgroupDriver by systemd(default), and container is - // cri-containerd v1.6.8 - Path cgroup6 = - createCGroup( - tempFolder.resolve("cgroup6"), - "11:devices:/system.slice/containerd.service/kubepods-pod87a18a64_b74a_454a_b10b_a4a36059d0a3.slice:cri-containerd:05c48c82caff3be3d7f1e896981dd410e81487538936914f32b624d168de9db0"); - assertThat(getContainerId(ContainerResource.buildResource(cgroup6))) - .isEqualTo("05c48c82caff3be3d7f1e896981dd410e81487538936914f32b624d168de9db0"); - } - - private static String getContainerId(Resource resource) { - return resource.getAttribute(ResourceAttributes.CONTAINER_ID); - } - - private static Path createCGroup(Path path, String line) throws IOException { - return Files.write(path, line.getBytes(StandardCharsets.UTF_8)); - } -} diff --git a/sdk-extensions/resources/src/test/java/io/opentelemetry/sdk/extension/resources/HostResourceTest.java b/sdk-extensions/resources/src/test/java/io/opentelemetry/sdk/extension/resources/HostResourceTest.java deleted file mode 100644 index 96df38791b6..00000000000 --- a/sdk-extensions/resources/src/test/java/io/opentelemetry/sdk/extension/resources/HostResourceTest.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.extension.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.resource.attributes.ResourceAttributes; -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; - -@SuppressWarnings("deprecation") // Moved to instrumentation -class HostResourceTest { - @Test - void shouldCreateRuntimeAttributes() { - // when - Resource resource = HostResource.buildResource(); - Attributes attributes = resource.getAttributes(); - - // then - assertThat(resource.getSchemaUrl()).isEqualTo(ResourceAttributes.SCHEMA_URL); - assertThat(attributes.get(ResourceAttributes.HOST_NAME)).isNotBlank(); - assertThat(attributes.get(ResourceAttributes.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(ResourceAttributes.HOST_NAME); - } - } -} diff --git a/sdk-extensions/resources/src/test/java/io/opentelemetry/sdk/extension/resources/OsResourceTest.java b/sdk-extensions/resources/src/test/java/io/opentelemetry/sdk/extension/resources/OsResourceTest.java deleted file mode 100644 index 87dddc18d8d..00000000000 --- a/sdk-extensions/resources/src/test/java/io/opentelemetry/sdk/extension/resources/OsResourceTest.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.extension.resources; - -import static org.assertj.core.api.Assertions.assertThat; - -import io.opentelemetry.sdk.resources.Resource; -import io.opentelemetry.semconv.resource.attributes.ResourceAttributes; -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; - -@SuppressWarnings("deprecation") // Moved to instrumentation -class OsResourceTest { - - @Test - @SetSystemProperty(key = "os.name", value = "Linux 4.11") - void linux() { - Resource resource = OsResource.buildResource(); - assertThat(resource.getSchemaUrl()).isEqualTo(ResourceAttributes.SCHEMA_URL); - assertThat(resource.getAttribute(ResourceAttributes.OS_TYPE)) - .isEqualTo(ResourceAttributes.OsTypeValues.LINUX); - assertThat(resource.getAttribute(ResourceAttributes.OS_DESCRIPTION)).isNotEmpty(); - } - - @Test - @SetSystemProperty(key = "os.name", value = "MacOS X 11") - void macos() { - Resource resource = OsResource.buildResource(); - assertThat(resource.getSchemaUrl()).isEqualTo(ResourceAttributes.SCHEMA_URL); - assertThat(resource.getAttribute(ResourceAttributes.OS_TYPE)) - .isEqualTo(ResourceAttributes.OsTypeValues.DARWIN); - assertThat(resource.getAttribute(ResourceAttributes.OS_DESCRIPTION)).isNotEmpty(); - } - - @Test - @SetSystemProperty(key = "os.name", value = "Windows 10") - void windows() { - Resource resource = OsResource.buildResource(); - assertThat(resource.getSchemaUrl()).isEqualTo(ResourceAttributes.SCHEMA_URL); - assertThat(resource.getAttribute(ResourceAttributes.OS_TYPE)) - .isEqualTo(ResourceAttributes.OsTypeValues.WINDOWS); - assertThat(resource.getAttribute(ResourceAttributes.OS_DESCRIPTION)).isNotEmpty(); - } - - @Test - @SetSystemProperty(key = "os.name", value = "FreeBSD 10") - void freebsd() { - Resource resource = OsResource.buildResource(); - assertThat(resource.getSchemaUrl()).isEqualTo(ResourceAttributes.SCHEMA_URL); - assertThat(resource.getAttribute(ResourceAttributes.OS_TYPE)) - .isEqualTo(ResourceAttributes.OsTypeValues.FREEBSD); - assertThat(resource.getAttribute(ResourceAttributes.OS_DESCRIPTION)).isNotEmpty(); - } - - @Test - @SetSystemProperty(key = "os.name", value = "NetBSD 10") - void netbsd() { - Resource resource = OsResource.buildResource(); - assertThat(resource.getSchemaUrl()).isEqualTo(ResourceAttributes.SCHEMA_URL); - assertThat(resource.getAttribute(ResourceAttributes.OS_TYPE)) - .isEqualTo(ResourceAttributes.OsTypeValues.NETBSD); - assertThat(resource.getAttribute(ResourceAttributes.OS_DESCRIPTION)).isNotEmpty(); - } - - @Test - @SetSystemProperty(key = "os.name", value = "OpenBSD 10") - void openbsd() { - Resource resource = OsResource.buildResource(); - assertThat(resource.getSchemaUrl()).isEqualTo(ResourceAttributes.SCHEMA_URL); - assertThat(resource.getAttribute(ResourceAttributes.OS_TYPE)) - .isEqualTo(ResourceAttributes.OsTypeValues.OPENBSD); - assertThat(resource.getAttribute(ResourceAttributes.OS_DESCRIPTION)).isNotEmpty(); - } - - @Test - @SetSystemProperty(key = "os.name", value = "DragonFlyBSD 10") - void dragonflybsd() { - Resource resource = OsResource.buildResource(); - assertThat(resource.getSchemaUrl()).isEqualTo(ResourceAttributes.SCHEMA_URL); - assertThat(resource.getAttribute(ResourceAttributes.OS_TYPE)) - .isEqualTo(ResourceAttributes.OsTypeValues.DRAGONFLYBSD); - assertThat(resource.getAttribute(ResourceAttributes.OS_DESCRIPTION)).isNotEmpty(); - } - - @Test - @SetSystemProperty(key = "os.name", value = "HP-UX 10") - void hpux() { - Resource resource = OsResource.buildResource(); - assertThat(resource.getSchemaUrl()).isEqualTo(ResourceAttributes.SCHEMA_URL); - assertThat(resource.getAttribute(ResourceAttributes.OS_TYPE)) - .isEqualTo(ResourceAttributes.OsTypeValues.HPUX); - assertThat(resource.getAttribute(ResourceAttributes.OS_DESCRIPTION)).isNotEmpty(); - } - - @Test - @SetSystemProperty(key = "os.name", value = "AIX 10") - void aix() { - Resource resource = OsResource.buildResource(); - assertThat(resource.getSchemaUrl()).isEqualTo(ResourceAttributes.SCHEMA_URL); - assertThat(resource.getAttribute(ResourceAttributes.OS_TYPE)) - .isEqualTo(ResourceAttributes.OsTypeValues.AIX); - assertThat(resource.getAttribute(ResourceAttributes.OS_DESCRIPTION)).isNotEmpty(); - } - - @Test - @SetSystemProperty(key = "os.name", value = "Solaris 10") - void solaris() { - Resource resource = OsResource.buildResource(); - assertThat(resource.getSchemaUrl()).isEqualTo(ResourceAttributes.SCHEMA_URL); - assertThat(resource.getAttribute(ResourceAttributes.OS_TYPE)) - .isEqualTo(ResourceAttributes.OsTypeValues.SOLARIS); - assertThat(resource.getAttribute(ResourceAttributes.OS_DESCRIPTION)).isNotEmpty(); - } - - @Test - @SetSystemProperty(key = "os.name", value = "Z/OS 10") - void zos() { - Resource resource = OsResource.buildResource(); - assertThat(resource.getSchemaUrl()).isEqualTo(ResourceAttributes.SCHEMA_URL); - assertThat(resource.getAttribute(ResourceAttributes.OS_TYPE)) - .isEqualTo(ResourceAttributes.OsTypeValues.Z_OS); - assertThat(resource.getAttribute(ResourceAttributes.OS_DESCRIPTION)).isNotEmpty(); - } - - @Test - @SetSystemProperty(key = "os.name", value = "RagOS 10") - void unknown() { - Resource resource = OsResource.buildResource(); - assertThat(resource.getSchemaUrl()).isEqualTo(ResourceAttributes.SCHEMA_URL); - assertThat(resource.getAttribute(ResourceAttributes.OS_TYPE)).isNull(); - assertThat(resource.getAttribute(ResourceAttributes.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/sdk-extensions/resources/src/test/java/io/opentelemetry/sdk/extension/resources/ProcessResourceTest.java b/sdk-extensions/resources/src/test/java/io/opentelemetry/sdk/extension/resources/ProcessResourceTest.java deleted file mode 100644 index c4cee03ea1f..00000000000 --- a/sdk-extensions/resources/src/test/java/io/opentelemetry/sdk/extension/resources/ProcessResourceTest.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.extension.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.resource.attributes.ResourceAttributes; -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; - -@SuppressWarnings("deprecation") // Moved to instrumentation -class ProcessResourceTest { - - @Test - @SetSystemProperty(key = "os.name", value = "Linux 4.12") - void notWindows() { - Resource resource = ProcessResource.buildResource(); - assertThat(resource.getSchemaUrl()).isEqualTo(ResourceAttributes.SCHEMA_URL); - Attributes attributes = resource.getAttributes(); - - assertThat(attributes.get(ResourceAttributes.PROCESS_PID)).isGreaterThan(1); - assertThat(attributes.get(ResourceAttributes.PROCESS_EXECUTABLE_PATH)).matches(".*[/\\\\]java"); - assertThat(attributes.get(ResourceAttributes.PROCESS_COMMAND_LINE)) - .contains(attributes.get(ResourceAttributes.PROCESS_EXECUTABLE_PATH)); - } - - @Test - @SetSystemProperty(key = "os.name", value = "Windows 10") - void windows() { - Resource resource = ProcessResource.buildResource(); - assertThat(resource.getSchemaUrl()).isEqualTo(ResourceAttributes.SCHEMA_URL); - Attributes attributes = resource.getAttributes(); - - assertThat(attributes.get(ResourceAttributes.PROCESS_PID)).isGreaterThan(1); - assertThat(attributes.get(ResourceAttributes.PROCESS_EXECUTABLE_PATH)) - .matches(".*[/\\\\]java\\.exe"); - assertThat(attributes.get(ResourceAttributes.PROCESS_COMMAND_LINE)) - .contains(attributes.get(ResourceAttributes.PROCESS_EXECUTABLE_PATH)); - } - - @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(ResourceAttributes.PROCESS_PID); - } - } -} diff --git a/sdk-extensions/resources/src/test/java/io/opentelemetry/sdk/extension/resources/ProcessRuntimeResourceTest.java b/sdk-extensions/resources/src/test/java/io/opentelemetry/sdk/extension/resources/ProcessRuntimeResourceTest.java deleted file mode 100644 index e3f6c722b13..00000000000 --- a/sdk-extensions/resources/src/test/java/io/opentelemetry/sdk/extension/resources/ProcessRuntimeResourceTest.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.extension.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.resource.attributes.ResourceAttributes; -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; - -@SuppressWarnings("deprecation") // Moved to instrumentation -class ProcessRuntimeResourceTest { - @Test - void shouldCreateRuntimeAttributes() { - // when - Resource resource = ProcessRuntimeResource.buildResource(); - Attributes attributes = resource.getAttributes(); - - // then - assertThat(resource.getSchemaUrl()).isEqualTo(ResourceAttributes.SCHEMA_URL); - assertThat(attributes.get(ResourceAttributes.PROCESS_RUNTIME_NAME)).isNotBlank(); - assertThat(attributes.get(ResourceAttributes.PROCESS_RUNTIME_VERSION)).isNotBlank(); - assertThat(attributes.get(ResourceAttributes.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/sdk-extensions/resources/src/test/java/io/opentelemetry/sdk/extension/resources/SecurityManagerExtension.java b/sdk-extensions/resources/src/test/java/io/opentelemetry/sdk/extension/resources/SecurityManagerExtension.java deleted file mode 100644 index ba3f4e980f6..00000000000 --- a/sdk-extensions/resources/src/test/java/io/opentelemetry/sdk/extension/resources/SecurityManagerExtension.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.extension.resources; - -import java.security.Permission; -import java.util.HashSet; -import java.util.PropertyPermission; -import java.util.Set; -import org.junit.jupiter.api.extension.AfterEachCallback; -import org.junit.jupiter.api.extension.BeforeEachCallback; -import org.junit.jupiter.api.extension.ExtensionContext; - -final class SecurityManagerExtension implements BeforeEachCallback, AfterEachCallback { - - private static final ExtensionContext.Namespace NAMESPACE = - ExtensionContext.Namespace.create(SecurityManagerExtension.class); - - @Override - public void beforeEach(ExtensionContext context) { - context.getStore(NAMESPACE).put(SecurityManager.class, System.getSecurityManager()); - System.setSecurityManager(BlockPropertiesAccess.INSTANCE); - } - - @Override - public void afterEach(ExtensionContext context) { - System.setSecurityManager( - (SecurityManager) context.getStore(NAMESPACE).get(SecurityManager.class)); - } - - private static class BlockPropertiesAccess extends SecurityManager { - - private static final BlockPropertiesAccess INSTANCE = new BlockPropertiesAccess(); - - private static final Set BLOCKED_PROPERTIES = new HashSet<>(); - - static { - BLOCKED_PROPERTIES.add("java.home"); - BLOCKED_PROPERTIES.add("java.runtime.home"); - BLOCKED_PROPERTIES.add("java.runtime.version"); - BLOCKED_PROPERTIES.add("java.vm.name"); - BLOCKED_PROPERTIES.add("java.vm.vendor"); - BLOCKED_PROPERTIES.add("java.vm.version"); - BLOCKED_PROPERTIES.add("os.arch"); - BLOCKED_PROPERTIES.add("os.name"); - BLOCKED_PROPERTIES.add("os.version"); - } - - @Override - public void checkPermission(Permission perm) { - if (perm instanceof PropertyPermission) { - if (BLOCKED_PROPERTIES.contains(perm.getName())) { - throw new SecurityException("Property access not allowed."); - } - } - } - } -} diff --git a/sdk/common/build.gradle.kts b/sdk/common/build.gradle.kts index bec2d637cf8..be8c64b3739 100644 --- a/sdk/common/build.gradle.kts +++ b/sdk/common/build.gradle.kts @@ -20,7 +20,6 @@ dependencies { testAnnotationProcessor("com.google.auto.value:auto-value") testImplementation(project(":sdk:testing")) - testImplementation(project(":sdk-extensions:resources")) testImplementation("com.google.guava:guava-testlib") } diff --git a/settings.gradle.kts b/settings.gradle.kts index abfef5336db..266169d9998 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -62,7 +62,6 @@ include(":sdk:trace-shaded-deps") include(":sdk-extensions:autoconfigure") include(":sdk-extensions:autoconfigure-spi") include(":sdk-extensions:aws") -include(":sdk-extensions:resources") include(":sdk-extensions:incubator") include(":sdk-extensions:jaeger-remote-sampler") include(":testing-internal")