From bb4484d21caddfb7f7854346d50f5a209b860db4 Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Thu, 19 Oct 2023 15:15:13 -0700 Subject: [PATCH 1/3] introduce configuration for various instrumentation components (phase 1). --- .../android/OpenTelemetryRum.java | 27 ++++-- .../android/OpenTelemetryRumBuilder.java | 59 ++++++++++++- .../android/OtelAndroidConfig.java | 88 +++++++++++++++++++ .../ScreenAttributesSpanProcessor.java | 44 ++++++++++ .../startup/InitializationEvents.java | 29 ++++++ .../startup/SdkInitializationEvents.java | 26 ++++++ .../ScreenAttributesSpanProcessorTest.java | 41 +++++++++ 7 files changed, 308 insertions(+), 6 deletions(-) create mode 100644 instrumentation/src/main/java/io/opentelemetry/android/OtelAndroidConfig.java create mode 100644 instrumentation/src/main/java/io/opentelemetry/android/ScreenAttributesSpanProcessor.java create mode 100644 instrumentation/src/main/java/io/opentelemetry/android/instrumentation/startup/InitializationEvents.java create mode 100644 instrumentation/src/main/java/io/opentelemetry/android/instrumentation/startup/SdkInitializationEvents.java create mode 100644 instrumentation/src/test/java/io/opentelemetry/android/ScreenAttributesSpanProcessorTest.java diff --git a/instrumentation/src/main/java/io/opentelemetry/android/OpenTelemetryRum.java b/instrumentation/src/main/java/io/opentelemetry/android/OpenTelemetryRum.java index c43e53a70..834ca98b8 100644 --- a/instrumentation/src/main/java/io/opentelemetry/android/OpenTelemetryRum.java +++ b/instrumentation/src/main/java/io/opentelemetry/android/OpenTelemetryRum.java @@ -21,15 +21,32 @@ public interface OpenTelemetryRum { /** - * Returns a new {@link OpenTelemetryRumBuilder} for {@link OpenTelemetryRum}. Use this version - * if you would like to configure individual aspects of the OpenTelemetry SDK but would still - * prefer to allow OpenTelemetry RUM to create the SDK for you. If you would like to "bring your - * own" SDK, call the two-argument version. + * Returns a new {@link OpenTelemetryRumBuilder} for {@link OpenTelemetryRum} with a default + * configuration. Use this version if you would like to configure individual aspects of the + * OpenTelemetry SDK but would still prefer to allow OpenTelemetry RUM to create the SDK for + * you. For additional configuration, call the two-argument version of build and pass it your + * {@link OtelAndroidConfig} instance. If you would like to "bring your own" SDK, call the + * two-argument version that takes the SDK as a parameter. * * @param application The {@link Application} that is being instrumented. */ static OpenTelemetryRumBuilder builder(Application application) { - return new OpenTelemetryRumBuilder(application); + return builder(application, new OtelAndroidConfig()); + } + + /** + * Returns a new {@link OpenTelemetryRumBuilder} for {@link OpenTelemetryRum} with the given + * configuration. Use this version if you would like to configure individual aspects of the + * OpenTelemetry SDK but would still prefer to allow OpenTelemetry RUM to create the SDK for + * you. If you would like to "bring your own" SDK, call the two-argument version that takes the + * SDK as a parameter. + * + * @param application + * @param config + * @return + */ + static OpenTelemetryRumBuilder builder(Application application, OtelAndroidConfig config) { + return new OpenTelemetryRumBuilder(application, config); } /** diff --git a/instrumentation/src/main/java/io/opentelemetry/android/OpenTelemetryRumBuilder.java b/instrumentation/src/main/java/io/opentelemetry/android/OpenTelemetryRumBuilder.java index 359fbda0b..a6868f293 100644 --- a/instrumentation/src/main/java/io/opentelemetry/android/OpenTelemetryRumBuilder.java +++ b/instrumentation/src/main/java/io/opentelemetry/android/OpenTelemetryRumBuilder.java @@ -9,6 +9,11 @@ import android.app.Application; import io.opentelemetry.android.instrumentation.InstrumentedApplication; +import io.opentelemetry.android.instrumentation.activity.VisibleScreenTracker; +import io.opentelemetry.android.instrumentation.network.CurrentNetworkProvider; +import io.opentelemetry.android.instrumentation.network.NetworkAttributesSpanAppender; +import io.opentelemetry.android.instrumentation.startup.InitializationEvents; +import io.opentelemetry.android.instrumentation.startup.SdkInitializationEvents; import io.opentelemetry.api.baggage.propagation.W3CBaggagePropagator; import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator; import io.opentelemetry.context.propagation.ContextPropagators; @@ -22,6 +27,7 @@ import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.trace.SdkTracerProvider; import io.opentelemetry.sdk.trace.SdkTracerProviderBuilder; +import io.opentelemetry.sdk.trace.SpanProcessor; import io.opentelemetry.sdk.trace.export.BatchSpanProcessor; import io.opentelemetry.sdk.trace.export.SpanExporter; import java.util.ArrayList; @@ -47,6 +53,8 @@ public final class OpenTelemetryRumBuilder { meterProviderCustomizers = new ArrayList<>(); private final List> loggerProviderCustomizers = new ArrayList<>(); + private final OtelAndroidConfig config; + private final VisibleScreenTracker visibleScreenTracker = new VisibleScreenTracker(); private Function spanExporterCustomizer = a -> a; private final List> instrumentationInstallers = @@ -56,17 +64,19 @@ public final class OpenTelemetryRumBuilder { (a) -> a; private Resource resource; + private InitializationEvents initializationEvents = InitializationEvents.NO_OP; private static TextMapPropagator buildDefaultPropagator() { return TextMapPropagator.composite( W3CTraceContextPropagator.getInstance(), W3CBaggagePropagator.getInstance()); } - OpenTelemetryRumBuilder(Application application) { + OpenTelemetryRumBuilder(Application application, OtelAndroidConfig config) { this.application = application; SessionIdTimeoutHandler timeoutHandler = new SessionIdTimeoutHandler(); this.sessionId = new SessionId(timeoutHandler); this.resource = AndroidResource.createDefault(application); + this.config = config; } /** @@ -216,6 +226,9 @@ public SessionId getSessionId() { * @return A new {@link OpenTelemetryRum} instance. */ public OpenTelemetryRum build() { + + applyConfiguration(); + OpenTelemetrySdk sdk = OpenTelemetrySdk.builder() .setTracerProvider(buildTracerProvider(sessionId, application)) @@ -230,6 +243,50 @@ public OpenTelemetryRum build() { return delegate.build(); } + /** Leverage the configuration to wire up various instrumentation components. */ + private void applyConfiguration() { + if (config.shouldGenerateSdkInitializationEvents()) { + initializationEvents = new SdkInitializationEvents(); + initializationEvents.recordConfiguration(config); + } + initializationEvents.sdkInitializationStarted(); + + // Global attributes + if (config.hasGlobalAttributes()) { + // Add span processor that appends global attributes. + GlobalAttributesSpanAppender appender = + GlobalAttributesSpanAppender.create(config.getGlobalAttributes()); + addTracerProviderCustomizer( + (tracerProviderBuilder, app) -> + tracerProviderBuilder.addSpanProcessor(appender)); + } + + // Network specific attributes + if (config.shouldIncludeNetworkAttributes()) { + // Add span processor that appends network attributes. + CurrentNetworkProvider currentNetworkProvider = + CurrentNetworkProvider.createAndStart(application); + addTracerProviderCustomizer( + (tracerProviderBuilder, app) -> { + SpanProcessor networkAttributesSpanAppender = + NetworkAttributesSpanAppender.create(currentNetworkProvider); + return tracerProviderBuilder.addSpanProcessor( + networkAttributesSpanAppender); + }); + initializationEvents.currentNetworkProviderInitialized(); + } + + // Add span processor that appends screen attribute(s) + if (config.shouldIncludeScreenAttributes()) { + addTracerProviderCustomizer( + (tracerProviderBuilder, app) -> { + SpanProcessor screenAttributesAppender = + new ScreenAttributesSpanProcessor(visibleScreenTracker); + return tracerProviderBuilder.addSpanProcessor(screenAttributesAppender); + }); + } + } + private SdkTracerProvider buildTracerProvider(SessionId sessionId, Application application) { SdkTracerProviderBuilder tracerProviderBuilder = SdkTracerProvider.builder() diff --git a/instrumentation/src/main/java/io/opentelemetry/android/OtelAndroidConfig.java b/instrumentation/src/main/java/io/opentelemetry/android/OtelAndroidConfig.java new file mode 100644 index 000000000..36e4fc6fa --- /dev/null +++ b/instrumentation/src/main/java/io/opentelemetry/android/OtelAndroidConfig.java @@ -0,0 +1,88 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.android; + +import io.opentelemetry.android.instrumentation.network.CurrentNetworkProvider; +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.common.AttributesBuilder; + +/** + * Configuration object for OpenTelemetry Android. The configuration items in this class will be + * used in the OpenTelemetryRumBuilder to wire up and enable/disable various mobile instrumentation + * components. + */ +public class OtelAndroidConfig { + + private AttributesBuilder globalAttributes = Attributes.builder(); + private boolean includeNetworkAttributes = true; + private boolean generateSdkInitializationEvents = true; + private boolean includeScreenAttributes = true; + + /** + * Configures the set of global attributes to emit with every span and event. Any existing + * configured attributes will be dropped. Default = none. + */ + public OtelAndroidConfig setGlobalAttributes(Attributes attributes) { + globalAttributes = attributes.toBuilder(); + return this; + } + + boolean hasGlobalAttributes() { + return !globalAttributes.build().isEmpty(); + } + + Attributes getGlobalAttributes() { + return globalAttributes.build(); + } + + /** + * Disables the collection of runtime network attributes. See {@link CurrentNetworkProvider} for + * more information. Default = true. + * + * @return this + */ + public OtelAndroidConfig disableNetworkAttributes() { + includeNetworkAttributes = false; + return this; + } + + /** Returns true if runtime network attributes are enabled, false otherwise. */ + public boolean shouldIncludeNetworkAttributes() { + return includeNetworkAttributes; + } + + /** + * Disables the collection of events related to the initialization of the OTel Android SDK + * itself. Default = true. + * + * @return this + */ + public OtelAndroidConfig disableSdkInitializationEvents() { + this.generateSdkInitializationEvents = false; + return this; + } + + /** Returns true if the SDK is configured to generate initialization events, false otherwise. */ + public boolean shouldGenerateSdkInitializationEvents() { + return generateSdkInitializationEvents; + } + + /** + * Call this to disable the collection of screen attributes. See {@link + * ScreenAttributesSpanProcessor} for more information. Default = true. + * + * @return this + */ + public OtelAndroidConfig disableScreenAttributes() { + this.includeScreenAttributes = false; + return this; + } + + /** Return true if the SDK should be configured to report screen attributes. */ + public boolean shouldIncludeScreenAttributes() { + return includeScreenAttributes; + } +} diff --git a/instrumentation/src/main/java/io/opentelemetry/android/ScreenAttributesSpanProcessor.java b/instrumentation/src/main/java/io/opentelemetry/android/ScreenAttributesSpanProcessor.java new file mode 100644 index 000000000..57c0d411c --- /dev/null +++ b/instrumentation/src/main/java/io/opentelemetry/android/ScreenAttributesSpanProcessor.java @@ -0,0 +1,44 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.android; + +import static io.opentelemetry.android.RumConstants.SCREEN_NAME_KEY; + +import io.opentelemetry.android.instrumentation.activity.VisibleScreenTracker; +import io.opentelemetry.context.Context; +import io.opentelemetry.sdk.trace.ReadWriteSpan; +import io.opentelemetry.sdk.trace.ReadableSpan; +import io.opentelemetry.sdk.trace.SpanProcessor; + +class ScreenAttributesSpanProcessor implements SpanProcessor { + + private final VisibleScreenTracker visibleScreenTracker; + + public ScreenAttributesSpanProcessor(VisibleScreenTracker visibleScreenTracker) { + this.visibleScreenTracker = visibleScreenTracker; + } + + @Override + public void onStart(Context parentContext, ReadWriteSpan span) { + String currentScreen = visibleScreenTracker.getCurrentlyVisibleScreen(); + span.setAttribute(SCREEN_NAME_KEY, currentScreen); + } + + @Override + public boolean isStartRequired() { + return true; + } + + @Override + public void onEnd(ReadableSpan span) { + // nop + } + + @Override + public boolean isEndRequired() { + return false; + } +} diff --git a/instrumentation/src/main/java/io/opentelemetry/android/instrumentation/startup/InitializationEvents.java b/instrumentation/src/main/java/io/opentelemetry/android/instrumentation/startup/InitializationEvents.java new file mode 100644 index 000000000..0abfc37da --- /dev/null +++ b/instrumentation/src/main/java/io/opentelemetry/android/instrumentation/startup/InitializationEvents.java @@ -0,0 +1,29 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.android.instrumentation.startup; + +import io.opentelemetry.android.OtelAndroidConfig; + +public interface InitializationEvents { + + void sdkInitializationStarted(); + + void recordConfiguration(OtelAndroidConfig config); + + void currentNetworkProviderInitialized(); + + InitializationEvents NO_OP = + new InitializationEvents() { + @Override + public void sdkInitializationStarted() {} + + @Override + public void recordConfiguration(OtelAndroidConfig config) {} + + @Override + public void currentNetworkProviderInitialized() {} + }; +} diff --git a/instrumentation/src/main/java/io/opentelemetry/android/instrumentation/startup/SdkInitializationEvents.java b/instrumentation/src/main/java/io/opentelemetry/android/instrumentation/startup/SdkInitializationEvents.java new file mode 100644 index 000000000..b31765e2e --- /dev/null +++ b/instrumentation/src/main/java/io/opentelemetry/android/instrumentation/startup/SdkInitializationEvents.java @@ -0,0 +1,26 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.android.instrumentation.startup; + +import io.opentelemetry.android.OtelAndroidConfig; + +public class SdkInitializationEvents implements InitializationEvents { + + @Override + public void sdkInitializationStarted() { + // TODO: Build me + } + + @Override + public void recordConfiguration(OtelAndroidConfig config) { + // TODO: Build me (create event containing the config params for the sdk) + } + + @Override + public void currentNetworkProviderInitialized() { + // TODO: Build me + } +} diff --git a/instrumentation/src/test/java/io/opentelemetry/android/ScreenAttributesSpanProcessorTest.java b/instrumentation/src/test/java/io/opentelemetry/android/ScreenAttributesSpanProcessorTest.java new file mode 100644 index 000000000..fe96da9e6 --- /dev/null +++ b/instrumentation/src/test/java/io/opentelemetry/android/ScreenAttributesSpanProcessorTest.java @@ -0,0 +1,41 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.android; + +import static io.opentelemetry.android.RumConstants.SCREEN_NAME_KEY; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import io.opentelemetry.android.instrumentation.activity.VisibleScreenTracker; +import io.opentelemetry.context.Context; +import io.opentelemetry.sdk.trace.ReadWriteSpan; +import io.opentelemetry.sdk.trace.ReadableSpan; +import org.junit.jupiter.api.Test; + +class ScreenAttributesSpanProcessorTest { + + @Test + void append() { + String screenName = "my cool screen"; + VisibleScreenTracker visibleScreenTracker = mock(VisibleScreenTracker.class); + Context contenxt = mock(Context.class); + ReadWriteSpan span = mock(ReadWriteSpan.class); + + when(visibleScreenTracker.getCurrentlyVisibleScreen()).thenReturn(screenName); + + ScreenAttributesSpanProcessor testClass = + new ScreenAttributesSpanProcessor(visibleScreenTracker); + assertThat(testClass.isStartRequired()).isTrue(); + assertThat(testClass.isEndRequired()).isFalse(); + assertThatCode(() -> testClass.onEnd(mock(ReadableSpan.class))).doesNotThrowAnyException(); + + testClass.onStart(contenxt, span); + verify(span).setAttribute(SCREEN_NAME_KEY, screenName); + } +} From a35d4d9d028a8046325c2b46bda64eb92c81dc2f Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Thu, 19 Oct 2023 16:46:58 -0700 Subject: [PATCH 2/3] fix tests --- .../android/OpenTelemetryRumBuilderTest.java | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/instrumentation/src/test/java/io/opentelemetry/android/OpenTelemetryRumBuilderTest.java b/instrumentation/src/test/java/io/opentelemetry/android/OpenTelemetryRumBuilderTest.java index 68c38ac6a..3619ce67f 100644 --- a/instrumentation/src/test/java/io/opentelemetry/android/OpenTelemetryRumBuilderTest.java +++ b/instrumentation/src/test/java/io/opentelemetry/android/OpenTelemetryRumBuilderTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.android; +import static io.opentelemetry.android.RumConstants.SCREEN_NAME_KEY; import static io.opentelemetry.android.RumConstants.SESSION_ID_KEY; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; @@ -17,6 +18,7 @@ import android.app.Activity; import android.app.Application; +import androidx.annotation.NonNull; import io.opentelemetry.android.instrumentation.ApplicationStateListener; import io.opentelemetry.api.trace.Span; import io.opentelemetry.context.Context; @@ -53,7 +55,7 @@ class OpenTelemetryRumBuilderTest { @Test void shouldRegisterApplicationStateWatcher() { - OpenTelemetryRum.builder(application).build(); + makeBuilder().build(); verify(application).registerActivityLifecycleCallbacks(isA(ApplicationStateWatcher.class)); } @@ -61,7 +63,7 @@ void shouldRegisterApplicationStateWatcher() { @Test void shouldBuildTracerProvider() { OpenTelemetryRum openTelemetryRum = - OpenTelemetryRum.builder(application) + makeBuilder() .setResource(resource) .addTracerProviderCustomizer( (tracerProviderBuilder, app) -> @@ -82,12 +84,13 @@ void shouldBuildTracerProvider() { assertThat(spans.get(0)) .hasName("test span") .hasResource(resource) - .hasAttributesSatisfyingExactly(equalTo(SESSION_ID_KEY, sessionId)); + .hasAttributesSatisfyingExactly( + equalTo(SESSION_ID_KEY, sessionId), equalTo(SCREEN_NAME_KEY, "unknown")); } @Test void shouldInstallInstrumentation() { - OpenTelemetryRum.builder(application) + OpenTelemetryRum.builder(application, buildConfig()) .addInstrumentation( instrumentedApplication -> { assertThat(instrumentedApplication.getApplication()) @@ -105,6 +108,10 @@ void shouldInstallInstrumentation() { verify(listener).onApplicationBackgrounded(); } + private OtelAndroidConfig buildConfig() { + return new OtelAndroidConfig().disableNetworkAttributes(); + } + @Test void canAddPropagator() { Context context = Context.root(); @@ -116,10 +123,7 @@ void canAddPropagator() { when(customPropagator.extract(context, carrier, getter)).thenReturn(expected); - OpenTelemetryRum rum = - OpenTelemetryRum.builder(application) - .addPropagatorCustomizer(x -> customPropagator) - .build(); + OpenTelemetryRum rum = makeBuilder().addPropagatorCustomizer(x -> customPropagator).build(); Context result = rum.getOpenTelemetry() .getPropagators() @@ -132,10 +136,7 @@ void canAddPropagator() { void canSetPropagator() { TextMapPropagator customPropagator = mock(TextMapPropagator.class); - OpenTelemetryRum rum = - OpenTelemetryRum.builder(application) - .addPropagatorCustomizer(x -> customPropagator) - .build(); + OpenTelemetryRum rum = makeBuilder().addPropagatorCustomizer(x -> customPropagator).build(); TextMapPropagator result = rum.getOpenTelemetry().getPropagators().getTextMapPropagator(); assertThat(result).isSameAs(customPropagator); } @@ -144,8 +145,7 @@ void canSetPropagator() { void setSpanExporterCustomizer() { SpanExporter exporter = mock(SpanExporter.class); Function customizer = x -> exporter; - OpenTelemetryRum rum = - OpenTelemetryRum.builder(application).addSpanExporterCustomizer(customizer).build(); + OpenTelemetryRum rum = makeBuilder().addSpanExporterCustomizer(customizer).build(); Span span = rum.getOpenTelemetry().getTracer("test").spanBuilder("foo").startSpan(); try (Scope scope = span.makeCurrent()) { // no-op @@ -156,4 +156,9 @@ void setSpanExporterCustomizer() { await().atMost(Duration.ofSeconds(30)) .untilAsserted(() -> verify(exporter).export(anyCollection())); } + + @NonNull + private OpenTelemetryRumBuilder makeBuilder() { + return OpenTelemetryRum.builder(application, buildConfig()); + } } From 6b659ad1d4029ec307de5e7bdf24062918328004 Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Wed, 25 Oct 2023 13:49:56 -0700 Subject: [PATCH 3/3] rename to match other components --- .../io/opentelemetry/android/OpenTelemetryRum.java | 6 +++--- .../opentelemetry/android/OpenTelemetryRumBuilder.java | 4 ++-- .../{OtelAndroidConfig.java => OtelRumConfig.java} | 10 +++++----- .../instrumentation/startup/InitializationEvents.java | 6 +++--- .../startup/SdkInitializationEvents.java | 4 ++-- .../android/OpenTelemetryRumBuilderTest.java | 4 ++-- 6 files changed, 17 insertions(+), 17 deletions(-) rename instrumentation/src/main/java/io/opentelemetry/android/{OtelAndroidConfig.java => OtelRumConfig.java} (89%) diff --git a/instrumentation/src/main/java/io/opentelemetry/android/OpenTelemetryRum.java b/instrumentation/src/main/java/io/opentelemetry/android/OpenTelemetryRum.java index 834ca98b8..e06546a41 100644 --- a/instrumentation/src/main/java/io/opentelemetry/android/OpenTelemetryRum.java +++ b/instrumentation/src/main/java/io/opentelemetry/android/OpenTelemetryRum.java @@ -25,13 +25,13 @@ public interface OpenTelemetryRum { * configuration. Use this version if you would like to configure individual aspects of the * OpenTelemetry SDK but would still prefer to allow OpenTelemetry RUM to create the SDK for * you. For additional configuration, call the two-argument version of build and pass it your - * {@link OtelAndroidConfig} instance. If you would like to "bring your own" SDK, call the + * {@link OtelRumConfig} instance. If you would like to "bring your own" SDK, call the * two-argument version that takes the SDK as a parameter. * * @param application The {@link Application} that is being instrumented. */ static OpenTelemetryRumBuilder builder(Application application) { - return builder(application, new OtelAndroidConfig()); + return builder(application, new OtelRumConfig()); } /** @@ -45,7 +45,7 @@ static OpenTelemetryRumBuilder builder(Application application) { * @param config * @return */ - static OpenTelemetryRumBuilder builder(Application application, OtelAndroidConfig config) { + static OpenTelemetryRumBuilder builder(Application application, OtelRumConfig config) { return new OpenTelemetryRumBuilder(application, config); } diff --git a/instrumentation/src/main/java/io/opentelemetry/android/OpenTelemetryRumBuilder.java b/instrumentation/src/main/java/io/opentelemetry/android/OpenTelemetryRumBuilder.java index a6868f293..034760707 100644 --- a/instrumentation/src/main/java/io/opentelemetry/android/OpenTelemetryRumBuilder.java +++ b/instrumentation/src/main/java/io/opentelemetry/android/OpenTelemetryRumBuilder.java @@ -53,7 +53,7 @@ public final class OpenTelemetryRumBuilder { meterProviderCustomizers = new ArrayList<>(); private final List> loggerProviderCustomizers = new ArrayList<>(); - private final OtelAndroidConfig config; + private final OtelRumConfig config; private final VisibleScreenTracker visibleScreenTracker = new VisibleScreenTracker(); private Function spanExporterCustomizer = a -> a; @@ -71,7 +71,7 @@ private static TextMapPropagator buildDefaultPropagator() { W3CTraceContextPropagator.getInstance(), W3CBaggagePropagator.getInstance()); } - OpenTelemetryRumBuilder(Application application, OtelAndroidConfig config) { + OpenTelemetryRumBuilder(Application application, OtelRumConfig config) { this.application = application; SessionIdTimeoutHandler timeoutHandler = new SessionIdTimeoutHandler(); this.sessionId = new SessionId(timeoutHandler); diff --git a/instrumentation/src/main/java/io/opentelemetry/android/OtelAndroidConfig.java b/instrumentation/src/main/java/io/opentelemetry/android/OtelRumConfig.java similarity index 89% rename from instrumentation/src/main/java/io/opentelemetry/android/OtelAndroidConfig.java rename to instrumentation/src/main/java/io/opentelemetry/android/OtelRumConfig.java index 36e4fc6fa..e8f7a1add 100644 --- a/instrumentation/src/main/java/io/opentelemetry/android/OtelAndroidConfig.java +++ b/instrumentation/src/main/java/io/opentelemetry/android/OtelRumConfig.java @@ -14,7 +14,7 @@ * used in the OpenTelemetryRumBuilder to wire up and enable/disable various mobile instrumentation * components. */ -public class OtelAndroidConfig { +public class OtelRumConfig { private AttributesBuilder globalAttributes = Attributes.builder(); private boolean includeNetworkAttributes = true; @@ -25,7 +25,7 @@ public class OtelAndroidConfig { * Configures the set of global attributes to emit with every span and event. Any existing * configured attributes will be dropped. Default = none. */ - public OtelAndroidConfig setGlobalAttributes(Attributes attributes) { + public OtelRumConfig setGlobalAttributes(Attributes attributes) { globalAttributes = attributes.toBuilder(); return this; } @@ -44,7 +44,7 @@ Attributes getGlobalAttributes() { * * @return this */ - public OtelAndroidConfig disableNetworkAttributes() { + public OtelRumConfig disableNetworkAttributes() { includeNetworkAttributes = false; return this; } @@ -60,7 +60,7 @@ public boolean shouldIncludeNetworkAttributes() { * * @return this */ - public OtelAndroidConfig disableSdkInitializationEvents() { + public OtelRumConfig disableSdkInitializationEvents() { this.generateSdkInitializationEvents = false; return this; } @@ -76,7 +76,7 @@ public boolean shouldGenerateSdkInitializationEvents() { * * @return this */ - public OtelAndroidConfig disableScreenAttributes() { + public OtelRumConfig disableScreenAttributes() { this.includeScreenAttributes = false; return this; } diff --git a/instrumentation/src/main/java/io/opentelemetry/android/instrumentation/startup/InitializationEvents.java b/instrumentation/src/main/java/io/opentelemetry/android/instrumentation/startup/InitializationEvents.java index 0abfc37da..5fae104ca 100644 --- a/instrumentation/src/main/java/io/opentelemetry/android/instrumentation/startup/InitializationEvents.java +++ b/instrumentation/src/main/java/io/opentelemetry/android/instrumentation/startup/InitializationEvents.java @@ -5,13 +5,13 @@ package io.opentelemetry.android.instrumentation.startup; -import io.opentelemetry.android.OtelAndroidConfig; +import io.opentelemetry.android.OtelRumConfig; public interface InitializationEvents { void sdkInitializationStarted(); - void recordConfiguration(OtelAndroidConfig config); + void recordConfiguration(OtelRumConfig config); void currentNetworkProviderInitialized(); @@ -21,7 +21,7 @@ public interface InitializationEvents { public void sdkInitializationStarted() {} @Override - public void recordConfiguration(OtelAndroidConfig config) {} + public void recordConfiguration(OtelRumConfig config) {} @Override public void currentNetworkProviderInitialized() {} diff --git a/instrumentation/src/main/java/io/opentelemetry/android/instrumentation/startup/SdkInitializationEvents.java b/instrumentation/src/main/java/io/opentelemetry/android/instrumentation/startup/SdkInitializationEvents.java index b31765e2e..ed20a7fc8 100644 --- a/instrumentation/src/main/java/io/opentelemetry/android/instrumentation/startup/SdkInitializationEvents.java +++ b/instrumentation/src/main/java/io/opentelemetry/android/instrumentation/startup/SdkInitializationEvents.java @@ -5,7 +5,7 @@ package io.opentelemetry.android.instrumentation.startup; -import io.opentelemetry.android.OtelAndroidConfig; +import io.opentelemetry.android.OtelRumConfig; public class SdkInitializationEvents implements InitializationEvents { @@ -15,7 +15,7 @@ public void sdkInitializationStarted() { } @Override - public void recordConfiguration(OtelAndroidConfig config) { + public void recordConfiguration(OtelRumConfig config) { // TODO: Build me (create event containing the config params for the sdk) } diff --git a/instrumentation/src/test/java/io/opentelemetry/android/OpenTelemetryRumBuilderTest.java b/instrumentation/src/test/java/io/opentelemetry/android/OpenTelemetryRumBuilderTest.java index 3619ce67f..3e6aa556f 100644 --- a/instrumentation/src/test/java/io/opentelemetry/android/OpenTelemetryRumBuilderTest.java +++ b/instrumentation/src/test/java/io/opentelemetry/android/OpenTelemetryRumBuilderTest.java @@ -108,8 +108,8 @@ void shouldInstallInstrumentation() { verify(listener).onApplicationBackgrounded(); } - private OtelAndroidConfig buildConfig() { - return new OtelAndroidConfig().disableNetworkAttributes(); + private OtelRumConfig buildConfig() { + return new OtelRumConfig().disableNetworkAttributes(); } @Test