Skip to content

Commit

Permalink
Merge pull request #2185 from DataDog/nogorodnikov/rum-5830/fix-class…
Browse files Browse the repository at this point in the history
…castexception-in-datadoginterceptor

RUM-5830: Make no-op RUM monitor implementation returned by default to be `NoOpAdvancedRumMonitor`
  • Loading branch information
0xnm authored Aug 13, 2024
2 parents acc2b93 + 24864aa commit bbc7612
Show file tree
Hide file tree
Showing 5 changed files with 12 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import com.datadog.android.api.InternalLogger
import com.datadog.android.api.SdkCore
import com.datadog.android.api.feature.FeatureSdkCore
import com.datadog.android.rum.GlobalRumMonitor.get
import com.datadog.android.rum.internal.monitor.NoOpAdvancedRumMonitor
import java.util.Locale

/**
Expand Down Expand Up @@ -64,7 +65,7 @@ object GlobalRumMonitor {
InternalLogger.Target.USER,
{ NO_MONITOR_REGISTERED_MESSAGE.format(Locale.US, sdkCore.name) }
)
NoOpRumMonitor()
NoOpAdvancedRumMonitor()
} else {
monitor
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ package com.datadog.android.rum
import com.datadog.android.api.InternalLogger
import com.datadog.android.api.SdkCore
import com.datadog.android.api.feature.FeatureSdkCore
import com.datadog.android.rum.internal.monitor.NoOpAdvancedRumMonitor
import com.datadog.android.rum.utils.forge.Configurator
import com.datadog.android.rum.utils.verifyLog
import com.datadog.tools.unit.annotations.ProhibitLeavingStaticMocksIn
Expand Down Expand Up @@ -131,7 +132,7 @@ internal class GlobalRumMonitorTest {
}

@Test
fun `M return NoOpRumMonitor W registerIfAbsent(monitor) + get() {distinct cores}`() {
fun `M return NoOpAdvancedRumMonitor W registerIfAbsent(monitor) + get() {distinct cores}`() {
// Given
val mockSdkCore2 = mock<SdkCore>()

Expand All @@ -140,7 +141,7 @@ internal class GlobalRumMonitorTest {
val result = GlobalRumMonitor.get(mockSdkCore2)

// Then
assertThat(result).isInstanceOf(NoOpRumMonitor::class.java)
assertThat(result).isInstanceOf(NoOpAdvancedRumMonitor::class.java)
}

@Test
Expand All @@ -154,7 +155,7 @@ internal class GlobalRumMonitorTest {
val result = GlobalRumMonitor.get(mockSdkCore)

// Then
check(result is NoOpRumMonitor)
check(result is NoOpAdvancedRumMonitor)
mockInternalLogger.verifyLog(
InternalLogger.Level.WARN,
InternalLogger.Target.USER,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import com.datadog.android.core.sampling.RateBasedSampler
import com.datadog.android.rum.internal.RumFeature
import com.datadog.android.rum.internal.domain.scope.RumApplicationScope
import com.datadog.android.rum.internal.monitor.DatadogRumMonitor
import com.datadog.android.rum.internal.monitor.NoOpAdvancedRumMonitor
import com.datadog.android.rum.internal.net.RumRequestFactory
import com.datadog.android.rum.tracking.NoOpTrackingStrategy
import com.datadog.android.rum.tracking.NoOpViewTrackingStrategy
Expand Down Expand Up @@ -172,7 +173,7 @@ internal class RumTest {
Rum.UNEXPECTED_SDK_CORE_TYPE
)
verify(mockSdkCore, never()).registerFeature(any())
check(GlobalRumMonitor.get(mockSdkCore) is NoOpRumMonitor)
check(GlobalRumMonitor.get(mockSdkCore) is NoOpAdvancedRumMonitor)
}

@Test
Expand All @@ -197,7 +198,7 @@ internal class RumTest {
Rum.INVALID_APPLICATION_ID_ERROR_MESSAGE
)
verify(mockSdkCore, never()).registerFeature(any())
check(GlobalRumMonitor.get(mockSdkCore) is NoOpRumMonitor)
check(GlobalRumMonitor.get(mockSdkCore) is NoOpAdvancedRumMonitor)
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@ import com.datadog.android.core.internal.system.BuildSdkVersionProvider
import com.datadog.android.event.EventMapper
import com.datadog.android.event.MapperSerializer
import com.datadog.android.rum.GlobalRumMonitor
import com.datadog.android.rum.NoOpRumMonitor
import com.datadog.android.rum.RumErrorSource
import com.datadog.android.rum.assertj.RumFeatureAssert
import com.datadog.android.rum.configuration.VitalsUpdateFrequency
import com.datadog.android.rum.internal.domain.RumDataWriter
import com.datadog.android.rum.internal.domain.event.RumEventMapper
import com.datadog.android.rum.internal.monitor.AdvancedRumMonitor
import com.datadog.android.rum.internal.monitor.NoOpAdvancedRumMonitor
import com.datadog.android.rum.internal.thread.NoOpScheduledExecutorService
import com.datadog.android.rum.internal.tracking.NoOpInteractionPredicate
import com.datadog.android.rum.internal.tracking.NoOpUserActionTrackingStrategy
Expand Down Expand Up @@ -604,7 +604,7 @@ internal class RumFeatureTest {

// Then
assertThat(GlobalRumMonitor.isRegistered(mockSdkCore)).isFalse
assertThat(GlobalRumMonitor.get(mockSdkCore)).isInstanceOf(NoOpRumMonitor::class.java)
assertThat(GlobalRumMonitor.get(mockSdkCore)).isInstanceOf(NoOpAdvancedRumMonitor::class.java)
}

@ParameterizedTest
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@ internal constructor(
val method = toHttpMethod(request.method, sdkCore.internalLogger)
val requestId = request.buildResourceId(generateUuid = true)

(GlobalRumMonitor.get(sdkCore) as AdvancedNetworkRumMonitor).startResource(requestId, method, url)
(GlobalRumMonitor.get(sdkCore) as? AdvancedNetworkRumMonitor)?.startResource(requestId, method, url)
} else {
val prefix = if (sdkInstanceName == null) {
"Default SDK instance"
Expand Down

0 comments on commit bbc7612

Please sign in to comment.