From d01f7fea98a402c00bc07c4ba1ab14158b4e9d0f Mon Sep 17 00:00:00 2001 From: Mateusz Rzeszutek Date: Thu, 6 Oct 2022 11:30:46 +0200 Subject: [PATCH] Remove deprecated code (#372) --- .../src/main/java/com/splunk/rum/Config.java | 476 ------------------ .../java/com/splunk/rum/NoOpSplunkRum.java | 7 - .../main/java/com/splunk/rum/SplunkRum.java | 42 -- .../test/java/com/splunk/rum/ConfigTest.java | 131 ----- .../com/splunk/rum/NoOpSplunkRumTest.java | 1 - 5 files changed, 657 deletions(-) delete mode 100644 splunk-otel-android/src/main/java/com/splunk/rum/Config.java delete mode 100644 splunk-otel-android/src/test/java/com/splunk/rum/ConfigTest.java diff --git a/splunk-otel-android/src/main/java/com/splunk/rum/Config.java b/splunk-otel-android/src/main/java/com/splunk/rum/Config.java deleted file mode 100644 index 6b5228b7a..000000000 --- a/splunk-otel-android/src/main/java/com/splunk/rum/Config.java +++ /dev/null @@ -1,476 +0,0 @@ -/* - * Copyright Splunk Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.splunk.rum; - -import static com.splunk.rum.DeviceSpanStorageLimiter.DEFAULT_MAX_STORAGE_USE_MB; -import static java.util.Objects.requireNonNull; - -import android.util.Log; -import androidx.annotation.Nullable; -import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.semconv.resource.attributes.ResourceAttributes; -import java.time.Duration; -import java.util.function.Consumer; - -/** - * Configuration class for the Splunk Android RUM (Real User Monitoring) library. - * - *

Both the beaconUrl and the rumAuthToken are mandatory configuration settings. Trying to build - * a Config instance without both of these items specified will result in an exception being thrown. - * - * @deprecated Use {@link #builder()} and the {@link SplunkRumBuilder} to configure a {@link - * SplunkRum} instance. - */ -@Deprecated -public class Config { - - private final String beaconEndpoint; - private final String rumAccessToken; - private final boolean debugEnabled; - private final String applicationName; - private final boolean crashReportingEnabled; - private final boolean networkMonitorEnabled; - private final boolean anrDetectionEnabled; - private final Attributes globalAttributes; - private final Consumer spanFilterBuilderConfigurer; - private final boolean slowRenderingDetectionEnabled; - private final Duration slowRenderingDetectionPollInterval; - private final boolean diskBufferingEnabled; - private final int maxUsageMegabytes; - private final boolean sessionBasedSamplerEnabled; - private final double sessionBasedSamplerRatio; - - private Config(Builder builder) { - this.beaconEndpoint = requireNonNull(builder.beaconEndpoint); - this.rumAccessToken = requireNonNull(builder.rumAccessToken); - this.debugEnabled = builder.debugEnabled; - this.applicationName = requireNonNull(builder.applicationName); - this.crashReportingEnabled = builder.crashReportingEnabled; - this.globalAttributes = addDeploymentEnvironment(builder); - this.networkMonitorEnabled = builder.networkMonitorEnabled; - this.anrDetectionEnabled = builder.anrDetectionEnabled; - this.slowRenderingDetectionPollInterval = builder.slowRenderingDetectionPollInterval; - this.slowRenderingDetectionEnabled = builder.slowRenderingDetectionEnabled; - this.spanFilterBuilderConfigurer = builder.spanFilterBuilderConfigurer; - this.diskBufferingEnabled = builder.diskBufferingEnabled; - this.maxUsageMegabytes = builder.maxUsageMegabytes; - this.sessionBasedSamplerEnabled = builder.sessionBasedSamplerEnabled; - this.sessionBasedSamplerRatio = builder.sessionBasedSamplerRatio; - } - - private Attributes addDeploymentEnvironment(Builder builder) { - Attributes globalAttributes = builder.globalAttributes; - if (builder.deploymentEnvironment != null) { - globalAttributes = - globalAttributes.toBuilder() - .put( - ResourceAttributes.DEPLOYMENT_ENVIRONMENT, - builder.deploymentEnvironment) - .build(); - } - return globalAttributes; - } - - /** The configured "beacon" URL for the RUM library. */ - public String getBeaconEndpoint() { - return beaconEndpoint; - } - - /** The configured RUM access token for the library. */ - public String getRumAccessToken() { - return rumAccessToken; - } - - /** Is debug mode enabled. */ - public boolean isDebugEnabled() { - return debugEnabled; - } - - /** The name under which this application will be reported to the Splunk RUM system. */ - public String getApplicationName() { - return applicationName; - } - - /** Is the crash-reporting feature enabled or not. */ - public boolean isCrashReportingEnabled() { - return crashReportingEnabled; - } - - /** Is the slow rendering detection feature enabled or not. */ - public boolean isSlowRenderingDetectionEnabled() { - return slowRenderingDetectionEnabled; - } - - /** - * The set of {@link Attributes} which will be applied to every span generated by the RUM - * instrumentation. - */ - public Attributes getGlobalAttributes() { - return globalAttributes; - } - - /** Is the network monitoring feature enabled or not. */ - public boolean isNetworkMonitorEnabled() { - return networkMonitorEnabled; - } - - /** Is the ANR detection feature enabled or not. */ - public boolean isAnrDetectionEnabled() { - return anrDetectionEnabled; - } - - /** - * Returns the number of ms to be used for polling frame render durations, used in slow render - * and freeze draw detection. - * - * @return Duration of the polling interval. - */ - public Duration getSlowRenderingDetectionPollInterval() { - return slowRenderingDetectionPollInterval; - } - - /** Is the storage-based buffering of telemetry enabled or not. */ - public boolean isDiskBufferingEnabled() { - return diskBufferingEnabled; - } - - /** - * Returns the max number of megabytes that will be used to buffer telemetry data in storage. If - * this value is exceeded, older telemetry will be deleted until the usage is reduced. - */ - public int getMaxUsageMegabytes() { - return maxUsageMegabytes; - } - - /** Is session-based sampling of traces enabled or not. */ - public boolean isSessionBasedSamplerEnabled() { - return sessionBasedSamplerEnabled; - } - - /** Get ratio of sessions that get sampled (0.0 - 1.0, where 1 is all sessions). */ - public double getSessionBasedSamplerRatio() { - return sessionBasedSamplerRatio; - } - - /** - * Create a new instance of the {@link Builder} class. All default configuration options will be - * pre-populated. - */ - public static Builder builder() { - return new Builder(); - } - - SplunkRumBuilder toSplunkRumBuilder() { - SplunkRumBuilder splunkRumBuilder = - new SplunkRumBuilder() - .setApplicationName(applicationName) - .setBeaconEndpoint(beaconEndpoint) - .setRumAccessToken(rumAccessToken); - if (debugEnabled) { - splunkRumBuilder.enableDebug(); - } - if (diskBufferingEnabled) { - splunkRumBuilder.enableDiskBuffering(); - } - if (!crashReportingEnabled) { - splunkRumBuilder.disableCrashReporting(); - } - if (!networkMonitorEnabled) { - splunkRumBuilder.disableNetworkMonitorEnabled(); - } - if (!anrDetectionEnabled) { - splunkRumBuilder.disableAnrDetection(); - } - if (!slowRenderingDetectionEnabled) { - splunkRumBuilder.disableSlowRenderingDetection(); - } - splunkRumBuilder - .setSlowRenderingDetectionPollInterval(slowRenderingDetectionPollInterval) - .setGlobalAttributes(globalAttributes) - .filterSpans(spanFilterBuilderConfigurer) - .limitDiskUsageMegabytes(maxUsageMegabytes); - if (sessionBasedSamplerEnabled) { - splunkRumBuilder.enableSessionBasedSampling(sessionBasedSamplerRatio); - } - return splunkRumBuilder; - } - - /** - * Builder class for the Splunk RUM {@link Config} class. - * - * @deprecated Use {@link #builder()} and the {@link SplunkRumBuilder} to configure a {@link - * SplunkRum} instance. - */ - @Deprecated - public static class Builder { - - private static final Duration DEFAULT_SLOW_RENDERING_DETECTION_POLL_INTERVAL = - Duration.ofSeconds(1); - - private boolean networkMonitorEnabled = true; - private boolean anrDetectionEnabled = true; - private boolean slowRenderingDetectionEnabled = true; - private boolean diskBufferingEnabled = false; - @Nullable private String beaconEndpoint; - @Nullable private String rumAccessToken; - private boolean debugEnabled = false; - @Nullable private String applicationName; - private boolean crashReportingEnabled = true; - private Attributes globalAttributes = Attributes.empty(); - @Nullable private String deploymentEnvironment; - private final SpanFilterBuilder spanFilterBuilder = new SpanFilterBuilder(); - private Consumer spanFilterBuilderConfigurer = f -> {}; - @Nullable private String realm; - private Duration slowRenderingDetectionPollInterval = - DEFAULT_SLOW_RENDERING_DETECTION_POLL_INTERVAL; - private int maxUsageMegabytes = DEFAULT_MAX_STORAGE_USE_MB; - private boolean sessionBasedSamplerEnabled = false; - private double sessionBasedSamplerRatio = 1.0; - - /** Create a new instance of {@link Config} from the options provided. */ - public Config build() { - if (rumAccessToken == null || beaconEndpoint == null || applicationName == null) { - throw new IllegalStateException( - "You must provide a rumAccessToken, a realm (or full beaconEndpoint), and an applicationName to create a valid Config instance."); - } - return new Config(this); - } - - /** - * Assign the "beacon" endpoint URL to be used by the RUM library. - * - *

Note that if you are using standard Splunk ingest, it is simpler to just use {@link - * #realm(String)} and let this configuration set the full endpoint URL for you. - * - * @return {@code this}. - */ - public Builder beaconEndpoint(String beaconEndpoint) { - if (realm != null) { - Log.w( - SplunkRum.LOG_TAG, - "Explicitly setting the beaconEndpoint will override the realm configuration."); - realm = null; - } - this.beaconEndpoint = beaconEndpoint; - return this; - } - - /** - * Sets the realm for the beacon to send RUM telemetry to. This should be used in place of - * the {@link #beaconEndpoint(String)} method in most cases. - * - * @param realm A valid Splunk "realm" - * @return {@code this}. - */ - public Builder realm(String realm) { - if (beaconEndpoint != null && this.realm == null) { - Log.w( - SplunkRum.LOG_TAG, - "beaconEndpoint has already been set. Realm configuration will be ignored."); - return this; - } - this.beaconEndpoint = "https://rum-ingest." + realm + ".signalfx.com/v1/rum"; - this.realm = realm; - return this; - } - - /** - * Assign the RUM auth token to be used by the RUM library. - * - * @return {@code this}. - */ - public Builder rumAccessToken(String rumAuthToken) { - this.rumAccessToken = rumAuthToken; - return this; - } - - /** - * Enable/disable debugging information to be emitted from the RUM library. This is set to - * {@code false} by default. - * - * @return {@code this}. - */ - public Builder debugEnabled(boolean enabled) { - this.debugEnabled = enabled; - return this; - } - - /** - * Enables the storage-based buffering of telemetry. By default, telemetry will be buffered - * in memory and throttled. If this feature is enabled, telemetry is buffered in the local - * storage until it is exported. - * - * @return {@code this}. - */ - public Builder diskBufferingEnabled(boolean enabled) { - this.diskBufferingEnabled = enabled; - return this; - } - - /** - * Enable/disable the crash reporting feature. Enabled by default. - * - * @return {@code this}. - */ - public Builder crashReportingEnabled(boolean enabled) { - this.crashReportingEnabled = enabled; - return this; - } - - /** - * Enable/disable the network monitoring feature. Enabled by default. - * - * @return {@code this}. - */ - public Builder networkMonitorEnabled(boolean enabled) { - this.networkMonitorEnabled = enabled; - return this; - } - - /** - * Assign an application name that will be used to identify your application in the Splunk - * RUM UI. - * - * @return {@code this}. - */ - public Builder applicationName(String applicationName) { - this.applicationName = applicationName; - return this; - } - - /** - * Enable/disable the ANR detection feature. Enabled by default. If enabled, if the main - * thread is unresponsive for 5s or more, an event including the main thread's stack trace - * will be reported to the RUM system. - * - * @return {@code this}. - */ - public Builder anrDetectionEnabled(boolean enabled) { - this.anrDetectionEnabled = enabled; - return this; - } - - /** - * Enable/disable the slow rendering detection feature. Enabled by default. - * - * @return {@code this}. - */ - public Builder slowRenderingDetectionEnabled(boolean enabled) { - slowRenderingDetectionEnabled = enabled; - return this; - } - - /** - * Configures the rate at which frame render durations are polled. - * - * @param interval The period that should be used for polling. - * @return {@code this}. - */ - public Builder slowRenderingDetectionPollInterval(Duration interval) { - if (interval.toMillis() <= 0) { - Log.e( - SplunkRum.LOG_TAG, - "invalid slowRenderPollingDuration: " + interval + " is not positive"); - return this; - } - this.slowRenderingDetectionPollInterval = interval; - return this; - } - - /** - * Provide a set of global {@link Attributes} that will be applied to every span generated - * by the RUM instrumentation. - * - * @return {@code this}. - */ - public Builder globalAttributes(Attributes attributes) { - this.globalAttributes = attributes == null ? Attributes.empty() : attributes; - return this; - } - - /** - * Assign the deployment environment for this RUM instance. Will be passed along as a span - * attribute to help identify in the Splunk RUM UI. - * - * @param environment The deployment environment name. - * @return {@code this}. - */ - public Builder deploymentEnvironment(String environment) { - this.deploymentEnvironment = environment; - return this; - } - - /** - * Configure span data filtering. - * - * @param configurer A function that will configure the passed {@link SpanFilterBuilder}. - * @return {@code this}. - */ - public Builder filterSpans(Consumer configurer) { - Consumer previous = this.spanFilterBuilderConfigurer; - this.spanFilterBuilderConfigurer = previous.andThen(configurer); - configurer.accept(spanFilterBuilder); - return this; - } - - /** - * Sets the limit of the max number of megabytes that will be used to buffer telemetry data - * in storage. When this value is exceeded, older telemetry will be deleted until the usage - * is reduced. - */ - public Builder limitDiskUsageMegabytes(int maxUsageMegabytes) { - this.maxUsageMegabytes = maxUsageMegabytes; - return this; - } - - /** - * Enable/disable session-based sampling of traces. Disabled by default. - * - * @return {@code this}. - */ - public Builder sessionBasedSamplingEnabled(boolean enabled) { - this.sessionBasedSamplerEnabled = enabled; - return this; - } - - /** - * Set ratio of sessions that get sampled (0.0 - 1.0, where 1 is all sessions). Default is - * 1.0. - * - * @return {@code this}. - */ - public Builder enableSessionBasedSampling(double ratio) { - if (ratio < 0.0) { - Log.e( - SplunkRum.LOG_TAG, - "invalid sessionBasedSamplingRatio: " + ratio + " must not be negative"); - return this; - } else if (ratio > 1.0) { - Log.e( - SplunkRum.LOG_TAG, - "invalid sessionBasedSamplingRatio: " - + ratio - + " must not be greater than 1.0"); - return this; - } - - this.sessionBasedSamplerEnabled = true; - this.sessionBasedSamplerRatio = ratio; - return this; - } - } -} diff --git a/splunk-otel-android/src/main/java/com/splunk/rum/NoOpSplunkRum.java b/splunk-otel-android/src/main/java/com/splunk/rum/NoOpSplunkRum.java index d4103400f..346daabf2 100644 --- a/splunk-otel-android/src/main/java/com/splunk/rum/NoOpSplunkRum.java +++ b/splunk-otel-android/src/main/java/com/splunk/rum/NoOpSplunkRum.java @@ -21,10 +21,8 @@ import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.api.trace.Tracer; -import io.opentelemetry.instrumentation.okhttp.v3_0.OkHttpTelemetry; import java.util.function.Consumer; import okhttp3.Call; -import okhttp3.Interceptor; import okhttp3.OkHttpClient; class NoOpSplunkRum extends SplunkRum { @@ -36,11 +34,6 @@ private NoOpSplunkRum() { super(null, null, null); } - @Override - public Interceptor createOkHttpRumInterceptor() { - return OkHttpTelemetry.create(OpenTelemetry.noop()).newInterceptor(); - } - @Override public Call.Factory createRumOkHttpCallFactory(OkHttpClient client) { return client; diff --git a/splunk-otel-android/src/main/java/com/splunk/rum/SplunkRum.java b/splunk-otel-android/src/main/java/com/splunk/rum/SplunkRum.java index c79312150..c6065163b 100644 --- a/splunk-otel-android/src/main/java/com/splunk/rum/SplunkRum.java +++ b/splunk-otel-android/src/main/java/com/splunk/rum/SplunkRum.java @@ -42,7 +42,6 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; import okhttp3.Call; -import okhttp3.Interceptor; import okhttp3.OkHttpClient; /** Entrypoint for the Splunk OpenTelemetry Instrumentation for Android. */ @@ -101,33 +100,6 @@ public static SplunkRumBuilder builder() { return new SplunkRumBuilder(); } - /** - * Create a new {@link Config.Builder} instance. - * - * @deprecated Use {@link #builder()} and the {@link SplunkRumBuilder} to configure a {@link - * SplunkRum} instance. - */ - @Deprecated - public static Config.Builder newConfigBuilder() { - return Config.builder(); - } - - /** - * Initialized the Splunk RUM library with the provided {@link Config} instance. Note: if you - * call this method more than once, only the first one will do anything. Repeated calls will - * just immediately return the previously configured instance. - * - * @param config The {@link Config} options to use for initialization. - * @param application The {@link Application} to be monitored. - * @return A fully initialized {@link SplunkRum} instance, ready for use. - * @deprecated Use {@link #builder()} and the {@link SplunkRumBuilder} to configure a {@link - * SplunkRum} instance. - */ - @Deprecated - public static SplunkRum initialize(Config config, Application application) { - return config.toSplunkRumBuilder().build(application); - } - // for testing purposes static SplunkRum initialize( SplunkRumBuilder builder, @@ -165,20 +137,6 @@ public static SplunkRum getInstance() { return INSTANCE; } - /** - * Create an OkHttp3 {@link Interceptor} configured with the OpenTelemetry instance backing this - * class. It will provide both standard OpenTelemetry spans and additionally Splunk RUM-specific - * attributes. - * - * @deprecated The OpenTelemetry {@link Interceptor} has been deprecated in favor of using an - * instrumented {@link okhttp3.Call.Factory} implementation. Please use {@link - * #createRumOkHttpCallFactory(OkHttpClient)}. - */ - @Deprecated - public Interceptor createOkHttpRumInterceptor() { - return createOkHttpTracing().newInterceptor(); - } - /** * Wrap the provided {@link OkHttpClient} with OpenTelemetry and RUM instrumentation. Since * {@link Call.Factory} is the primary useful interface implemented by the OkHttpClient, this diff --git a/splunk-otel-android/src/test/java/com/splunk/rum/ConfigTest.java b/splunk-otel-android/src/test/java/com/splunk/rum/ConfigTest.java deleted file mode 100644 index aa26296e6..000000000 --- a/splunk-otel-android/src/test/java/com/splunk/rum/ConfigTest.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright Splunk Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.splunk.rum; - -import static io.opentelemetry.api.common.AttributeKey.stringKey; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThrows; -import static org.junit.Assert.assertTrue; - -import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.semconv.resource.attributes.ResourceAttributes; -import org.junit.Test; - -public class ConfigTest { - - @Test - public void buildingRequiredFields() { - assertThrows(IllegalStateException.class, () -> Config.builder().build()); - assertThrows( - IllegalStateException.class, - () -> - Config.builder() - .rumAccessToken("abc123") - .beaconEndpoint("http://backend") - .build()); - assertThrows( - IllegalStateException.class, - () -> - Config.builder() - .beaconEndpoint("http://backend") - .applicationName("appName") - .build()); - assertThrows( - IllegalStateException.class, - () -> Config.builder().applicationName("appName").rumAccessToken("abc123").build()); - } - - @Test - public void creation() { - Attributes globalAttributes = Attributes.of(stringKey("cheese"), "Camembert"); - Attributes expectedFinalAttributes = - globalAttributes.toBuilder() - .put(ResourceAttributes.DEPLOYMENT_ENVIRONMENT, "production") - .build(); - Config config = - Config.builder() - .applicationName("appName") - .rumAccessToken("authToken") - .beaconEndpoint("http://beacon") - .debugEnabled(true) - .crashReportingEnabled(false) - .networkMonitorEnabled(false) - .anrDetectionEnabled(false) - .globalAttributes(globalAttributes) - .deploymentEnvironment("production") - .diskBufferingEnabled(true) - .build(); - assertNotNull(config); - assertEquals("appName", config.getApplicationName()); - assertEquals("authToken", config.getRumAccessToken()); - assertEquals("http://beacon", config.getBeaconEndpoint()); - assertTrue(config.isDebugEnabled()); - assertFalse(config.isCrashReportingEnabled()); - assertFalse(config.isNetworkMonitorEnabled()); - assertFalse(config.isAnrDetectionEnabled()); - assertEquals(expectedFinalAttributes, config.getGlobalAttributes()); - assertTrue(config.isDiskBufferingEnabled()); - } - - @Test - public void creation_default() { - Config config = - Config.builder() - .applicationName("appName") - .rumAccessToken("authToken") - .realm("foo") - .build(); - assertNotNull(config); - assertEquals("appName", config.getApplicationName()); - assertEquals("authToken", config.getRumAccessToken()); - assertEquals("https://rum-ingest.foo.signalfx.com/v1/rum", config.getBeaconEndpoint()); - assertFalse(config.isDebugEnabled()); - assertTrue(config.isCrashReportingEnabled()); - assertTrue(config.isNetworkMonitorEnabled()); - assertTrue(config.isAnrDetectionEnabled()); - assertEquals(Attributes.empty(), config.getGlobalAttributes()); - assertFalse(config.isDiskBufferingEnabled()); - } - - @Test - public void creation_nullHandling() { - Config config = - Config.builder() - .applicationName("appName") - .rumAccessToken("authToken") - .beaconEndpoint("http://beacon") - .globalAttributes(null) - .build(); - assertEquals(Attributes.empty(), config.getGlobalAttributes()); - } - - @Test - public void beaconOverridesRealm() { - Config config = - Config.builder() - .applicationName("appName") - .rumAccessToken("authToken") - .realm("us1") - .beaconEndpoint("http://beacon") - .globalAttributes(null) - .realm("us0") - .build(); - assertEquals("http://beacon", config.getBeaconEndpoint()); - } -} diff --git a/splunk-otel-android/src/test/java/com/splunk/rum/NoOpSplunkRumTest.java b/splunk-otel-android/src/test/java/com/splunk/rum/NoOpSplunkRumTest.java index 4052b8c08..c3caf5f25 100644 --- a/splunk-otel-android/src/test/java/com/splunk/rum/NoOpSplunkRumTest.java +++ b/splunk-otel-android/src/test/java/com/splunk/rum/NoOpSplunkRumTest.java @@ -35,7 +35,6 @@ public void doesNotThrow() { instance.addRumEvent("foo", Attributes.empty()); instance.addRumException(new RuntimeException(), Attributes.empty()); - assertNotNull(instance.createOkHttpRumInterceptor()); assertNotNull(instance.getOpenTelemetry()); assertNotNull(instance.getRumSessionId()); assertNotNull(instance.getTracer());