Skip to content

Commit 61f8681

Browse files
committed
RUM-16325: Post-review fixes
1 parent 0419b26 commit 61f8681

14 files changed

Lines changed: 214 additions & 27 deletions

File tree

features/dd-sdk-android-rum-debug-widget/src/test/kotlin/com/datadog/android/insights/internal/DefaultInsightsCollectorTest.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ import org.mockito.kotlin.verify
3333
import org.mockito.kotlin.whenever
3434
import org.mockito.quality.Strictness
3535

36-
@Suppress("OPT_IN_USAGE")
3736
@Extensions(
3837
ExtendWith(MockitoExtension::class),
3938
ExtendWith(ForgeExtension::class)

features/dd-sdk-android-rum/api/apiSurface

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,10 +309,11 @@ class com.datadog.android.rum.timeseries.TimeseriesConfiguration
309309
class Builder
310310
fun setBufferSize(Int): Builder
311311
fun setIntervalMs(Long): Builder
312-
fun setCollectInBackground(Boolean): Builder
313-
fun setUseDeltaCompression(Boolean): Builder
312+
fun collectInBackground(Boolean): Builder
313+
fun useDeltaCompression(Boolean): Builder
314314
fun build(): TimeseriesConfiguration
315315
companion object
316+
val DEFAULT: TimeseriesConfiguration
316317
open class com.datadog.android.rum.tracking.AcceptAllActivities : ComponentPredicate<android.app.Activity>
317318
override fun accept(android.app.Activity): Boolean
318319
override fun getViewName(android.app.Activity): String?

features/dd-sdk-android-rum/api/dd-sdk-android-rum.api

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12322,13 +12322,14 @@ public final class com/datadog/android/rum/timeseries/TimeseriesConfiguration {
1232212322
public final class com/datadog/android/rum/timeseries/TimeseriesConfiguration$Builder {
1232312323
public fun <init> ()V
1232412324
public final fun build ()Lcom/datadog/android/rum/timeseries/TimeseriesConfiguration;
12325+
public final fun collectInBackground (Z)Lcom/datadog/android/rum/timeseries/TimeseriesConfiguration$Builder;
1232512326
public final fun setBufferSize (I)Lcom/datadog/android/rum/timeseries/TimeseriesConfiguration$Builder;
12326-
public final fun setCollectInBackground (Z)Lcom/datadog/android/rum/timeseries/TimeseriesConfiguration$Builder;
1232712327
public final fun setIntervalMs (J)Lcom/datadog/android/rum/timeseries/TimeseriesConfiguration$Builder;
12328-
public final fun setUseDeltaCompression (Z)Lcom/datadog/android/rum/timeseries/TimeseriesConfiguration$Builder;
12328+
public final fun useDeltaCompression (Z)Lcom/datadog/android/rum/timeseries/TimeseriesConfiguration$Builder;
1232912329
}
1233012330

1233112331
public final class com/datadog/android/rum/timeseries/TimeseriesConfiguration$Companion {
12332+
public final fun getDEFAULT ()Lcom/datadog/android/rum/timeseries/TimeseriesConfiguration;
1233212333
}
1233312334

1233412335
public class com/datadog/android/rum/tracking/AcceptAllActivities : com/datadog/android/rum/tracking/ComponentPredicate {

features/dd-sdk-android-rum/src/main/kotlin/com/datadog/android/rum/RumConfiguration.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -415,7 +415,7 @@ data class RumConfiguration internal constructor(
415415
* Enables memory and CPU timeseries collection.
416416
*
417417
* When enabled, the SDK samples device memory (RSS) and CPU usage at
418-
* [TimeseriesConfiguration.intervalMs] (default 1 s) and emits a batched
418+
* [TimeseriesConfiguration.intervalMs] (default 1 second) and emits a batched
419419
* timeseries event every [TimeseriesConfiguration.bufferSize] samples (default 30).
420420
* Collection runs on a single background thread named `datadog-timeseries`.
421421
*

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

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ internal class RumFeature(
294294
configuration.timeseriesConfiguration?.let { configuration ->
295295
timeseriesFactory = createTimeseriesCollectingFactory(
296296
configuration,
297-
appContext.readTotalRamBytes(sdkCore.internalLogger)
297+
appContext.readTotalRamBytes(sdkCore.internalLogger) ?: 0L
298298
)
299299
}
300300

@@ -941,24 +941,22 @@ internal class RumFeature(
941941
internal const val FAILED_TO_ENABLE_JANK_STATS_TRACKING_MANUALLY =
942942
"Manually enabling JankStats tracking threw an exception."
943943

944-
@Suppress("TooGenericExceptionCaught")
945-
internal fun Context.readTotalRamBytes(internalLogger: InternalLogger): Long = try {
944+
internal fun Context.readTotalRamBytes(internalLogger: InternalLogger): Long? = try {
946945
getSystemServiceAs<ActivityManager>(Context.ACTIVITY_SERVICE)
947-
// UnsafeThirdPartyFunctionCall: MemoryInfo() and getMemoryInfo() can throw
948-
// RuntimeException on broken Android implementations; fall back to 0.
949946
?.run {
947+
// UnsafeThirdPartyFunctionCall: MemoryInfo() and getMemoryInfo() can throw
948+
// RuntimeException on broken Android implementations; fall back to 0.
950949
@Suppress("UnsafeThirdPartyFunctionCall")
951950
ActivityManager.MemoryInfo().also { getMemoryInfo(it) }.totalMem
952951
}
953-
?: 0L
954-
} catch (e: RuntimeException) {
952+
} catch (@Suppress("TooGenericExceptionCaught") e: RuntimeException) {
955953
internalLogger.log(
956954
InternalLogger.Level.WARN,
957955
InternalLogger.Target.MAINTAINER,
958956
{ "Failed to read total RAM via ActivityManager" },
959957
e
960958
)
961-
0L
959+
null
962960
}
963961

964962
private fun provideUserTrackingStrategy(

features/dd-sdk-android-rum/src/main/kotlin/com/datadog/android/rum/internal/domain/scope/RumSessionScope.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ internal class RumSessionScope(
237237
timeseries = timeseriesFactory.create(
238238
sessionId = sessionId,
239239
applicationId = parentScope.getRumContext().applicationId,
240-
sessionType = rumSessionTypeOverride ?: RumSessionType.USER
240+
sessionType = getRumContext().resolveSessionType(rumSessionTypeOverride)
241241
)
242242
timeseries.onSessionStart()
243243
}
@@ -352,5 +352,13 @@ internal class RumSessionScope(
352352
internal const val RUM_SESSION_SAMPLE_RATE_BUS_MESSAGE_KEY = "sessionSampleRate"
353353
internal val DEFAULT_SESSION_INACTIVITY_NS = TimeUnit.MINUTES.toNanos(15)
354354
internal val DEFAULT_SESSION_MAX_DURATION_NS = TimeUnit.HOURS.toNanos(4)
355+
356+
internal fun RumContext.resolveSessionType(rumSessionTypeOverride: RumSessionType?): RumSessionType {
357+
return when {
358+
rumSessionTypeOverride != null -> rumSessionTypeOverride
359+
!syntheticsTestId.isNullOrBlank() && !syntheticsResultId.isNullOrBlank() -> RumSessionType.SYNTHETICS
360+
else -> RumSessionType.USER
361+
}
362+
}
355363
}
356364
}

features/dd-sdk-android-rum/src/main/kotlin/com/datadog/android/rum/internal/timeseries/serializer/CpuEventSerializer.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,10 @@ internal class CpuEventSerializer(
6161
end = end,
6262
data = data
6363
)
64-
).toJson() as? JsonObject
64+
).toJson().asJsonObject
6565

6666
// <DOGFOODING ONLY>
67-
val timeseriesJson = json?.getAsJsonObject("timeseries")
67+
val timeseriesJson = json.getAsJsonObject("timeseries")
6868
if (deltaEncoded != null) {
6969
timeseriesJson?.remove("data")
7070
timeseriesJson?.add("data", deltaEncoded)

features/dd-sdk-android-rum/src/main/kotlin/com/datadog/android/rum/internal/timeseries/serializer/MemoryEventSerializer.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@ internal class MemoryEventSerializer(
6363
end = end,
6464
data = data
6565
)
66-
).toJson() as? JsonObject
66+
).toJson().asJsonObject
6767
// <DOGFOODING ONLY>
68-
val timeseriesJson = json?.getAsJsonObject("timeseries")
68+
val timeseriesJson = json.getAsJsonObject("timeseries")
6969
if (deltaEncoded != null) {
7070
timeseriesJson?.remove("data")
7171
timeseriesJson?.add("data", deltaEncoded)

features/dd-sdk-android-rum/src/main/kotlin/com/datadog/android/rum/timeseries/TimeseriesConfiguration.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ package com.datadog.android.rum.timeseries
77

88
import androidx.annotation.IntRange
99
import com.datadog.android.rum.ExperimentalRumApi
10+
import com.datadog.android.rum.timeseries.TimeseriesConfiguration.Companion.DEFAULT_BUFFER_SIZE
11+
import com.datadog.android.rum.timeseries.TimeseriesConfiguration.Companion.DEFAULT_INTERVAL_MS
12+
import com.datadog.android.rum.timeseries.TimeseriesConfiguration.Companion.MIN_INTERVAL_MS
1013

1114
/**
1215
* Configuration for memory and CPU timeseries collection.
@@ -57,15 +60,15 @@ class TimeseriesConfiguration internal constructor(
5760
* Sets whether to keep sampling timeseries when the app is in background.
5861
* Defaults to `false`.
5962
*/
60-
fun setCollectInBackground(collectInBackground: Boolean): Builder = apply {
63+
fun collectInBackground(collectInBackground: Boolean): Builder = apply {
6164
this.collectInBackground = collectInBackground
6265
}
6366

6467
/**
6568
* Sets whether to encode each sample as a delta from the previous value instead of an
6669
* absolute value. Reduces payload size when values change slowly. Defaults to `false`.
6770
*/
68-
fun setUseDeltaCompression(useDeltaCompression: Boolean): Builder = apply {
71+
fun useDeltaCompression(useDeltaCompression: Boolean): Builder = apply {
6972
this.useDeltaCompression = useDeltaCompression
7073
}
7174

@@ -79,6 +82,11 @@ class TimeseriesConfiguration internal constructor(
7982
}
8083

8184
companion object {
85+
86+
/** Default [TimeseriesConfiguration] built with all default settings. */
87+
@ExperimentalRumApi
88+
val DEFAULT: TimeseriesConfiguration = Builder().build()
89+
8290
/** Default number of samples to accumulate before emitting a timeseries event. */
8391
internal const val DEFAULT_BUFFER_SIZE: Int = 30
8492

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -915,9 +915,9 @@ internal class RumFeatureTest {
915915
}
916916

917917
@Test
918+
@OptIn(ExperimentalRumApi::class)
918919
fun `M initialize vital executor W initialize { frequency = NEVER and timeseries enabled }`() {
919920
// Given
920-
@Suppress("OPT_IN_USAGE")
921921
fakeConfiguration = fakeConfiguration.copy(
922922
vitalsMonitorUpdateFrequency = VitalsUpdateFrequency.NEVER,
923923
slowFramesConfiguration = null,

0 commit comments

Comments
 (0)