From b53903cafe70eb7648a8f222d4f590a5de6380f0 Mon Sep 17 00:00:00 2001 From: Jack Berg Date: Wed, 29 Jan 2025 12:55:50 -0600 Subject: [PATCH 1/3] Drop event API / SDK --- .../incubator/events/DefaultEventLogger.java | 67 -------- .../events/DefaultEventLoggerProvider.java | 41 ----- .../api/incubator/events/EventBuilder.java | 153 ------------------ .../api/incubator/events/EventLogger.java | 44 ----- .../incubator/events/EventLoggerBuilder.java | 41 ----- .../incubator/events/EventLoggerProvider.java | 45 ------ .../events/GlobalEventLoggerProvider.java | 60 ------- .../DefaultEventLoggerProviderTest.java | 39 ----- .../events/DefaultEventLoggerTest.java | 70 -------- .../incubator/events/EventApiUsageTest.java | 81 ---------- .../events/GlobalEventLoggerProviderTest.java | 51 ------ .../otlp/LogsRequestMarshalerBenchmark.java | 35 ++-- .../OtlpExporterIntegrationTest.java | 32 +--- sdk-extensions/autoconfigure/build.gradle.kts | 5 - ...AutoConfiguredOpenTelemetrySdkBuilder.java | 16 -- .../sdk/autoconfigure/IncubatingUtil.java | 24 --- .../AutoConfiguredOpenTelemetrySdkTest.java | 2 - .../autoconfigure/FileConfigurationTest.java | 9 -- .../sdk/autoconfigure/FullConfigTest.java | 16 +- ...onfigureGlobalEventLoggerProviderTest.java | 62 ------- .../sdk/logs/internal/SdkEventBuilder.java | 87 ---------- .../logs/internal/SdkEventLoggerProvider.java | 115 ------------- .../logs/internal/SdkEventBuilderTest.java | 55 ------- .../internal/SdkEventLoggerProviderTest.java | 137 ---------------- .../testing/assertj/LogAssertionsTest.java | 64 +++----- 25 files changed, 53 insertions(+), 1298 deletions(-) delete mode 100644 api/incubator/src/main/java/io/opentelemetry/api/incubator/events/DefaultEventLogger.java delete mode 100644 api/incubator/src/main/java/io/opentelemetry/api/incubator/events/DefaultEventLoggerProvider.java delete mode 100644 api/incubator/src/main/java/io/opentelemetry/api/incubator/events/EventBuilder.java delete mode 100644 api/incubator/src/main/java/io/opentelemetry/api/incubator/events/EventLogger.java delete mode 100644 api/incubator/src/main/java/io/opentelemetry/api/incubator/events/EventLoggerBuilder.java delete mode 100644 api/incubator/src/main/java/io/opentelemetry/api/incubator/events/EventLoggerProvider.java delete mode 100644 api/incubator/src/main/java/io/opentelemetry/api/incubator/events/GlobalEventLoggerProvider.java delete mode 100644 api/incubator/src/test/java/io/opentelemetry/api/incubator/events/DefaultEventLoggerProviderTest.java delete mode 100644 api/incubator/src/test/java/io/opentelemetry/api/incubator/events/DefaultEventLoggerTest.java delete mode 100644 api/incubator/src/test/java/io/opentelemetry/api/incubator/events/EventApiUsageTest.java delete mode 100644 api/incubator/src/test/java/io/opentelemetry/api/incubator/events/GlobalEventLoggerProviderTest.java delete mode 100644 sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/IncubatingUtil.java delete mode 100644 sdk-extensions/autoconfigure/src/testIncubating/java/io/opentelemetry/sdk/autoconfigure/AutoconfigureGlobalEventLoggerProviderTest.java delete mode 100644 sdk/logs/src/main/java/io/opentelemetry/sdk/logs/internal/SdkEventBuilder.java delete mode 100644 sdk/logs/src/main/java/io/opentelemetry/sdk/logs/internal/SdkEventLoggerProvider.java delete mode 100644 sdk/logs/src/testIncubating/java/io/opentelemetry/sdk/logs/internal/SdkEventBuilderTest.java delete mode 100644 sdk/logs/src/testIncubating/java/io/opentelemetry/sdk/logs/internal/SdkEventLoggerProviderTest.java diff --git a/api/incubator/src/main/java/io/opentelemetry/api/incubator/events/DefaultEventLogger.java b/api/incubator/src/main/java/io/opentelemetry/api/incubator/events/DefaultEventLogger.java deleted file mode 100644 index c0c795c584b..00000000000 --- a/api/incubator/src/main/java/io/opentelemetry/api/incubator/events/DefaultEventLogger.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.api.incubator.events; - -import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.common.Value; -import io.opentelemetry.api.logs.Severity; -import io.opentelemetry.context.Context; -import java.time.Instant; -import java.util.concurrent.TimeUnit; - -class DefaultEventLogger implements EventLogger { - - private static final EventLogger INSTANCE = new DefaultEventLogger(); - - private DefaultEventLogger() {} - - static EventLogger getInstance() { - return INSTANCE; - } - - @Override - public EventBuilder builder(String eventName) { - return NoOpEventBuilder.INSTANCE; - } - - private static class NoOpEventBuilder implements EventBuilder { - - public static final EventBuilder INSTANCE = new NoOpEventBuilder(); - - @Override - public EventBuilder put(String key, Value value) { - return this; - } - - @Override - public EventBuilder setTimestamp(long timestamp, TimeUnit unit) { - return this; - } - - @Override - public EventBuilder setTimestamp(Instant instant) { - return this; - } - - @Override - public EventBuilder setContext(Context context) { - return this; - } - - @Override - public EventBuilder setSeverity(Severity severity) { - return this; - } - - @Override - public EventBuilder setAttributes(Attributes attributes) { - return this; - } - - @Override - public void emit() {} - } -} diff --git a/api/incubator/src/main/java/io/opentelemetry/api/incubator/events/DefaultEventLoggerProvider.java b/api/incubator/src/main/java/io/opentelemetry/api/incubator/events/DefaultEventLoggerProvider.java deleted file mode 100644 index d365e2bbd4d..00000000000 --- a/api/incubator/src/main/java/io/opentelemetry/api/incubator/events/DefaultEventLoggerProvider.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.api.incubator.events; - -class DefaultEventLoggerProvider implements EventLoggerProvider { - - private static final EventLoggerProvider INSTANCE = new DefaultEventLoggerProvider(); - private static final EventLoggerBuilder NOOP_EVENT_LOGGER_BUILDER = new NoopEventLoggerBuilder(); - - private DefaultEventLoggerProvider() {} - - static EventLoggerProvider getInstance() { - return INSTANCE; - } - - @Override - public EventLoggerBuilder eventLoggerBuilder(String instrumentationScopeName) { - return NOOP_EVENT_LOGGER_BUILDER; - } - - private static class NoopEventLoggerBuilder implements EventLoggerBuilder { - - @Override - public EventLoggerBuilder setSchemaUrl(String schemaUrl) { - return this; - } - - @Override - public EventLoggerBuilder setInstrumentationVersion(String instrumentationVersion) { - return this; - } - - @Override - public EventLogger build() { - return DefaultEventLogger.getInstance(); - } - } -} diff --git a/api/incubator/src/main/java/io/opentelemetry/api/incubator/events/EventBuilder.java b/api/incubator/src/main/java/io/opentelemetry/api/incubator/events/EventBuilder.java deleted file mode 100644 index a2c43a47a0e..00000000000 --- a/api/incubator/src/main/java/io/opentelemetry/api/incubator/events/EventBuilder.java +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.api.incubator.events; - -import static java.util.stream.Collectors.toList; - -import io.opentelemetry.api.common.AttributeKey; -import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.common.Value; -import io.opentelemetry.api.logs.Severity; -import io.opentelemetry.context.Context; -import java.time.Instant; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.TimeUnit; - -/** The EventBuilder is used to {@link #emit()} events. */ -public interface EventBuilder { - - /** Put the given {@code key} and {@code value} in the payload. */ - default EventBuilder put(String key, String value) { - return put(key, Value.of(value)); - } - - /** Put the given {@code key} and {@code value} in the payload. */ - default EventBuilder put(String key, long value) { - return put(key, Value.of(value)); - } - - /** Put the given {@code key} and {@code value} in the payload. */ - default EventBuilder put(String key, double value) { - return put(key, Value.of(value)); - } - - /** Put the given {@code key} and {@code value} in the payload. */ - default EventBuilder put(String key, boolean value) { - return put(key, Value.of(value)); - } - - /** Put the given {@code key} and {@code value} in the payload. */ - default EventBuilder put(String key, String... value) { - List> values = new ArrayList<>(value.length); - for (String val : value) { - values.add(Value.of(val)); - } - return put(key, Value.of(values)); - } - - /** Put the given {@code key} and {@code value} in the payload. */ - default EventBuilder put(String key, long... value) { - List> values = new ArrayList<>(value.length); - for (long val : value) { - values.add(Value.of(val)); - } - return put(key, Value.of(values)); - } - - /** Put the given {@code key} and {@code value} in the payload. */ - default EventBuilder put(String key, double... value) { - List> values = new ArrayList<>(value.length); - for (double val : value) { - values.add(Value.of(val)); - } - return put(key, Value.of(values)); - } - - /** Put the given {@code key} and {@code value} in the payload. */ - default EventBuilder put(String key, boolean... value) { - List> values = new ArrayList<>(value.length); - for (boolean val : value) { - values.add(Value.of(val)); - } - return put(key, Value.of(values)); - } - - /** - * Put the given key and value in the payload. - * - *

NOTE: The key value pair is NOT added to the event attributes. Setting event attributes is - * less common than adding entries to the event payload. Use {@link #setAttributes(Attributes)} if - * intending the data to be set in attributes instead of the payload. - */ - @SuppressWarnings("unchecked") - default EventBuilder put(AttributeKey key, T value) { - switch (key.getType()) { - case STRING: - return put(key.getKey(), (String) value); - case BOOLEAN: - return put(key.getKey(), (boolean) value); - case LONG: - return put(key.getKey(), (long) value); - case DOUBLE: - return put(key.getKey(), (double) value); - case STRING_ARRAY: - return put( - key.getKey(), - Value.of(((List) value).stream().map(Value::of).collect(toList()))); - case BOOLEAN_ARRAY: - return put( - key.getKey(), - Value.of(((List) value).stream().map(Value::of).collect(toList()))); - case LONG_ARRAY: - return put( - key.getKey(), Value.of(((List) value).stream().map(Value::of).collect(toList()))); - case DOUBLE_ARRAY: - return put( - key.getKey(), - Value.of(((List) value).stream().map(Value::of).collect(toList()))); - } - return this; - } - - /** Put the given {@code key} and {@code value} in the payload. */ - EventBuilder put(String key, Value value); - - /** - * Set the epoch {@code timestamp}, using the timestamp and unit. - * - *

The {@code timestamp} is the time at which the event occurred. If unset, it will be set to - * the current time when {@link #emit()} is called. - */ - EventBuilder setTimestamp(long timestamp, TimeUnit unit); - - /** - * Set the epoch {@code timestamp}, using the instant. - * - *

The {@code timestamp} is the time at which the event occurred. If unset, it will be set to - * the current time when {@link #emit()} is called. - */ - EventBuilder setTimestamp(Instant instant); - - /** Set the context. */ - EventBuilder setContext(Context context); - - /** Set the severity. */ - EventBuilder setSeverity(Severity severity); - - /** - * Set the attributes. - * - *

Event {@link io.opentelemetry.api.common.Attributes} provide additional details about the - * Event which are not part of the well-defined {@link Value} payload. Setting event attributes is - * less common than adding entries to the event payload. Most users will want to call one of the - * {@code #put(String, ?)} methods instead. - */ - EventBuilder setAttributes(Attributes attributes); - - /** Emit an event. */ - void emit(); -} diff --git a/api/incubator/src/main/java/io/opentelemetry/api/incubator/events/EventLogger.java b/api/incubator/src/main/java/io/opentelemetry/api/incubator/events/EventLogger.java deleted file mode 100644 index 3d273a30c7a..00000000000 --- a/api/incubator/src/main/java/io/opentelemetry/api/incubator/events/EventLogger.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.api.incubator.events; - -import javax.annotation.concurrent.ThreadSafe; - -/** - * A {@link EventLogger} is the entry point into an event pipeline. - * - *

Example usage emitting events: - * - *

{@code
- * class MyClass {
- *   private final EventLogger eventLogger = eventLoggerProvider
- *         .eventLoggerBuilder("scope-name")
- *         .build();
- *
- *   void doWork() {
- *     eventLogger.builder("my-namespace.my-event")
- *         .put("key1", "value1")
- *         .put("key2", "value2")
- *         .emit();
- *     // do work
- *   }
- * }
- * }
- */ -@ThreadSafe -public interface EventLogger { - - /** - * Return a {@link EventBuilder} to emit an event. - * - * @param eventName the event name, which identifies the class or type of event. Event with the - * same name are structurally similar to one another. Event names are subject to the same - * naming rules as attribute names. Notably, they are namespaced to avoid collisions. See event.name semantic - * conventions for more details. - */ - EventBuilder builder(String eventName); -} diff --git a/api/incubator/src/main/java/io/opentelemetry/api/incubator/events/EventLoggerBuilder.java b/api/incubator/src/main/java/io/opentelemetry/api/incubator/events/EventLoggerBuilder.java deleted file mode 100644 index d3105cac6c7..00000000000 --- a/api/incubator/src/main/java/io/opentelemetry/api/incubator/events/EventLoggerBuilder.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.api.incubator.events; - -/** - * Builder class for creating {@link EventLogger} instances. - * - *

{@link EventLogger}s are identified by their scope name, version, and schema URL. These - * identifying fields, along with attributes, combine to form the instrumentation scope, which is - * attached to all events produced by the {@link EventLogger}. - */ -public interface EventLoggerBuilder { - - /** - * Set the scope schema URL of the resulting {@link EventLogger}. Schema URL is part of {@link - * EventLogger} identity. - * - * @param schemaUrl The schema URL. - * @return this - */ - EventLoggerBuilder setSchemaUrl(String schemaUrl); - - /** - * Sets the instrumentation scope version of the resulting {@link EventLogger}. Version is part of - * {@link EventLogger} identity. - * - * @param instrumentationScopeVersion The instrumentation scope version. - * @return this - */ - EventLoggerBuilder setInstrumentationVersion(String instrumentationScopeVersion); - - /** - * Gets or creates a {@link EventLogger} instance. - * - * @return a {@link EventLogger} instance configured with the provided options. - */ - EventLogger build(); -} diff --git a/api/incubator/src/main/java/io/opentelemetry/api/incubator/events/EventLoggerProvider.java b/api/incubator/src/main/java/io/opentelemetry/api/incubator/events/EventLoggerProvider.java deleted file mode 100644 index cfef2a0622d..00000000000 --- a/api/incubator/src/main/java/io/opentelemetry/api/incubator/events/EventLoggerProvider.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.api.incubator.events; - -import javax.annotation.concurrent.ThreadSafe; - -/** - * A registry for creating scoped {@link EventLogger}s. The name Provider is for consistency - * with other languages and it is NOT loaded using reflection. - * - * @see EventLogger - */ -@ThreadSafe -public interface EventLoggerProvider { - - /** - * Gets or creates a named {@link EventLogger} instance. - * - * @param instrumentationScopeName A name uniquely identifying the instrumentation scope, such as - * the instrumentation library, package, or fully qualified class name. Must not be null. - * @return a Logger instance. - */ - default EventLogger get(String instrumentationScopeName) { - return eventLoggerBuilder(instrumentationScopeName).build(); - } - - /** - * Creates a LoggerBuilder for a named {@link EventLogger} instance. - * - * @param instrumentationScopeName A name uniquely identifying the instrumentation scope, such as - * the instrumentation library, package, or fully qualified class name. Must not be null. - * @return a LoggerBuilder instance. - */ - EventLoggerBuilder eventLoggerBuilder(String instrumentationScopeName); - - /** - * Returns a no-op {@link EventLoggerProvider} which provides Loggers which do not record or emit. - */ - static EventLoggerProvider noop() { - return DefaultEventLoggerProvider.getInstance(); - } -} diff --git a/api/incubator/src/main/java/io/opentelemetry/api/incubator/events/GlobalEventLoggerProvider.java b/api/incubator/src/main/java/io/opentelemetry/api/incubator/events/GlobalEventLoggerProvider.java deleted file mode 100644 index 68664f08b56..00000000000 --- a/api/incubator/src/main/java/io/opentelemetry/api/incubator/events/GlobalEventLoggerProvider.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.api.incubator.events; - -import io.opentelemetry.api.GlobalOpenTelemetry; -import java.util.concurrent.atomic.AtomicReference; -import javax.annotation.Nullable; - -/** - * This class provides a temporary global accessor for {@link EventLoggerProvider} until the event - * API is marked stable. It will eventually be merged into {@link GlobalOpenTelemetry}. - */ -// We intentionally assign to be used for error reporting. -@SuppressWarnings("StaticAssignmentOfThrowable") -public final class GlobalEventLoggerProvider { - - private static final AtomicReference instance = - new AtomicReference<>(EventLoggerProvider.noop()); - - @SuppressWarnings("NonFinalStaticField") - @Nullable - private static volatile Throwable setInstanceCaller; - - private GlobalEventLoggerProvider() {} - - /** Returns the globally registered {@link EventLoggerProvider}. */ - // instance cannot be set to null - @SuppressWarnings("NullAway") - public static EventLoggerProvider get() { - return instance.get(); - } - - /** - * Sets the global {@link EventLoggerProvider}. Future calls to {@link #get()} will return the - * provided {@link EventLoggerProvider} instance. This should be called once as early as possible - * in your application initialization logic. - */ - public static void set(EventLoggerProvider eventLoggerProvider) { - boolean changed = instance.compareAndSet(EventLoggerProvider.noop(), eventLoggerProvider); - if (!changed && (eventLoggerProvider != EventLoggerProvider.noop())) { - throw new IllegalStateException( - "GlobalEventLoggerProvider.set has already been called. GlobalEventLoggerProvider.set " - + "must be called only once before any calls to GlobalEventLoggerProvider.get. " - + "Previous invocation set to cause of this exception.", - setInstanceCaller); - } - setInstanceCaller = new Throwable(); - } - - /** - * Unsets the global {@link EventLoggerProvider}. This is only meant to be used from tests which - * need to reconfigure {@link EventLoggerProvider}. - */ - public static void resetForTest() { - instance.set(EventLoggerProvider.noop()); - } -} diff --git a/api/incubator/src/test/java/io/opentelemetry/api/incubator/events/DefaultEventLoggerProviderTest.java b/api/incubator/src/test/java/io/opentelemetry/api/incubator/events/DefaultEventLoggerProviderTest.java deleted file mode 100644 index 196c0bc307a..00000000000 --- a/api/incubator/src/test/java/io/opentelemetry/api/incubator/events/DefaultEventLoggerProviderTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.api.incubator.events; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatCode; - -import org.junit.jupiter.api.Test; - -class DefaultEventLoggerProviderTest { - - @Test - void noopEventLoggerProvider_doesNotThrow() { - EventLoggerProvider provider = EventLoggerProvider.noop(); - - assertThat(provider).isSameAs(DefaultEventLoggerProvider.getInstance()); - assertThatCode(() -> provider.get("scope-name")).doesNotThrowAnyException(); - assertThatCode( - () -> - provider - .eventLoggerBuilder("scope-name") - .setInstrumentationVersion("1.0") - .setSchemaUrl("http://schema.com") - .build()) - .doesNotThrowAnyException(); - - assertThatCode( - () -> - provider - .eventLoggerBuilder("scope-name") - .build() - .builder("namespace.event-name") - .emit()) - .doesNotThrowAnyException(); - } -} diff --git a/api/incubator/src/test/java/io/opentelemetry/api/incubator/events/DefaultEventLoggerTest.java b/api/incubator/src/test/java/io/opentelemetry/api/incubator/events/DefaultEventLoggerTest.java deleted file mode 100644 index ff525646ef6..00000000000 --- a/api/incubator/src/test/java/io/opentelemetry/api/incubator/events/DefaultEventLoggerTest.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.api.incubator.events; - -import static org.assertj.core.api.Assertions.assertThatCode; - -import io.opentelemetry.api.common.AttributeKey; -import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.common.Value; -import io.opentelemetry.api.logs.Severity; -import io.opentelemetry.context.Context; -import java.time.Instant; -import java.util.Arrays; -import java.util.HashMap; -import java.util.concurrent.TimeUnit; -import org.junit.jupiter.api.Test; - -class DefaultEventLoggerTest { - - @Test - @SuppressWarnings("DoubleBraceInitialization") - void builder() { - EventLogger eventLogger = DefaultEventLogger.getInstance(); - assertThatCode( - () -> - eventLogger - .builder("namespace.myEvent") - // Helper methods to set primitive types - .put("stringKey", "value") - .put("longKey", 1L) - .put("doubleKey", 1.0) - .put("boolKey", true) - // Helper methods to set primitive array types - .put("stringArrKey", "value1", "value2") - .put("longArrKey", 1L, 2L) - .put("doubleArrKey", 1.0, 2.0) - .put("boolArrKey", true, false) - // Set complex data - .put( - "valueKey", - Value.of( - new HashMap>() { - { - put("key", Value.of("value")); - } - })) - // Helper methods to set AttributeKey types - .put(AttributeKey.stringKey("attrStringKey"), "value") - .put(AttributeKey.longKey("attrLongKey"), 1L) - .put(AttributeKey.doubleKey("attrDoubleKey"), 1.0) - .put(AttributeKey.booleanKey("attrBoolKey"), true) - .put( - AttributeKey.stringArrayKey("attrStringArrKey"), - Arrays.asList("value1", "value2")) - .put(AttributeKey.longArrayKey("attrLongArrKey"), Arrays.asList(1L, 2L)) - .put(AttributeKey.doubleArrayKey("attrDoubleArrKey"), Arrays.asList(1.0, 2.0)) - .put(AttributeKey.booleanArrayKey("attrBoolArrKey"), Arrays.asList(true, false)) - // Other setters - .setTimestamp(123456L, TimeUnit.NANOSECONDS) - .setTimestamp(Instant.now()) - .setContext(Context.current()) - .setSeverity(Severity.DEBUG) - .setAttributes(Attributes.empty()) - .emit()) - .doesNotThrowAnyException(); - } -} diff --git a/api/incubator/src/test/java/io/opentelemetry/api/incubator/events/EventApiUsageTest.java b/api/incubator/src/test/java/io/opentelemetry/api/incubator/events/EventApiUsageTest.java deleted file mode 100644 index 3194978ed4f..00000000000 --- a/api/incubator/src/test/java/io/opentelemetry/api/incubator/events/EventApiUsageTest.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.api.incubator.events; - -import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; - -import com.google.common.collect.ImmutableMap; -import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.common.Value; -import io.opentelemetry.sdk.logs.SdkLoggerProvider; -import io.opentelemetry.sdk.logs.export.SimpleLogRecordProcessor; -import io.opentelemetry.sdk.logs.internal.SdkEventLoggerProvider; -import io.opentelemetry.sdk.resources.Resource; -import io.opentelemetry.sdk.testing.exporter.InMemoryLogRecordExporter; -import java.util.concurrent.TimeUnit; -import org.junit.jupiter.api.Test; - -/** Demonstrating usage of Event API. */ -class EventApiUsageTest { - - @Test - void eventApiUsage() { - // Setup SdkEventLoggerProvider, which delegates to SdkLoggerProvider - InMemoryLogRecordExporter exporter = InMemoryLogRecordExporter.create(); - SdkLoggerProvider loggerProvider = - SdkLoggerProvider.builder() - // Default resource used for demonstration purposes - .setResource(Resource.getDefault()) - // Simple processor w/ in-memory exporter used for demonstration purposes - .addLogRecordProcessor(SimpleLogRecordProcessor.create(exporter)) - .build(); - EventLoggerProvider eventLoggerProvider = SdkEventLoggerProvider.create(loggerProvider); - - // Get an EventLogger for a scope - EventLogger eventLogger = eventLoggerProvider.get("org.foo.my-scope"); - - // Emit an event - eventLogger - .builder("org.foo.my-event") - // Add fields to the payload. The API has helpers for adding field values which are - // primitives or arrays of primitives, but you can also add a field with type Value, - // allowing for arbitrarily complex payloads. - .put("key1", "value1") - .put( - "key2", - Value.of( - ImmutableMap.of("childKey1", Value.of("value2"), "childKey2", Value.of("value3")))) - // Optionally set other fields, including timestamp, severity, context, and attributes - // (attributes provide additional details about the event which are not part of the well - // defined payload) - .emit(); - - // Events manifest as log records with an event.name attribute, and with the payload fields in - // the Value log record body - loggerProvider.forceFlush().join(10, TimeUnit.SECONDS); - assertThat(exporter.getFinishedLogRecordItems()) - .satisfiesExactly( - logData -> { - assertThat(logData) - .hasAttributes( - Attributes.builder().put("event.name", "org.foo.my-event").build()); - assertThat(logData.getBodyValue()) - .isNotNull() - .isEqualTo( - Value.of( - ImmutableMap.of( - "key1", - Value.of("value1"), - "key2", - Value.of( - ImmutableMap.of( - "childKey1", - Value.of("value2"), - "childKey2", - Value.of("value3")))))); - }); - } -} diff --git a/api/incubator/src/test/java/io/opentelemetry/api/incubator/events/GlobalEventLoggerProviderTest.java b/api/incubator/src/test/java/io/opentelemetry/api/incubator/events/GlobalEventLoggerProviderTest.java deleted file mode 100644 index d3392d59838..00000000000 --- a/api/incubator/src/test/java/io/opentelemetry/api/incubator/events/GlobalEventLoggerProviderTest.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.api.incubator.events; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; - -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; - -class GlobalEventLoggerProviderTest { - - @BeforeAll - static void beforeClass() { - GlobalEventLoggerProvider.resetForTest(); - } - - @AfterEach - void after() { - GlobalEventLoggerProvider.resetForTest(); - } - - @Test - void setAndGet() { - assertThat(GlobalEventLoggerProvider.get()).isEqualTo(EventLoggerProvider.noop()); - EventLoggerProvider eventLoggerProvider = - instrumentationScopeName -> - EventLoggerProvider.noop().eventLoggerBuilder(instrumentationScopeName); - GlobalEventLoggerProvider.set(eventLoggerProvider); - assertThat(GlobalEventLoggerProvider.get()).isEqualTo(eventLoggerProvider); - } - - @Test - void setThenSet() { - GlobalEventLoggerProvider.set( - instrumentationScopeName -> - EventLoggerProvider.noop().eventLoggerBuilder(instrumentationScopeName)); - assertThatThrownBy( - () -> - GlobalEventLoggerProvider.set( - instrumentationScopeName -> - EventLoggerProvider.noop().eventLoggerBuilder(instrumentationScopeName))) - .isInstanceOf(IllegalStateException.class) - .hasMessageContaining("GlobalEventLoggerProvider.set has already been called") - .hasStackTraceContaining("setThenSet"); - } -} diff --git a/exporters/otlp/common/src/jmh/java/io/opentelemetry/exporter/internal/otlp/LogsRequestMarshalerBenchmark.java b/exporters/otlp/common/src/jmh/java/io/opentelemetry/exporter/internal/otlp/LogsRequestMarshalerBenchmark.java index 2d25476f42a..09bc21576c2 100644 --- a/exporters/otlp/common/src/jmh/java/io/opentelemetry/exporter/internal/otlp/LogsRequestMarshalerBenchmark.java +++ b/exporters/otlp/common/src/jmh/java/io/opentelemetry/exporter/internal/otlp/LogsRequestMarshalerBenchmark.java @@ -7,8 +7,9 @@ import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.common.KeyValue; import io.opentelemetry.api.common.Value; -import io.opentelemetry.api.incubator.events.EventLogger; +import io.opentelemetry.api.incubator.logs.ExtendedLogger; import io.opentelemetry.api.logs.Logger; import io.opentelemetry.api.logs.Severity; import io.opentelemetry.exporter.internal.otlp.logs.LogsRequestMarshaler; @@ -16,7 +17,6 @@ import io.opentelemetry.sdk.logs.SdkLoggerProvider; import io.opentelemetry.sdk.logs.data.LogRecordData; import io.opentelemetry.sdk.logs.export.SimpleLogRecordProcessor; -import io.opentelemetry.sdk.logs.internal.SdkEventLoggerProvider; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.testing.exporter.InMemoryLogRecordExporter; import java.io.IOException; @@ -84,22 +84,21 @@ public class LogsRequestMarshalerBenchmark { .setSeverityText("INFO") .emit(); - SdkEventLoggerProvider eventLoggerProvider = SdkEventLoggerProvider.create(loggerProvider); - EventLogger eventLogger = eventLoggerProvider.get("event-logger"); - eventLogger - .builder("namespace.my-event-name") - // Helper methods to set primitive types - .put("stringKey", "value") - .put("longKey", 1L) - .put("doubleKey", 1.0) - .put("boolKey", true) - // Helper methods to set primitive array types - .put("stringArrKey", "value1", "value2") - .put("longArrKey", 1L, 2L) - .put("doubleArrKey", 1.0, 2.0) - .put("boolArrKey", true, false) - // Set complex data - .put("key", Value.of(Collections.singletonMap("childKey1", Value.of("value")))) + ((ExtendedLogger) logger1) + .logRecordBuilder() + .setEventName("namespace.my-event-name") + .setBody( + Value.of( + KeyValue.of("stringKey", Value.of("value")), + KeyValue.of("longKey", Value.of(1)), + KeyValue.of("doubleKey", Value.of(1.0)), + KeyValue.of("boolKey", Value.of(true)), + KeyValue.of("stringArrKey", Value.of(Value.of("value1"), Value.of("value2"))), + KeyValue.of("longArrKey", Value.of(Value.of(1), Value.of(2))), + KeyValue.of("doubleArrKey", Value.of(Value.of(1.0), Value.of(2.0))), + KeyValue.of("boolArrKey", Value.of(Value.of(true), Value.of(false))), + KeyValue.of( + "key", Value.of(Collections.singletonMap("childKey1", Value.of("value")))))) .emit(); LOGS = logRecordExporter.getFinishedLogRecordItems(); diff --git a/integration-tests/otlp/src/main/java/io/opentelemetry/integrationtest/OtlpExporterIntegrationTest.java b/integration-tests/otlp/src/main/java/io/opentelemetry/integrationtest/OtlpExporterIntegrationTest.java index 578bb57eca5..83121892006 100644 --- a/integration-tests/otlp/src/main/java/io/opentelemetry/integrationtest/OtlpExporterIntegrationTest.java +++ b/integration-tests/otlp/src/main/java/io/opentelemetry/integrationtest/OtlpExporterIntegrationTest.java @@ -22,7 +22,6 @@ import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.common.KeyValue; -import io.opentelemetry.api.incubator.events.EventLogger; import io.opentelemetry.api.incubator.logs.ExtendedLogRecordBuilder; import io.opentelemetry.api.logs.Logger; import io.opentelemetry.api.logs.Severity; @@ -66,7 +65,6 @@ import io.opentelemetry.sdk.logs.SdkLoggerProvider; import io.opentelemetry.sdk.logs.export.BatchLogRecordProcessor; import io.opentelemetry.sdk.logs.export.LogRecordExporter; -import io.opentelemetry.sdk.logs.internal.SdkEventLoggerProvider; import io.opentelemetry.sdk.metrics.SdkMeterProvider; import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder; import io.opentelemetry.sdk.metrics.export.MetricExporter; @@ -636,10 +634,6 @@ private static void testLogRecordExporter(LogRecordExporter logRecordExporter) { .build(); Logger logger = loggerProvider.get(OtlpExporterIntegrationTest.class.getName()); - EventLogger eventLogger = - SdkEventLoggerProvider.create(loggerProvider) - .eventLoggerBuilder(OtlpExporterIntegrationTest.class.getName()) - .build(); SpanContext spanContext = SpanContext.create( @@ -672,7 +666,6 @@ private static void testLogRecordExporter(LogRecordExporter logRecordExporter) { .setSeverityText("DEBUG") .setContext(Context.current()) .emit(); - eventLogger.builder("namespace.event-name").put("key", "value").emit(); } // Closing triggers flush of processor @@ -696,7 +689,7 @@ private static void testLogRecordExporter(LogRecordExporter logRecordExporter) { ScopeLogs ilLogs = resourceLogs.getScopeLogs(0); assertThat(ilLogs.getScope().getName()).isEqualTo(OtlpExporterIntegrationTest.class.getName()); - assertThat(ilLogs.getLogRecordsCount()).isEqualTo(2); + assertThat(ilLogs.getLogRecordsCount()).isEqualTo(1); // LogRecord via Logger.logRecordBuilder()...emit() io.opentelemetry.proto.logs.v1.LogRecord protoLog1 = ilLogs.getLogRecords(0); @@ -814,29 +807,6 @@ private static void testLogRecordExporter(LogRecordExporter logRecordExporter) { assertThat(TraceFlags.fromByte((byte) protoLog1.getFlags())) .isEqualTo(spanContext.getTraceFlags()); assertThat(protoLog1.getTimeUnixNano()).isEqualTo(100); - - // LogRecord via EventLogger.emit(String, Attributes) - io.opentelemetry.proto.logs.v1.LogRecord protoLog2 = ilLogs.getLogRecords(1); - assertThat(protoLog2.getBody().getKvlistValue().getValuesList()) - .containsExactlyInAnyOrder( - io.opentelemetry.proto.common.v1.KeyValue.newBuilder() - .setKey("key") - .setValue(AnyValue.newBuilder().setStringValue("value").build()) - .build()); - assertThat(protoLog2.getAttributesList()) - .containsExactlyInAnyOrder( - io.opentelemetry.proto.common.v1.KeyValue.newBuilder() - .setKey("event.name") - .setValue(AnyValue.newBuilder().setStringValue("namespace.event-name").build()) - .build()); - assertThat(protoLog2.getSeverityText()).isEmpty(); - assertThat(TraceId.fromBytes(protoLog2.getTraceId().toByteArray())) - .isEqualTo(spanContext.getTraceId()); - assertThat(SpanId.fromBytes(protoLog2.getSpanId().toByteArray())) - .isEqualTo(spanContext.getSpanId()); - assertThat(TraceFlags.fromByte((byte) protoLog2.getFlags())) - .isEqualTo(spanContext.getTraceFlags()); - assertThat(protoLog2.getTimeUnixNano()).isGreaterThan(0); } private static class OtlpGrpcServer extends ServerExtension { diff --git a/sdk-extensions/autoconfigure/build.gradle.kts b/sdk-extensions/autoconfigure/build.gradle.kts index df01e3d34d7..e7cb4294154 100644 --- a/sdk-extensions/autoconfigure/build.gradle.kts +++ b/sdk-extensions/autoconfigure/build.gradle.kts @@ -23,11 +23,6 @@ dependencies { testing { suites { - register("testIncubating") { - dependencies { - implementation(project(":api:incubator")) - } - } register("testAutoConfigureOrder") { targets { all { diff --git a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdkBuilder.java b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdkBuilder.java index f6ddd6c6f85..cca5f98dc89 100644 --- a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdkBuilder.java +++ b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdkBuilder.java @@ -63,19 +63,6 @@ */ public final class AutoConfiguredOpenTelemetrySdkBuilder implements AutoConfigurationCustomizer { - private static final boolean INCUBATOR_AVAILABLE; - - static { - boolean incubatorAvailable = false; - try { - Class.forName("io.opentelemetry.api.incubator.events.GlobalEventLoggerProvider"); - incubatorAvailable = true; - } catch (ClassNotFoundException e) { - // Not available - } - INCUBATOR_AVAILABLE = incubatorAvailable; - } - private static final Logger logger = Logger.getLogger(AutoConfiguredOpenTelemetrySdkBuilder.class.getName()); @@ -603,9 +590,6 @@ private void maybeSetAsGlobal(OpenTelemetrySdk openTelemetrySdk) { return; } GlobalOpenTelemetry.set(openTelemetrySdk); - if (INCUBATOR_AVAILABLE) { - IncubatingUtil.setGlobalEventLoggerProvider(openTelemetrySdk.getSdkLoggerProvider()); - } logger.log( Level.FINE, "Global OpenTelemetry set to {0} by autoconfiguration", openTelemetrySdk); } diff --git a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/IncubatingUtil.java b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/IncubatingUtil.java deleted file mode 100644 index f66e007cf34..00000000000 --- a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/IncubatingUtil.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.autoconfigure; - -import io.opentelemetry.api.incubator.events.GlobalEventLoggerProvider; -import io.opentelemetry.sdk.logs.SdkLoggerProvider; -import io.opentelemetry.sdk.logs.internal.SdkEventLoggerProvider; - -/** - * Utilities for interacting with {@code io.opentelemetry:opentelemetry-api-incubator}, which is not - * guaranteed to be present on the classpath. For all methods, callers MUST first separately - * reflectively confirm that the incubator is available on the classpath. - */ -final class IncubatingUtil { - - private IncubatingUtil() {} - - static void setGlobalEventLoggerProvider(SdkLoggerProvider sdkLoggerProvider) { - GlobalEventLoggerProvider.set(SdkEventLoggerProvider.create(sdkLoggerProvider)); - } -} diff --git a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdkTest.java b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdkTest.java index 4fc7dce0c35..f630b814cb7 100644 --- a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdkTest.java +++ b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdkTest.java @@ -13,7 +13,6 @@ import io.github.netmikey.logunit.api.LogCapturer; import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.OpenTelemetry; -import io.opentelemetry.api.incubator.events.GlobalEventLoggerProvider; import io.opentelemetry.exporter.prometheus.PrometheusHttpServer; import io.opentelemetry.sdk.OpenTelemetrySdk; import java.lang.reflect.Field; @@ -32,7 +31,6 @@ class AutoConfiguredOpenTelemetrySdkTest { @BeforeEach void setUp() { GlobalOpenTelemetry.resetForTest(); - GlobalEventLoggerProvider.resetForTest(); } @SuppressWarnings("ResultOfMethodCallIgnored") diff --git a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/FileConfigurationTest.java b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/FileConfigurationTest.java index 7eface52c5e..ef0b05b2da3 100644 --- a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/FileConfigurationTest.java +++ b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/FileConfigurationTest.java @@ -17,7 +17,6 @@ import io.github.netmikey.logunit.api.LogCapturer; import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.OpenTelemetry; -import io.opentelemetry.api.incubator.events.GlobalEventLoggerProvider; import io.opentelemetry.exporter.logging.LoggingSpanExporter; import io.opentelemetry.internal.testing.CleanupExtension; import io.opentelemetry.sdk.OpenTelemetrySdk; @@ -25,7 +24,6 @@ import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException; import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.internal.StructuredConfigProperties; -import io.opentelemetry.sdk.logs.internal.SdkEventLoggerProvider; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.trace.SdkTracerProvider; import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; @@ -72,7 +70,6 @@ void setup() throws IOException { configFilePath = tempDir.resolve("otel-config.yaml"); Files.write(configFilePath, yaml.getBytes(StandardCharsets.UTF_8)); GlobalOpenTelemetry.resetForTest(); - GlobalEventLoggerProvider.resetForTest(); } @Test @@ -135,8 +132,6 @@ void configFile_setResultAsGlobalFalse() { cleanup.addCloseable(openTelemetrySdk); assertThat(GlobalOpenTelemetry.get()).extracting("delegate").isNotSameAs(openTelemetrySdk); - assertThat(GlobalEventLoggerProvider.get()) - .isNotSameAs(openTelemetrySdk.getSdkLoggerProvider()); } @Test @@ -151,10 +146,6 @@ void configFile_setResultAsGlobalTrue() { cleanup.addCloseable(openTelemetrySdk); assertThat(GlobalOpenTelemetry.get()).extracting("delegate").isSameAs(openTelemetrySdk); - assertThat(GlobalEventLoggerProvider.get()) - .isInstanceOf(SdkEventLoggerProvider.class) - .extracting("delegateLoggerProvider") - .isSameAs(openTelemetrySdk.getSdkLoggerProvider()); } @Test diff --git a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/FullConfigTest.java b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/FullConfigTest.java index 96fd7e3eb61..edad134ae5e 100644 --- a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/FullConfigTest.java +++ b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/FullConfigTest.java @@ -18,8 +18,8 @@ import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.baggage.propagation.W3CBaggagePropagator; import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.incubator.events.EventLogger; -import io.opentelemetry.api.incubator.events.GlobalEventLoggerProvider; +import io.opentelemetry.api.common.Value; +import io.opentelemetry.api.incubator.logs.ExtendedLogger; import io.opentelemetry.api.logs.Logger; import io.opentelemetry.api.logs.Severity; import io.opentelemetry.api.metrics.Meter; @@ -160,7 +160,6 @@ void setUp() { // Initialize here so we can shutdown when done GlobalOpenTelemetry.resetForTest(); - GlobalEventLoggerProvider.resetForTest(); openTelemetrySdk = AutoConfiguredOpenTelemetrySdk.initialize().getOpenTelemetrySdk(); } @@ -168,7 +167,6 @@ void setUp() { void afterEach() { openTelemetrySdk.close(); GlobalOpenTelemetry.resetForTest(); - GlobalEventLoggerProvider.resetForTest(); } @Test @@ -206,8 +204,12 @@ void configures() throws Exception { logger.logRecordBuilder().setBody("debug log message").setSeverity(Severity.DEBUG).emit(); logger.logRecordBuilder().setBody("info log message").setSeverity(Severity.INFO).emit(); - EventLogger eventLogger = GlobalEventLoggerProvider.get().eventLoggerBuilder("test").build(); - eventLogger.builder("namespace.test-name").put("cow", "moo").emit(); + ((ExtendedLogger) logger) + .logRecordBuilder() + .setEventName("namespace.test-name") + .setSeverity(Severity.INFO) + .setBody(Value.of(io.opentelemetry.api.common.KeyValue.of("cow", Value.of("moo")))) + .emit(); openTelemetrySdk.getSdkTracerProvider().forceFlush().join(10, TimeUnit.SECONDS); openTelemetrySdk.getSdkLoggerProvider().forceFlush().join(10, TimeUnit.SECONDS); @@ -305,7 +307,7 @@ void configures() throws Exception { .build()); assertThat(logRecord.getSeverityNumber()) .isEqualTo(SeverityNumber.SEVERITY_NUMBER_INFO); - assertHasKeyValue(logRecord.getAttributesList(), "event.name", "namespace.test-name"); + assertThat(logRecord.getEventName()).isEqualTo("namespace.test-name"); }); } diff --git a/sdk-extensions/autoconfigure/src/testIncubating/java/io/opentelemetry/sdk/autoconfigure/AutoconfigureGlobalEventLoggerProviderTest.java b/sdk-extensions/autoconfigure/src/testIncubating/java/io/opentelemetry/sdk/autoconfigure/AutoconfigureGlobalEventLoggerProviderTest.java deleted file mode 100644 index 8ca85372ada..00000000000 --- a/sdk-extensions/autoconfigure/src/testIncubating/java/io/opentelemetry/sdk/autoconfigure/AutoconfigureGlobalEventLoggerProviderTest.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.autoconfigure; - -import static org.assertj.core.api.Assertions.assertThat; - -import io.opentelemetry.api.GlobalOpenTelemetry; -import io.opentelemetry.api.OpenTelemetry; -import io.opentelemetry.api.incubator.events.GlobalEventLoggerProvider; -import io.opentelemetry.sdk.OpenTelemetrySdk; -import io.opentelemetry.sdk.logs.internal.SdkEventLoggerProvider; -import java.util.HashMap; -import java.util.Map; -import java.util.function.Supplier; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -class AutoconfigureGlobalEventLoggerProviderTest { - - private AutoConfiguredOpenTelemetrySdkBuilder builder; - - @BeforeEach - void resetGlobal() { - GlobalOpenTelemetry.resetForTest(); - GlobalEventLoggerProvider.resetForTest(); - builder = - AutoConfiguredOpenTelemetrySdk.builder() - .addPropertiesSupplier(disableExportPropertySupplier()); - } - - @Test - void builder_setResultAsGlobalFalse() { - GlobalOpenTelemetry.set(OpenTelemetry.noop()); - - OpenTelemetrySdk openTelemetry = builder.build().getOpenTelemetrySdk(); - - assertThat(GlobalOpenTelemetry.get()).extracting("delegate").isNotSameAs(openTelemetry); - assertThat(GlobalEventLoggerProvider.get()).isNotSameAs(openTelemetry.getSdkLoggerProvider()); - } - - @Test - void builder_setResultAsGlobalTrue() { - OpenTelemetrySdk openTelemetry = builder.setResultAsGlobal().build().getOpenTelemetrySdk(); - - assertThat(GlobalOpenTelemetry.get()).extracting("delegate").isSameAs(openTelemetry); - assertThat(GlobalEventLoggerProvider.get()) - .isInstanceOf(SdkEventLoggerProvider.class) - .extracting("delegateLoggerProvider") - .isSameAs(openTelemetry.getSdkLoggerProvider()); - } - - private static Supplier> disableExportPropertySupplier() { - Map props = new HashMap<>(); - props.put("otel.metrics.exporter", "none"); - props.put("otel.traces.exporter", "none"); - props.put("otel.logs.exporter", "none"); - return () -> props; - } -} diff --git a/sdk/logs/src/main/java/io/opentelemetry/sdk/logs/internal/SdkEventBuilder.java b/sdk/logs/src/main/java/io/opentelemetry/sdk/logs/internal/SdkEventBuilder.java deleted file mode 100644 index 2378d9e6dad..00000000000 --- a/sdk/logs/src/main/java/io/opentelemetry/sdk/logs/internal/SdkEventBuilder.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.logs.internal; - -import io.opentelemetry.api.common.AttributeKey; -import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.common.Value; -import io.opentelemetry.api.incubator.events.EventBuilder; -import io.opentelemetry.api.incubator.logs.ExtendedLogRecordBuilder; -import io.opentelemetry.api.logs.LogRecordBuilder; -import io.opentelemetry.api.logs.Severity; -import io.opentelemetry.context.Context; -import io.opentelemetry.sdk.common.Clock; -import java.time.Instant; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.TimeUnit; - -class SdkEventBuilder implements EventBuilder { - - private static final AttributeKey EVENT_NAME = AttributeKey.stringKey("event.name"); - - private final Map> payload = new HashMap<>(); - private final Clock clock; - private final LogRecordBuilder logRecordBuilder; - private final String eventName; - private boolean hasTimestamp = false; - - SdkEventBuilder(Clock clock, LogRecordBuilder logRecordBuilder, String eventName) { - this.clock = clock; - this.logRecordBuilder = logRecordBuilder; - this.eventName = eventName; - } - - @Override - public EventBuilder put(String key, Value value) { - payload.put(key, value); - return this; - } - - @Override - public EventBuilder setTimestamp(long timestamp, TimeUnit unit) { - this.logRecordBuilder.setTimestamp(timestamp, unit); - this.hasTimestamp = true; - return this; - } - - @Override - public EventBuilder setTimestamp(Instant instant) { - this.logRecordBuilder.setTimestamp(instant); - this.hasTimestamp = true; - return this; - } - - @Override - public EventBuilder setContext(Context context) { - logRecordBuilder.setContext(context); - return this; - } - - @Override - public EventBuilder setSeverity(Severity severity) { - logRecordBuilder.setSeverity(severity); - return this; - } - - @Override - public EventBuilder setAttributes(Attributes attributes) { - logRecordBuilder.setAllAttributes(attributes); - return this; - } - - @Override - public void emit() { - if (!payload.isEmpty()) { - ((ExtendedLogRecordBuilder) logRecordBuilder).setBody(Value.of(payload)); - } - if (!hasTimestamp) { - logRecordBuilder.setTimestamp(clock.now(), TimeUnit.NANOSECONDS); - } - logRecordBuilder.setAttribute(EVENT_NAME, eventName); - logRecordBuilder.emit(); - } -} diff --git a/sdk/logs/src/main/java/io/opentelemetry/sdk/logs/internal/SdkEventLoggerProvider.java b/sdk/logs/src/main/java/io/opentelemetry/sdk/logs/internal/SdkEventLoggerProvider.java deleted file mode 100644 index d198675f552..00000000000 --- a/sdk/logs/src/main/java/io/opentelemetry/sdk/logs/internal/SdkEventLoggerProvider.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.logs.internal; - -import io.opentelemetry.api.incubator.events.EventBuilder; -import io.opentelemetry.api.incubator.events.EventLogger; -import io.opentelemetry.api.incubator.events.EventLoggerBuilder; -import io.opentelemetry.api.incubator.events.EventLoggerProvider; -import io.opentelemetry.api.logs.Logger; -import io.opentelemetry.api.logs.LoggerBuilder; -import io.opentelemetry.api.logs.LoggerProvider; -import io.opentelemetry.api.logs.Severity; -import io.opentelemetry.context.Context; -import io.opentelemetry.sdk.common.Clock; - -/** - * SDK implementation for {@link EventLoggerProvider}. - * - *

Delegates all calls to the configured {@link LoggerProvider}, and its {@link LoggerBuilder}s, - * {@link Logger}s. - * - *

This class is internal and experimental. Its APIs are unstable and can change at any time. Its - * APIs (or a version of them) may be promoted to the public stable API in the future, but no - * guarantees are made. - */ -public final class SdkEventLoggerProvider implements EventLoggerProvider { - - private static final Severity DEFAULT_SEVERITY = Severity.INFO; - - private final LoggerProvider delegateLoggerProvider; - private final Clock clock; - - private SdkEventLoggerProvider(LoggerProvider delegateLoggerProvider, Clock clock) { - this.delegateLoggerProvider = delegateLoggerProvider; - this.clock = clock; - } - - /** - * Create a {@link SdkEventLoggerProvider} which delegates to the {@code delegateLoggerProvider}. - */ - public static SdkEventLoggerProvider create(LoggerProvider delegateLoggerProvider) { - return new SdkEventLoggerProvider(delegateLoggerProvider, Clock.getDefault()); - } - - /** - * Create a {@link SdkEventLoggerProvider} which delegates to the {@code delegateLoggerProvider}. - */ - public static SdkEventLoggerProvider create(LoggerProvider delegateLoggerProvider, Clock clock) { - return new SdkEventLoggerProvider(delegateLoggerProvider, clock); - } - - @Override - public EventLogger get(String instrumentationScopeName) { - return eventLoggerBuilder(instrumentationScopeName).build(); - } - - @Override - public EventLoggerBuilder eventLoggerBuilder(String instrumentationScopeName) { - return new SdkEventLoggerBuilder( - clock, delegateLoggerProvider.loggerBuilder(instrumentationScopeName)); - } - - private static class SdkEventLoggerBuilder implements EventLoggerBuilder { - - private final Clock clock; - private final LoggerBuilder delegateLoggerBuilder; - - private SdkEventLoggerBuilder(Clock clock, LoggerBuilder delegateLoggerBuilder) { - this.clock = clock; - this.delegateLoggerBuilder = delegateLoggerBuilder; - } - - @Override - public EventLoggerBuilder setSchemaUrl(String schemaUrl) { - delegateLoggerBuilder.setSchemaUrl(schemaUrl); - return this; - } - - @Override - public EventLoggerBuilder setInstrumentationVersion(String instrumentationScopeVersion) { - delegateLoggerBuilder.setInstrumentationVersion(instrumentationScopeVersion); - return this; - } - - @Override - public EventLogger build() { - return new SdkEventLogger(clock, delegateLoggerBuilder.build()); - } - } - - private static class SdkEventLogger implements EventLogger { - - private final Clock clock; - private final Logger delegateLogger; - - private SdkEventLogger(Clock clock, Logger delegateLogger) { - this.clock = clock; - this.delegateLogger = delegateLogger; - } - - @Override - public EventBuilder builder(String eventName) { - return new SdkEventBuilder( - clock, - delegateLogger - .logRecordBuilder() - .setSeverity(DEFAULT_SEVERITY) - .setContext(Context.current()), - eventName); - } - } -} diff --git a/sdk/logs/src/testIncubating/java/io/opentelemetry/sdk/logs/internal/SdkEventBuilderTest.java b/sdk/logs/src/testIncubating/java/io/opentelemetry/sdk/logs/internal/SdkEventBuilderTest.java deleted file mode 100644 index bf45863d985..00000000000 --- a/sdk/logs/src/testIncubating/java/io/opentelemetry/sdk/logs/internal/SdkEventBuilderTest.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.logs.internal; - -import static io.opentelemetry.api.common.AttributeKey.stringKey; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyLong; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.logs.LogRecordBuilder; -import io.opentelemetry.api.logs.Severity; -import io.opentelemetry.context.Context; -import io.opentelemetry.sdk.common.Clock; -import java.time.Instant; -import java.util.concurrent.TimeUnit; -import org.junit.jupiter.api.Test; - -class SdkEventBuilderTest { - - @Test - void emit() { - String eventName = "banana"; - - LogRecordBuilder logRecordBuilder = mock(LogRecordBuilder.class); - when(logRecordBuilder.setTimestamp(anyLong(), any())).thenReturn(logRecordBuilder); - when(logRecordBuilder.setAttribute(any(), any())).thenReturn(logRecordBuilder); - when(logRecordBuilder.setContext(any())).thenReturn(logRecordBuilder); - when(logRecordBuilder.setSeverity(any())).thenReturn(logRecordBuilder); - when(logRecordBuilder.setAllAttributes(any())).thenReturn(logRecordBuilder); - - Instant instant = Instant.now(); - Context context = Context.root(); - Attributes attributes = Attributes.builder().put("extra-attribute", "value").build(); - new SdkEventBuilder(Clock.getDefault(), logRecordBuilder, eventName) - .setTimestamp(123456L, TimeUnit.NANOSECONDS) - .setTimestamp(instant) - .setContext(context) - .setSeverity(Severity.DEBUG) - .setAttributes(attributes) - .emit(); - verify(logRecordBuilder).setAttribute(stringKey("event.name"), eventName); - verify(logRecordBuilder).setTimestamp(123456L, TimeUnit.NANOSECONDS); - verify(logRecordBuilder).setTimestamp(instant); - verify(logRecordBuilder).setContext(context); - verify(logRecordBuilder).setSeverity(Severity.DEBUG); - verify(logRecordBuilder).setAllAttributes(attributes); - verify(logRecordBuilder).emit(); - } -} diff --git a/sdk/logs/src/testIncubating/java/io/opentelemetry/sdk/logs/internal/SdkEventLoggerProviderTest.java b/sdk/logs/src/testIncubating/java/io/opentelemetry/sdk/logs/internal/SdkEventLoggerProviderTest.java deleted file mode 100644 index d033ba9bc15..00000000000 --- a/sdk/logs/src/testIncubating/java/io/opentelemetry/sdk/logs/internal/SdkEventLoggerProviderTest.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.logs.internal; - -import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import com.google.common.collect.ImmutableMap; -import io.opentelemetry.api.common.AttributeKey; -import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.common.Value; -import io.opentelemetry.api.incubator.events.EventLogger; -import io.opentelemetry.api.logs.Severity; -import io.opentelemetry.sdk.common.Clock; -import io.opentelemetry.sdk.common.InstrumentationScopeInfo; -import io.opentelemetry.sdk.logs.ReadWriteLogRecord; -import io.opentelemetry.sdk.logs.SdkLoggerProvider; -import io.opentelemetry.sdk.resources.Resource; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicReference; -import org.junit.jupiter.api.Test; - -class SdkEventLoggerProviderTest { - - private static final Resource RESOURCE = - Resource.builder().put("resource-key", "resource-value").build(); - - private final Clock clock = mock(Clock.class); - private final AtomicReference seenLog = new AtomicReference<>(); - private final SdkEventLoggerProvider eventEmitterProvider = - SdkEventLoggerProvider.create( - SdkLoggerProvider.builder() - .setResource(RESOURCE) - .addLogRecordProcessor((context, logRecord) -> seenLog.set(logRecord)) - .build(), - clock); - - @Test - void builder() { - when(clock.now()).thenReturn(10L); - - long yesterday = System.nanoTime() - TimeUnit.DAYS.toNanos(1); - EventLogger eventLogger = eventEmitterProvider.eventLoggerBuilder("test-scope").build(); - - eventLogger - .builder("namespace.event-name") - .put("key1", "value1") - .setTimestamp(yesterday, TimeUnit.NANOSECONDS) - .setSeverity(Severity.DEBUG) - .setAttributes(Attributes.builder().put("extra-attribute", "value").build()) - .emit(); - - assertThat(seenLog.get().toLogRecordData()) - .hasResource(RESOURCE) - .hasInstrumentationScope(InstrumentationScopeInfo.create("test-scope")) - .hasTimestamp(yesterday) - .hasSeverity(Severity.DEBUG) - .hasAttributes( - Attributes.builder() - .put("event.name", "namespace.event-name") - .put("extra-attribute", "value") - .build()); - assertThat(seenLog.get().toLogRecordData().getObservedTimestampEpochNanos()).isPositive(); - Value expectedPayload = Value.of(Collections.singletonMap("key1", Value.of("value1"))); - assertThat(seenLog.get().toLogRecordData().getBodyValue()).isEqualTo(expectedPayload); - } - - @Test - void eventBuilder_FullPayload() { - EventLogger eventLogger = eventEmitterProvider.get("test-scoe"); - - eventLogger - .builder("namespace.my-event-name") - // Helper methods to set primitive types - .put("stringKey", "value") - .put("longKey", 1L) - .put("doubleKey", 1.0) - .put("boolKey", true) - // Helper methods to set primitive array types - .put("stringArrKey", "value1", "value2") - .put("longArrKey", 1L, 2L) - .put("doubleArrKey", 1.0, 2.0) - .put("boolArrKey", true, false) - // Set complex data - .put( - "valueKey", - Value.of( - ImmutableMap.of( - "childKey1", Value.of("value"), - "childKey2", Value.of("value")))) - // Helper methods to set AttributeKey types - .put(AttributeKey.stringKey("attrStringKey"), "value") - .put(AttributeKey.longKey("attrLongKey"), 1L) - .put(AttributeKey.doubleKey("attrDoubleKey"), 1.0) - .put(AttributeKey.booleanKey("attrBoolKey"), true) - .put(AttributeKey.stringArrayKey("attrStringArrKey"), Arrays.asList("value1", "value2")) - .put(AttributeKey.longArrayKey("attrLongArrKey"), Arrays.asList(1L, 2L)) - .put(AttributeKey.doubleArrayKey("attrDoubleArrKey"), Arrays.asList(1.0, 2.0)) - .put(AttributeKey.booleanArrayKey("attrBoolArrKey"), Arrays.asList(true, false)) - .emit(); - - Map> expectedPayload = new HashMap<>(); - expectedPayload.put("stringKey", Value.of("value")); - expectedPayload.put("longKey", Value.of(1L)); - expectedPayload.put("doubleKey", Value.of(1.0)); - expectedPayload.put("boolKey", Value.of(true)); - expectedPayload.put( - "stringArrKey", Value.of(Arrays.asList(Value.of("value1"), Value.of("value2")))); - expectedPayload.put("longArrKey", Value.of(Arrays.asList(Value.of(1L), Value.of(2L)))); - expectedPayload.put("doubleArrKey", Value.of(Arrays.asList(Value.of(1.0), Value.of(2.0)))); - expectedPayload.put("boolArrKey", Value.of(Arrays.asList(Value.of(true), Value.of(false)))); - expectedPayload.put( - "valueKey", - Value.of( - ImmutableMap.of( - "childKey1", Value.of("value"), - "childKey2", Value.of("value")))); - expectedPayload.put("attrStringKey", Value.of("value")); - expectedPayload.put("attrLongKey", Value.of(1L)); - expectedPayload.put("attrDoubleKey", Value.of(1.0)); - expectedPayload.put("attrBoolKey", Value.of(true)); - expectedPayload.put( - "attrStringArrKey", Value.of(Arrays.asList(Value.of("value1"), Value.of("value2")))); - expectedPayload.put("attrLongArrKey", Value.of(Arrays.asList(Value.of(1L), Value.of(2L)))); - expectedPayload.put("attrDoubleArrKey", Value.of(Arrays.asList(Value.of(1.0), Value.of(2.0)))); - expectedPayload.put("attrBoolArrKey", Value.of(Arrays.asList(Value.of(true), Value.of(false)))); - assertThat(seenLog.get().toLogRecordData().getBodyValue()).isEqualTo(Value.of(expectedPayload)); - } -} diff --git a/sdk/testing/src/test/java/io/opentelemetry/sdk/testing/assertj/LogAssertionsTest.java b/sdk/testing/src/test/java/io/opentelemetry/sdk/testing/assertj/LogAssertionsTest.java index e30210eb9d6..165848c7f71 100644 --- a/sdk/testing/src/test/java/io/opentelemetry/sdk/testing/assertj/LogAssertionsTest.java +++ b/sdk/testing/src/test/java/io/opentelemetry/sdk/testing/assertj/LogAssertionsTest.java @@ -5,13 +5,7 @@ package io.opentelemetry.sdk.testing.assertj; -import static io.opentelemetry.api.common.AttributeKey.booleanArrayKey; -import static io.opentelemetry.api.common.AttributeKey.booleanKey; -import static io.opentelemetry.api.common.AttributeKey.doubleArrayKey; -import static io.opentelemetry.api.common.AttributeKey.doubleKey; -import static io.opentelemetry.api.common.AttributeKey.longArrayKey; import static io.opentelemetry.api.common.AttributeKey.longKey; -import static io.opentelemetry.api.common.AttributeKey.stringArrayKey; import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.attributeEntry; @@ -21,8 +15,9 @@ import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.common.KeyValue; import io.opentelemetry.api.common.Value; -import io.opentelemetry.api.incubator.events.EventLogger; +import io.opentelemetry.api.logs.Logger; import io.opentelemetry.api.logs.Severity; import io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.api.trace.TraceFlags; @@ -31,7 +26,6 @@ import io.opentelemetry.sdk.logs.SdkLoggerProvider; import io.opentelemetry.sdk.logs.data.LogRecordData; import io.opentelemetry.sdk.logs.export.SimpleLogRecordProcessor; -import io.opentelemetry.sdk.logs.internal.SdkEventLoggerProvider; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.testing.exporter.InMemoryLogRecordExporter; import io.opentelemetry.sdk.testing.logs.internal.TestExtendedLogRecordData; @@ -292,32 +286,34 @@ void failure() { } @Test - void eventBodyAssertions() { + void logBodyAssertions() { InMemoryLogRecordExporter exporter = InMemoryLogRecordExporter.create(); SdkLoggerProvider loggerProvider = SdkLoggerProvider.builder() .addLogRecordProcessor(SimpleLogRecordProcessor.create(exporter)) .build(); - EventLogger eventLogger = SdkEventLoggerProvider.create(loggerProvider).get("test.test"); - eventLogger - .builder("foo") - .put("foostr", "bar") - .put("foobool", true) - .put("foolong", 12L) - .put("foodbl", 12.0) - .put("foostra", "bar", "baz", "buzz") - .put("foolonga", 9, 0, 2, 1, 0) - .put("foodbla", 9.1, 0.2, 2.3, 1.4, 0.5) - .put("fooboola", true, true, true, false) - .put("fooany", Value.of("grim")) - .put(stringKey("ak_str"), "bar") - .put(booleanKey("ak_bool"), true) - .put(longKey("ak_long"), 12L) - .put(doubleKey("ak_dbl"), 12.0) - .put(stringArrayKey("ak_stra"), Arrays.asList("bar", "baz", "buzz")) - .put(longArrayKey("ak_longa"), Arrays.asList(9L, 0L, 2L, 1L, 0L)) - .put(doubleArrayKey("ak_dbla"), Arrays.asList(9.1, 0.2, 2.3, 1.4, 0.5)) - .put(booleanArrayKey("ak_boola"), Arrays.asList(true, true, true, false)) + Logger logger = loggerProvider.get("test.test"); + logger + .logRecordBuilder() + .setBody( + Value.of( + KeyValue.of("foostr", Value.of("bar")), + KeyValue.of("foobool", Value.of(true)), + KeyValue.of("foolong", Value.of(12L)), + KeyValue.of("foodbl", Value.of(12.0)), + KeyValue.of( + "foostra", Value.of(Value.of("bar"), Value.of("baz"), Value.of("buzz"))), + KeyValue.of( + "foolonga", + Value.of(Value.of(9), Value.of(0), Value.of(2), Value.of(1), Value.of(0))), + KeyValue.of( + "foodbla", + Value.of( + Value.of(9.1), Value.of(0.2), Value.of(2.3), Value.of(1.4), Value.of(0.5))), + KeyValue.of( + "fooboola", + Value.of(Value.of(true), Value.of(true), Value.of(true), Value.of(false))), + KeyValue.of("fooany", Value.of("grim")))) .emit(); List logs = exporter.getFinishedLogRecordItems(); assertThat(logs).hasSize(1); @@ -330,14 +326,6 @@ void eventBodyAssertions() { .hasBodyField("foolonga", 9, 0, 2, 1, 0) .hasBodyField("foodbla", 9.1, 0.2, 2.3, 1.4, 0.5) .hasBodyField("fooboola", true, true, true, false) - .hasBodyField("fooany", Value.of("grim")) - .hasBodyField(stringKey("ak_str"), "bar") - .hasBodyField(booleanKey("ak_bool"), true) - .hasBodyField(longKey("ak_long"), 12L) - .hasBodyField(doubleKey("ak_dbl"), 12.0) - .hasBodyField(stringArrayKey("ak_stra"), Arrays.asList("bar", "baz", "buzz")) - .hasBodyField(longArrayKey("ak_longa"), Arrays.asList(9L, 0L, 2L, 1L, 0L)) - .hasBodyField(doubleArrayKey("ak_dbla"), Arrays.asList(9.1, 0.2, 2.3, 1.4, 0.5)) - .hasBodyField(booleanArrayKey("ak_boola"), Arrays.asList(true, true, true, false)); + .hasBodyField("fooany", Value.of("grim")); } } From c26e6cfefee9a8fae7517c21d7cc422f1154575f Mon Sep 17 00:00:00 2001 From: Jack Berg Date: Wed, 29 Jan 2025 13:04:47 -0600 Subject: [PATCH 2/3] Remove Event API entry from incubator readme --- api/incubator/README.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/api/incubator/README.md b/api/incubator/README.md index ee29241f9fe..e0b0ec7a080 100644 --- a/api/incubator/README.md +++ b/api/incubator/README.md @@ -2,14 +2,6 @@ Experimental APIs, including Event API, extended Log Bridge APIs, extended Metrics APIs, extended ContextPropagator APIs, and extended Trace APIs. -## Event API - -Features: - -* Event API for producing log records according to [Event Semantic Conventions](https://opentelemetry.io/docs/specs/semconv/general/events/). - -See [EventApiUsageTest](./src/test/java/io/opentelemetry/api/incubator/events/EventApiUsageTest.java). - ## Extended Log Bridge API Features: From 90d0a814a3359e2be54b8dfa3abce0f86a36868f Mon Sep 17 00:00:00 2001 From: Jack Berg Date: Thu, 30 Jan 2025 15:07:52 -0600 Subject: [PATCH 3/3] Drop autoconfigure compileOnly dependency on :api:incubator --- sdk-extensions/autoconfigure/build.gradle.kts | 2 -- 1 file changed, 2 deletions(-) diff --git a/sdk-extensions/autoconfigure/build.gradle.kts b/sdk-extensions/autoconfigure/build.gradle.kts index e7cb4294154..e3545250888 100644 --- a/sdk-extensions/autoconfigure/build.gradle.kts +++ b/sdk-extensions/autoconfigure/build.gradle.kts @@ -10,8 +10,6 @@ dependencies { api(project(":sdk:all")) api(project(":sdk-extensions:autoconfigure-spi")) - compileOnly(project(":api:incubator")) - annotationProcessor("com.google.auto.value:auto-value") testImplementation(project(":sdk:trace-shaded-deps"))