Skip to content

Commit 2f50f29

Browse files
Stop sending application_start action
1 parent 2c00192 commit 2f50f29

File tree

11 files changed

+6
-531
lines changed

11 files changed

+6
-531
lines changed

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

Lines changed: 0 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ import com.datadog.android.rum.internal.metric.networksettled.InternalResourceCo
4242
import com.datadog.android.rum.internal.metric.networksettled.NetworkSettledMetricResolver
4343
import com.datadog.android.rum.internal.metric.slowframes.SlowFramesListener
4444
import com.datadog.android.rum.internal.monitor.StorageEvent
45-
import com.datadog.android.rum.internal.toAction
4645
import com.datadog.android.rum.internal.toError
4746
import com.datadog.android.rum.internal.toLongTask
4847
import com.datadog.android.rum.internal.toView
@@ -54,7 +53,6 @@ import com.datadog.android.rum.internal.vitals.VitalInfo
5453
import com.datadog.android.rum.internal.vitals.VitalListener
5554
import com.datadog.android.rum.internal.vitals.VitalMonitor
5655
import com.datadog.android.rum.metric.networksettled.InitialResourceIdentifier
57-
import com.datadog.android.rum.model.ActionEvent
5856
import com.datadog.android.rum.model.ErrorEvent
5957
import com.datadog.android.rum.model.LongTaskEvent
6058
import com.datadog.android.rum.model.RumVitalOperationStepEvent
@@ -227,7 +225,6 @@ internal open class RumViewScope(
227225
writer
228226
)
229227

230-
is RumRawEvent.ApplicationStarted -> onApplicationStarted(event, datadogContext, writeScope, writer)
231228
is RumRawEvent.AddCustomTiming -> onAddCustomTiming(event, datadogContext, writeScope, writer)
232229
is RumRawEvent.KeepAlive -> onKeepAlive(event, datadogContext, writeScope, writer)
233230

@@ -1401,121 +1398,6 @@ internal open class RumViewScope(
14011398
null
14021399
}
14031400

1404-
@Suppress("LongMethod")
1405-
@WorkerThread
1406-
private fun onApplicationStarted(
1407-
event: RumRawEvent.ApplicationStarted,
1408-
datadogContext: DatadogContext,
1409-
writeScope: EventWriteScope,
1410-
writer: DataWriter<Any>
1411-
) {
1412-
pendingActionCount++
1413-
val rumContext = getRumContext()
1414-
val actionCustomAttributes = getCustomAttributes().toMutableMap()
1415-
sdkCore.newRumEventWriteOperation(datadogContext, writeScope, writer) {
1416-
val user = datadogContext.userInfo
1417-
val syntheticsAttribute = if (
1418-
rumContext.syntheticsTestId.isNullOrBlank() ||
1419-
rumContext.syntheticsResultId.isNullOrBlank()
1420-
) {
1421-
null
1422-
} else {
1423-
ActionEvent.Synthetics(
1424-
testId = rumContext.syntheticsTestId,
1425-
resultId = rumContext.syntheticsResultId
1426-
)
1427-
}
1428-
1429-
val sessionType = when {
1430-
rumSessionTypeOverride != null -> rumSessionTypeOverride.toAction()
1431-
syntheticsAttribute == null -> ActionEvent.ActionEventSessionType.USER
1432-
else -> ActionEvent.ActionEventSessionType.SYNTHETICS
1433-
}
1434-
1435-
ActionEvent(
1436-
date = eventTimestamp,
1437-
action = ActionEvent.ActionEventAction(
1438-
type = ActionEvent.ActionEventActionType.APPLICATION_START,
1439-
id = UUID.randomUUID().toString(),
1440-
error = ActionEvent.Error(0),
1441-
crash = ActionEvent.Crash(0),
1442-
longTask = ActionEvent.LongTask(0),
1443-
resource = ActionEvent.Resource(0),
1444-
loadingTime = event.applicationStartupNanos
1445-
),
1446-
view = ActionEvent.ActionEventView(
1447-
id = rumContext.viewId.orEmpty(),
1448-
name = rumContext.viewName,
1449-
url = rumContext.viewUrl.orEmpty()
1450-
),
1451-
usr = if (user.hasUserData()) {
1452-
ActionEvent.Usr(
1453-
id = user.id,
1454-
name = user.name,
1455-
email = user.email,
1456-
anonymousId = user.anonymousId,
1457-
additionalProperties = user.additionalProperties.toMutableMap()
1458-
)
1459-
} else {
1460-
null
1461-
},
1462-
account = datadogContext.accountInfo?.let {
1463-
ActionEvent.Account(
1464-
id = it.id,
1465-
name = it.name,
1466-
additionalProperties = it.extraInfo.toMutableMap()
1467-
)
1468-
},
1469-
application = ActionEvent.Application(rumContext.applicationId),
1470-
session = ActionEvent.ActionEventSession(
1471-
id = rumContext.sessionId,
1472-
type = sessionType,
1473-
hasReplay = false
1474-
),
1475-
synthetics = syntheticsAttribute,
1476-
source = ActionEvent.ActionEventSource.tryFromSource(
1477-
datadogContext.source,
1478-
sdkCore.internalLogger
1479-
),
1480-
os = ActionEvent.Os(
1481-
name = datadogContext.deviceInfo.osName,
1482-
version = datadogContext.deviceInfo.osVersion,
1483-
versionMajor = datadogContext.deviceInfo.osMajorVersion
1484-
),
1485-
device = ActionEvent.Device(
1486-
type = datadogContext.deviceInfo.deviceType.toActionSchemaType(),
1487-
name = datadogContext.deviceInfo.deviceName,
1488-
model = datadogContext.deviceInfo.deviceModel,
1489-
brand = datadogContext.deviceInfo.deviceBrand,
1490-
architecture = datadogContext.deviceInfo.architecture
1491-
),
1492-
context = ActionEvent.Context(
1493-
additionalProperties = actionCustomAttributes
1494-
),
1495-
dd = ActionEvent.Dd(
1496-
session = ActionEvent.DdSession(
1497-
sessionPrecondition = rumContext.sessionStartReason.toActionSessionPrecondition()
1498-
),
1499-
configuration = ActionEvent.Configuration(sessionSampleRate = sampleRate)
1500-
),
1501-
connectivity = datadogContext.networkInfo.toActionConnectivity(),
1502-
service = datadogContext.service,
1503-
version = datadogContext.version,
1504-
ddtags = buildDDTagsString(datadogContext)
1505-
)
1506-
}
1507-
.apply {
1508-
val storageEvent = StorageEvent.Action(
1509-
0,
1510-
ActionEvent.ActionEventActionType.APPLICATION_START,
1511-
event.applicationStartupNanos
1512-
)
1513-
onError { it.eventDropped(rumContext.viewId.orEmpty(), storageEvent) }
1514-
onSuccess { it.eventSent(rumContext.viewId.orEmpty(), storageEvent) }
1515-
}
1516-
.submit()
1517-
}
1518-
15191401
@Suppress("LongMethod")
15201402
@WorkerThread
15211403
private fun onAddLongTask(

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

Lines changed: 1 addition & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import com.datadog.android.api.context.TimeInfo
1313
import com.datadog.android.api.feature.EventWriteScope
1414
import com.datadog.android.api.storage.DataWriter
1515
import com.datadog.android.api.storage.EventBatchWriter
16-
import com.datadog.android.api.storage.EventType
1716
import com.datadog.android.core.InternalSdkCore
1817
import com.datadog.android.core.internal.net.FirstPartyHostHeaderTypeResolver
1918
import com.datadog.android.internal.telemetry.InternalTelemetryEvent
@@ -35,7 +34,6 @@ import com.datadog.android.rum.internal.vitals.NoOpVitalMonitor
3534
import com.datadog.android.rum.internal.vitals.VitalMonitor
3635
import com.datadog.android.rum.metric.interactiontonextview.LastInteractionIdentifier
3736
import com.datadog.android.rum.metric.networksettled.InitialResourceIdentifier
38-
import com.datadog.android.rum.model.ActionEvent
3937
import com.datadog.android.rum.utils.forge.Configurator
4038
import com.datadog.android.rum.utils.verifyApiUsage
4139
import com.datadog.android.rum.utils.verifyLog
@@ -58,7 +56,6 @@ import org.mockito.junit.jupiter.MockitoExtension
5856
import org.mockito.junit.jupiter.MockitoSettings
5957
import org.mockito.kotlin.any
6058
import org.mockito.kotlin.argumentCaptor
61-
import org.mockito.kotlin.atLeastOnce
6259
import org.mockito.kotlin.doAnswer
6360
import org.mockito.kotlin.doReturn
6461
import org.mockito.kotlin.eq
@@ -777,7 +774,7 @@ internal class RumViewManagerScopeTest {
777774
// region ApplicationStarted
778775

779776
@Test
780-
fun `M send ApplicationStarted event W handleEvent ()`(
777+
fun `M not send APPLICATION_START action to the intake W handleEvent { ApplicationStarted } ()`(
781778
forge: Forge
782779
) {
783780
// Given
@@ -791,32 +788,6 @@ internal class RumViewManagerScopeTest {
791788
// When
792789
testedScope.handleEvent(fakeAppStartEvent, fakeDatadogContext, mockEventWriteScope, mockWriter)
793790

794-
// Then
795-
argumentCaptor<ActionEvent> {
796-
verify(mockWriter, atLeastOnce()).write(eq(mockEventBatchWriter), capture(), eq(EventType.DEFAULT))
797-
assertThat(firstValue.action.type)
798-
.isEqualTo(ActionEvent.ActionEventActionType.APPLICATION_START)
799-
// Application start event occurs at the start time
800-
assertThat(firstValue.date)
801-
.isEqualTo(resolveExpectedTimestamp(fakeAppStartEvent.eventTime.timestamp))
802-
803-
// Duration lasts until the first event is sent to RUM (whatever that is)
804-
val loadingTime = fakeAppStartEvent.applicationStartupNanos
805-
assertThat(firstValue.action.loadingTime).isEqualTo(loadingTime)
806-
}
807-
}
808-
809-
@Test
810-
fun `M not send ApplicationStarted event W onViewDisplayed() {app already started}`(
811-
forge: Forge
812-
) {
813-
// Given
814-
testedScope.applicationDisplayed = true
815-
val fakeAppStartEvent = forge.applicationStartedEvent()
816-
817-
// When
818-
testedScope.handleEvent(fakeAppStartEvent, fakeDatadogContext, mockEventWriteScope, mockWriter)
819-
820791
// Then
821792
verifyNoInteractions(mockWriter)
822793
}

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

Lines changed: 0 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ import com.datadog.android.rum.internal.metric.interactiontonextview.Interaction
4040
import com.datadog.android.rum.internal.metric.networksettled.NetworkSettledMetricResolver
4141
import com.datadog.android.rum.internal.metric.slowframes.SlowFramesListener
4242
import com.datadog.android.rum.internal.vitals.VitalMonitor
43-
import com.datadog.android.rum.model.ActionEvent
4443
import com.datadog.android.rum.model.ErrorEvent
4544
import com.datadog.android.rum.model.LongTaskEvent
4645
import com.datadog.android.rum.model.ViewEvent
@@ -541,81 +540,6 @@ internal class RumViewScopeAttributePropagationTest {
541540

542541
// endregion
543542

544-
// region Propagate parent attributes in Application Start Event
545-
546-
@Test
547-
fun `M send event with parent attributes W handleEvent(ApplicationStarted) on active view`(
548-
@LongForgery(0) fakeDuration: Long
549-
) {
550-
// Given
551-
val expectedAttributes = mutableMapOf<String, Any?>()
552-
expectedAttributes.putAll(fakeParentAttributes)
553-
testedScope = newRumViewScope(initialAttributes = emptyMap())
554-
val fakeEvent = RumRawEvent.ApplicationStarted(Time(), fakeDuration)
555-
556-
// When
557-
val result = testedScope.handleEvent(fakeEvent, fakeDatadogContext, mockEventWriteScope, mockWriter)
558-
559-
// Then
560-
argumentCaptor<ActionEvent> {
561-
verify(mockWriter).write(eq(mockEventBatchWriter), capture(), eq(EventType.DEFAULT))
562-
assertThat(lastValue)
563-
.containsExactlyContextAttributes(expectedAttributes)
564-
}
565-
verifyNoMoreInteractions(mockWriter)
566-
assertThat(result).isNotNull()
567-
}
568-
569-
@Test
570-
fun `M send event with both parent and view attributes W handleEvent(ApplicationStarted) on active view`(
571-
@LongForgery(0) fakeDuration: Long
572-
) {
573-
// Given
574-
val expectedAttributes = mutableMapOf<String, Any?>()
575-
expectedAttributes.putAll(fakeParentAttributes)
576-
expectedAttributes.putAll(fakeViewAttributes)
577-
testedScope = newRumViewScope(initialAttributes = fakeViewAttributes)
578-
val fakeEvent = RumRawEvent.ApplicationStarted(Time(), fakeDuration)
579-
580-
// When
581-
val result = testedScope.handleEvent(fakeEvent, fakeDatadogContext, mockEventWriteScope, mockWriter)
582-
583-
// Then
584-
argumentCaptor<ActionEvent> {
585-
verify(mockWriter).write(eq(mockEventBatchWriter), capture(), eq(EventType.DEFAULT))
586-
assertThat(lastValue)
587-
.containsExactlyContextAttributes(expectedAttributes)
588-
}
589-
verifyNoMoreInteractions(mockWriter)
590-
assertThat(result).isNotNull()
591-
}
592-
593-
@Test
594-
fun `M send event with overridden parent attributes W handleEvent(ApplicationStarted) on active view`(
595-
@LongForgery(0) fakeDuration: Long,
596-
forge: Forge
597-
) {
598-
// Given
599-
val overriddenAttributes = fakeParentAttributes.map { it.key to forge.aString() }.toMap()
600-
val expectedAttributes = overriddenAttributes.toMutableMap()
601-
testedScope = newRumViewScope(initialAttributes = overriddenAttributes)
602-
val fakeEvent = RumRawEvent.ApplicationStarted(Time(), fakeDuration)
603-
604-
// When
605-
val result = testedScope.handleEvent(fakeEvent, fakeDatadogContext, mockEventWriteScope, mockWriter)
606-
607-
// Then
608-
argumentCaptor<ActionEvent> {
609-
verify(mockWriter).write(eq(mockEventBatchWriter), capture(), eq(EventType.DEFAULT))
610-
assertThat(lastValue)
611-
.containsExactlyContextAttributes(expectedAttributes)
612-
}
613-
verifyNoMoreInteractions(mockWriter)
614-
assertThat(result).isNotNull()
615-
}
616-
617-
// endregion
618-
619543
// region Propagate parent attributes in Long Task Events
620544

621545
@Test

0 commit comments

Comments
 (0)