Skip to content

Commit 6a75d81

Browse files
committed
RUM-11253: supporting telemetry for the basic methods
1 parent f83fca5 commit 6a75d81

File tree

2 files changed

+88
-0
lines changed

2 files changed

+88
-0
lines changed

features/dd-sdk-android-rum/src/main/kotlin/com/datadog/android/rum/internal/monitor/DatadogRumMonitor.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -681,6 +681,7 @@ internal class DatadogRumMonitor(
681681
eventTime = getEventTime(attributes)
682682
)
683683
)
684+
reportTelemetry { FO_TELEMETRY_STARTED_MESSAGE }
684685
}
685686

686687
@ExperimentalRumApi
@@ -694,6 +695,7 @@ internal class DatadogRumMonitor(
694695
eventTime = getEventTime(attributes)
695696
)
696697
)
698+
reportTelemetry { FO_TELEMETRY_SUCCEED_MESSAGE }
697699
}
698700

699701
@ExperimentalRumApi
@@ -712,6 +714,15 @@ internal class DatadogRumMonitor(
712714
eventTime = getEventTime(attributes)
713715
)
714716
)
717+
reportTelemetry { FO_TELEMETRY_FAILED_MESSAGE }
718+
}
719+
720+
private fun reportTelemetry(messageProvider: () -> String) {
721+
sdkCore.internalLogger.log(
722+
level = InternalLogger.Level.INFO,
723+
target = InternalLogger.Target.TELEMETRY,
724+
messageBuilder = messageProvider
725+
)
715726
}
716727
// endregion
717728

@@ -844,5 +855,9 @@ internal class DatadogRumMonitor(
844855

845856
internal const val RUM_DEBUG_RUM_NOT_ENABLED_WARNING =
846857
"Cannot switch RUM debugging, because RUM feature is not enabled."
858+
859+
internal const val FO_TELEMETRY_STARTED_MESSAGE = "startFeatureOperation API called"
860+
internal const val FO_TELEMETRY_SUCCEED_MESSAGE = "succeedFeatureOperation API called "
861+
internal const val FO_TELEMETRY_FAILED_MESSAGE = "failFeatureOperation API called "
847862
}
848863
}

features/dd-sdk-android-rum/src/test/kotlin/com/datadog/android/rum/internal/monitor/DatadogRumMonitorTest.kt

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2357,6 +2357,79 @@ internal class DatadogRumMonitorTest {
23572357
)
23582358
}
23592359

2360+
@OptIn(ExperimentalRumApi::class)
2361+
@Test
2362+
fun `M log telemetry message W startFeatureOperation`(
2363+
@StringForgery key: String,
2364+
@StringForgery name: String,
2365+
forge: Forge
2366+
) {
2367+
// Given
2368+
val mockInternalLogger = mock<InternalLogger>()
2369+
whenever(mockSdkCore.internalLogger) doReturn mockInternalLogger
2370+
val operationKey = forge.aNullable { key }
2371+
val attributes = fakeAttributes + (RumAttributes.INTERNAL_TIMESTAMP to fakeTimestamp)
2372+
2373+
// When
2374+
testedMonitor.startFeatureOperation(name, operationKey, attributes)
2375+
2376+
// Then
2377+
mockInternalLogger.verifyLog(
2378+
InternalLogger.Level.INFO,
2379+
InternalLogger.Target.TELEMETRY,
2380+
DatadogRumMonitor.FO_TELEMETRY_STARTED_MESSAGE
2381+
)
2382+
}
2383+
2384+
@OptIn(ExperimentalRumApi::class)
2385+
@Test
2386+
fun `M log telemetry message W succeedFeatureOperation`(
2387+
@StringForgery key: String,
2388+
@StringForgery name: String,
2389+
forge: Forge
2390+
) {
2391+
// Given
2392+
val mockInternalLogger = mock<InternalLogger>()
2393+
whenever(mockSdkCore.internalLogger) doReturn mockInternalLogger
2394+
val operationKey = forge.aNullable { key }
2395+
val attributes = fakeAttributes + (RumAttributes.INTERNAL_TIMESTAMP to fakeTimestamp)
2396+
2397+
// When
2398+
testedMonitor.succeedFeatureOperation(name, operationKey, attributes)
2399+
2400+
// Then
2401+
mockInternalLogger.verifyLog(
2402+
InternalLogger.Level.INFO,
2403+
InternalLogger.Target.TELEMETRY,
2404+
DatadogRumMonitor.FO_TELEMETRY_SUCCEED_MESSAGE
2405+
)
2406+
}
2407+
2408+
@OptIn(ExperimentalRumApi::class)
2409+
@Test
2410+
fun `M log telemetry message W failFeatureOperation`(
2411+
@StringForgery key: String,
2412+
@StringForgery name: String,
2413+
forge: Forge
2414+
) {
2415+
// Given
2416+
val mockInternalLogger = mock<InternalLogger>()
2417+
whenever(mockSdkCore.internalLogger) doReturn mockInternalLogger
2418+
val operationKey = forge.aNullable { key }
2419+
val failureReason = forge.aValueFrom(FailureReason::class.java)
2420+
val attributes = fakeAttributes + (RumAttributes.INTERNAL_TIMESTAMP to fakeTimestamp)
2421+
2422+
// When
2423+
testedMonitor.failFeatureOperation(name, operationKey, failureReason, attributes)
2424+
2425+
// Then
2426+
mockInternalLogger.verifyLog(
2427+
InternalLogger.Level.INFO,
2428+
InternalLogger.Target.TELEMETRY,
2429+
DatadogRumMonitor.FO_TELEMETRY_FAILED_MESSAGE
2430+
)
2431+
}
2432+
23602433
private inline fun <reified T : RumRawEvent> assertMethodCallProducesValidEvent(
23612434
whenCalled: () -> Unit,
23622435
then: (T) -> Unit

0 commit comments

Comments
 (0)