Skip to content

Commit 2ee8354

Browse files
authored
Merge pull request #2816 from DataDog/tvaleev/feature/RUM-11252
RUM-11252: [FO] DTO schema integration
2 parents 7ef820f + 50b57dc commit 2ee8354

File tree

11 files changed

+653
-56
lines changed

11 files changed

+653
-56
lines changed

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

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1703,7 +1703,7 @@ data class com.datadog.android.rum.model.RumVitalEvent
17031703
fun fromJson(kotlin.String): Container
17041704
fun fromJsonObject(com.google.gson.JsonObject): Container
17051705
data class RumVitalEventVital
1706-
constructor(RumVitalEventVitalType, kotlin.String, kotlin.String? = null, kotlin.String? = null, kotlin.String? = null, kotlin.Number? = null, Custom? = null, StepType? = null, FailureReason? = null)
1706+
constructor(RumVitalEventVitalType, kotlin.String, kotlin.String? = null, kotlin.String? = null, kotlin.String? = null, kotlin.Number? = null, StepType? = null, FailureReason? = null)
17071707
fun toJson(): com.google.gson.JsonElement
17081708
companion object
17091709
fun fromJson(kotlin.String): RumVitalEventVital
@@ -1744,12 +1744,6 @@ data class com.datadog.android.rum.model.RumVitalEvent
17441744
companion object
17451745
fun fromJson(kotlin.String): ContainerView
17461746
fun fromJsonObject(com.google.gson.JsonObject): ContainerView
1747-
data class Custom
1748-
constructor(kotlin.collections.Map<kotlin.String, kotlin.Number> = mapOf())
1749-
fun toJson(): com.google.gson.JsonElement
1750-
companion object
1751-
fun fromJson(kotlin.String): Custom
1752-
fun fromJsonObject(com.google.gson.JsonObject): Custom
17531747
enum RumVitalEventSource
17541748
constructor(kotlin.String)
17551749
- ANDROID
@@ -1817,7 +1811,7 @@ data class com.datadog.android.rum.model.RumVitalEvent
18171811
enum RumVitalEventVitalType
18181812
constructor(kotlin.String)
18191813
- DURATION
1820-
- STEP
1814+
- OPERATION_STEP
18211815
fun toJson(): com.google.gson.JsonElement
18221816
companion object
18231817
fun fromJson(kotlin.String): RumVitalEventVitalType

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

Lines changed: 8 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -4867,28 +4867,6 @@ public final class com/datadog/android/rum/model/RumVitalEvent$Context$Companion
48674867
public final fun fromJsonObject (Lcom/google/gson/JsonObject;)Lcom/datadog/android/rum/model/RumVitalEvent$Context;
48684868
}
48694869

4870-
public final class com/datadog/android/rum/model/RumVitalEvent$Custom {
4871-
public static final field Companion Lcom/datadog/android/rum/model/RumVitalEvent$Custom$Companion;
4872-
public fun <init> ()V
4873-
public fun <init> (Ljava/util/Map;)V
4874-
public synthetic fun <init> (Ljava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
4875-
public final fun component1 ()Ljava/util/Map;
4876-
public final fun copy (Ljava/util/Map;)Lcom/datadog/android/rum/model/RumVitalEvent$Custom;
4877-
public static synthetic fun copy$default (Lcom/datadog/android/rum/model/RumVitalEvent$Custom;Ljava/util/Map;ILjava/lang/Object;)Lcom/datadog/android/rum/model/RumVitalEvent$Custom;
4878-
public fun equals (Ljava/lang/Object;)Z
4879-
public static final fun fromJson (Ljava/lang/String;)Lcom/datadog/android/rum/model/RumVitalEvent$Custom;
4880-
public static final fun fromJsonObject (Lcom/google/gson/JsonObject;)Lcom/datadog/android/rum/model/RumVitalEvent$Custom;
4881-
public final fun getAdditionalProperties ()Ljava/util/Map;
4882-
public fun hashCode ()I
4883-
public final fun toJson ()Lcom/google/gson/JsonElement;
4884-
public fun toString ()Ljava/lang/String;
4885-
}
4886-
4887-
public final class com/datadog/android/rum/model/RumVitalEvent$Custom$Companion {
4888-
public final fun fromJson (Ljava/lang/String;)Lcom/datadog/android/rum/model/RumVitalEvent$Custom;
4889-
public final fun fromJsonObject (Lcom/google/gson/JsonObject;)Lcom/datadog/android/rum/model/RumVitalEvent$Custom;
4890-
}
4891-
48924870
public final class com/datadog/android/rum/model/RumVitalEvent$Dd {
48934871
public static final field Companion Lcom/datadog/android/rum/model/RumVitalEvent$Dd$Companion;
48944872
public fun <init> ()V
@@ -5234,29 +5212,27 @@ public final class com/datadog/android/rum/model/RumVitalEvent$RumVitalEventView
52345212

52355213
public final class com/datadog/android/rum/model/RumVitalEvent$RumVitalEventVital {
52365214
public static final field Companion Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVital$Companion;
5237-
public fun <init> (Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVitalType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Number;Lcom/datadog/android/rum/model/RumVitalEvent$Custom;Lcom/datadog/android/rum/model/RumVitalEvent$StepType;Lcom/datadog/android/rum/model/RumVitalEvent$FailureReason;)V
5238-
public synthetic fun <init> (Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVitalType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Number;Lcom/datadog/android/rum/model/RumVitalEvent$Custom;Lcom/datadog/android/rum/model/RumVitalEvent$StepType;Lcom/datadog/android/rum/model/RumVitalEvent$FailureReason;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
5215+
public fun <init> (Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVitalType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Number;Lcom/datadog/android/rum/model/RumVitalEvent$StepType;Lcom/datadog/android/rum/model/RumVitalEvent$FailureReason;)V
5216+
public synthetic fun <init> (Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVitalType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Number;Lcom/datadog/android/rum/model/RumVitalEvent$StepType;Lcom/datadog/android/rum/model/RumVitalEvent$FailureReason;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
52395217
public final fun component1 ()Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVitalType;
52405218
public final fun component2 ()Ljava/lang/String;
52415219
public final fun component3 ()Ljava/lang/String;
52425220
public final fun component4 ()Ljava/lang/String;
52435221
public final fun component5 ()Ljava/lang/String;
52445222
public final fun component6 ()Ljava/lang/Number;
5245-
public final fun component7 ()Lcom/datadog/android/rum/model/RumVitalEvent$Custom;
5246-
public final fun component8 ()Lcom/datadog/android/rum/model/RumVitalEvent$StepType;
5247-
public final fun component9 ()Lcom/datadog/android/rum/model/RumVitalEvent$FailureReason;
5248-
public final fun copy (Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVitalType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Number;Lcom/datadog/android/rum/model/RumVitalEvent$Custom;Lcom/datadog/android/rum/model/RumVitalEvent$StepType;Lcom/datadog/android/rum/model/RumVitalEvent$FailureReason;)Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVital;
5249-
public static synthetic fun copy$default (Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVital;Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVitalType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Number;Lcom/datadog/android/rum/model/RumVitalEvent$Custom;Lcom/datadog/android/rum/model/RumVitalEvent$StepType;Lcom/datadog/android/rum/model/RumVitalEvent$FailureReason;ILjava/lang/Object;)Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVital;
5223+
public final fun component7 ()Lcom/datadog/android/rum/model/RumVitalEvent$StepType;
5224+
public final fun component8 ()Lcom/datadog/android/rum/model/RumVitalEvent$FailureReason;
5225+
public final fun copy (Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVitalType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Number;Lcom/datadog/android/rum/model/RumVitalEvent$StepType;Lcom/datadog/android/rum/model/RumVitalEvent$FailureReason;)Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVital;
5226+
public static synthetic fun copy$default (Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVital;Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVitalType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Number;Lcom/datadog/android/rum/model/RumVitalEvent$StepType;Lcom/datadog/android/rum/model/RumVitalEvent$FailureReason;ILjava/lang/Object;)Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVital;
52505227
public fun equals (Ljava/lang/Object;)Z
52515228
public static final fun fromJson (Ljava/lang/String;)Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVital;
52525229
public static final fun fromJsonObject (Lcom/google/gson/JsonObject;)Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVital;
5253-
public final fun getCustom ()Lcom/datadog/android/rum/model/RumVitalEvent$Custom;
52545230
public final fun getDescription ()Ljava/lang/String;
52555231
public final fun getDuration ()Ljava/lang/Number;
52565232
public final fun getFailureReason ()Lcom/datadog/android/rum/model/RumVitalEvent$FailureReason;
52575233
public final fun getId ()Ljava/lang/String;
52585234
public final fun getName ()Ljava/lang/String;
5259-
public final fun getParentId ()Ljava/lang/String;
5235+
public final fun getOperationKey ()Ljava/lang/String;
52605236
public final fun getStepType ()Lcom/datadog/android/rum/model/RumVitalEvent$StepType;
52615237
public final fun getType ()Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVitalType;
52625238
public fun hashCode ()I
@@ -5272,7 +5248,7 @@ public final class com/datadog/android/rum/model/RumVitalEvent$RumVitalEventVita
52725248
public final class com/datadog/android/rum/model/RumVitalEvent$RumVitalEventVitalType : java/lang/Enum {
52735249
public static final field Companion Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVitalType$Companion;
52745250
public static final field DURATION Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVitalType;
5275-
public static final field STEP Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVitalType;
5251+
public static final field OPERATION_STEP Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVitalType;
52765252
public static final fun fromJson (Ljava/lang/String;)Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVitalType;
52775253
public final fun toJson ()Lcom/google/gson/JsonElement;
52785254
public static fun valueOf (Ljava/lang/String;)Lcom/datadog/android/rum/model/RumVitalEvent$RumVitalEventVitalType;

features/dd-sdk-android-rum/src/main/json/rum/vital-schema.json

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
"type": {
2929
"type": "string",
3030
"description": "Type of the vital",
31-
"enum": ["duration", "step"],
31+
"enum": ["duration", "operation_step"],
3232
"readOnly": true
3333
},
3434
"id": {
@@ -37,9 +37,9 @@
3737
"pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$",
3838
"readOnly": true
3939
},
40-
"parent_id": {
40+
"operation_key": {
4141
"type": "string",
42-
"description": "UUID for linking the step vital to the parent event, if applicable",
42+
"description": "UUID for distinguishing the active operations in parallel, if applicable",
4343
"pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$",
4444
"readOnly": true
4545
},
@@ -58,16 +58,6 @@
5858
"description": "Duration of the vital in nanoseconds",
5959
"readOnly": true
6060
},
61-
"custom": {
62-
"type": "object",
63-
"description": "User custom vital.",
64-
"additionalProperties": {
65-
"type": "number",
66-
"minimum": 0,
67-
"readOnly": true
68-
},
69-
"readOnly": true
70-
},
7161
"step_type": {
7262
"type": "string",
7363
"description": "Type of the step that triggered the vital, if applicable",

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import com.datadog.android.rum.model.ActionEvent
1111
import com.datadog.android.rum.model.ErrorEvent
1212
import com.datadog.android.rum.model.LongTaskEvent
1313
import com.datadog.android.rum.model.ResourceEvent
14+
import com.datadog.android.rum.model.RumVitalEvent
1415
import com.datadog.android.rum.model.ViewEvent
1516

1617
internal fun RumSessionType.toAction(): ActionEvent.ActionEventSessionType {
@@ -47,3 +48,9 @@ internal fun RumSessionType.toLongTask(): LongTaskEvent.LongTaskEventSessionType
4748
RumSessionType.USER -> LongTaskEvent.LongTaskEventSessionType.USER
4849
}
4950
}
51+
internal fun RumSessionType.toVital(): RumVitalEvent.RumVitalEventSessionType {
52+
return when (this) {
53+
RumSessionType.SYNTHETICS -> RumVitalEvent.RumVitalEventSessionType.SYNTHETICS
54+
RumSessionType.USER -> RumVitalEvent.RumVitalEventSessionType.USER
55+
}
56+
}

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

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,14 @@ import com.datadog.android.rum.RumActionType
1414
import com.datadog.android.rum.RumErrorSource
1515
import com.datadog.android.rum.RumResourceKind
1616
import com.datadog.android.rum.RumResourceMethod
17+
import com.datadog.android.rum.featureoperations.FailureReason
1718
import com.datadog.android.rum.internal.RumErrorSourceType
1819
import com.datadog.android.rum.internal.domain.event.ResourceTiming
1920
import com.datadog.android.rum.model.ActionEvent
2021
import com.datadog.android.rum.model.ErrorEvent
2122
import com.datadog.android.rum.model.LongTaskEvent
2223
import com.datadog.android.rum.model.ResourceEvent
24+
import com.datadog.android.rum.model.RumVitalEvent
2325
import com.datadog.android.rum.model.ViewEvent
2426
import java.util.Locale
2527

@@ -550,6 +552,18 @@ internal fun RumSessionScope.StartReason.toErrorSessionPrecondition(): ErrorEven
550552
ErrorEvent.SessionPrecondition.FROM_NON_INTERACTIVE_SESSION
551553
}
552554
}
555+
internal fun RumSessionScope.StartReason.toVitalSessionPrecondition(): RumVitalEvent.SessionPrecondition {
556+
return when (this) {
557+
RumSessionScope.StartReason.USER_APP_LAUNCH -> RumVitalEvent.SessionPrecondition.USER_APP_LAUNCH
558+
RumSessionScope.StartReason.INACTIVITY_TIMEOUT -> RumVitalEvent.SessionPrecondition.INACTIVITY_TIMEOUT
559+
RumSessionScope.StartReason.MAX_DURATION -> RumVitalEvent.SessionPrecondition.MAX_DURATION
560+
RumSessionScope.StartReason.EXPLICIT_STOP -> RumVitalEvent.SessionPrecondition.EXPLICIT_STOP
561+
RumSessionScope.StartReason.BACKGROUND_LAUNCH -> RumVitalEvent.SessionPrecondition.BACKGROUND_LAUNCH
562+
RumSessionScope.StartReason.PREWARM -> RumVitalEvent.SessionPrecondition.PREWARM
563+
RumSessionScope.StartReason.FROM_NON_INTERACTIVE_SESSION ->
564+
RumVitalEvent.SessionPrecondition.FROM_NON_INTERACTIVE_SESSION
565+
}
566+
}
553567

554568
internal fun RumSessionScope.StartReason.toResourceSessionPrecondition(): ResourceEvent.SessionPrecondition {
555569
return when (this) {
@@ -578,3 +592,14 @@ internal fun RumSessionScope.StartReason.toLongTaskSessionPrecondition(): LongTa
578592
}
579593

580594
// endregion
595+
596+
// region FeatureOperation
597+
598+
internal fun FailureReason.toSchemaFailureReason(): RumVitalEvent.FailureReason {
599+
return when (this) {
600+
FailureReason.ERROR -> RumVitalEvent.FailureReason.ERROR
601+
FailureReason.ABANDONED -> RumVitalEvent.FailureReason.ABANDONED
602+
FailureReason.OTHER -> RumVitalEvent.FailureReason.OTHER
603+
}
604+
}
605+
//

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import com.datadog.android.rum.RumErrorSource
1313
import com.datadog.android.rum.RumPerformanceMetric
1414
import com.datadog.android.rum.RumResourceKind
1515
import com.datadog.android.rum.RumResourceMethod
16+
import com.datadog.android.rum.featureoperations.FailureReason
1617
import com.datadog.android.rum.internal.RumErrorSourceType
1718
import com.datadog.android.rum.internal.domain.Time
1819
import com.datadog.android.rum.internal.domain.event.ResourceTiming
@@ -245,4 +246,19 @@ internal sealed class RumRawEvent {
245246
val isAppInForeground: Boolean,
246247
override val eventTime: Time = Time()
247248
) : RumRawEvent()
249+
250+
internal data class StartFeatureOperation(
251+
val name: String,
252+
val operationKey: String?,
253+
val attributes: Map<String, Any?>,
254+
override val eventTime: Time = Time()
255+
) : RumRawEvent()
256+
257+
internal data class StopFeatureOperation(
258+
val name: String,
259+
val operationKey: String?,
260+
val attributes: Map<String, Any?>,
261+
val failureReason: FailureReason? = null,
262+
override val eventTime: Time = Time()
263+
) : RumRawEvent()
248264
}

0 commit comments

Comments
 (0)