@@ -175,7 +175,7 @@ class AppStartMetricsTest {
175175 // but no activity creation happened
176176 // then the app wasn't launched in foreground and nothing should be sent
177177 assertFalse(metrics.isAppLaunchedInForeground)
178- assertFalse(metrics.shouldSendStartMeasurements())
178+ assertFalse(metrics.shouldSendStartMeasurements(false ))
179179
180180 val now = TimeUnit .MINUTES .toMillis(2 ) + 1234567
181181 SystemClock .setCurrentTimeMillis(now)
@@ -185,7 +185,7 @@ class AppStartMetricsTest {
185185
186186 // then it should restart the timespan
187187 assertTrue(metrics.isAppLaunchedInForeground)
188- assertTrue(metrics.shouldSendStartMeasurements())
188+ assertTrue(metrics.shouldSendStartMeasurements(false ))
189189 assertTrue(metrics.appStartTimeSpan.hasStarted())
190190 assertEquals(now, metrics.appStartTimeSpan.startUptimeMs)
191191 assertFalse(metrics.applicationOnCreateTimeSpan.hasStarted())
@@ -288,6 +288,24 @@ class AppStartMetricsTest {
288288 assertEquals(100 , metrics.appStartTimeSpan.durationMs)
289289 }
290290
291+ @Test
292+ fun `resolveNonActivityAppStartEndTime does not overwrite stopped appStartTimeSpan` () {
293+ val metrics = AppStartMetrics .getInstance()
294+ metrics.appStartTimeSpan.apply {
295+ setStartedAt(100 )
296+ setStoppedAt(150 )
297+ }
298+ metrics.applicationOnCreateTimeSpan.apply {
299+ setStartedAt(120 )
300+ setStoppedAt(200 )
301+ }
302+
303+ metrics.registerLifecycleCallbacks(mock<Application >())
304+ waitForMainLooperIdle()
305+
306+ assertEquals(50 , metrics.appStartTimeSpan.durationMs)
307+ }
308+
291309 @Test
292310 fun `getAppStartTimeSpanDirect falls back to sdkInitTimeSpan when appStartSpan has not stopped` () {
293311 val metrics = AppStartMetrics .getInstance()
@@ -461,11 +479,11 @@ class AppStartMetricsTest {
461479 val appStartMetrics = AppStartMetrics .getInstance()
462480 appStartMetrics.addActivityLifecycleTimeSpans(mock())
463481 appStartMetrics.contentProviderOnCreateTimeSpans.add(mock())
464- assertTrue(appStartMetrics.shouldSendStartMeasurements())
482+ assertTrue(appStartMetrics.shouldSendStartMeasurements(false ))
465483 appStartMetrics.onAppStartSpansSent()
466484 assertTrue(appStartMetrics.activityLifecycleTimeSpans.isEmpty())
467485 assertTrue(appStartMetrics.contentProviderOnCreateTimeSpans.isEmpty())
468- assertFalse(appStartMetrics.shouldSendStartMeasurements())
486+ assertFalse(appStartMetrics.shouldSendStartMeasurements(false ))
469487 }
470488
471489 @Test
@@ -479,18 +497,18 @@ class AppStartMetricsTest {
479497
480498 // then the app start type should be cold and measurements should be sent
481499 assertEquals(AppStartMetrics .AppStartType .COLD , appStartMetrics.appStartType)
482- assertTrue(appStartMetrics.shouldSendStartMeasurements())
500+ assertTrue(appStartMetrics.shouldSendStartMeasurements(false ))
483501
484502 // when the activity gets destroyed
485503 appStartMetrics.onAppStartSpansSent()
486- assertFalse(appStartMetrics.shouldSendStartMeasurements())
504+ assertFalse(appStartMetrics.shouldSendStartMeasurements(false ))
487505
488506 appStartMetrics.onActivityDestroyed(activity0)
489507
490508 // then it should reset sending the measurements for the next warm activity
491509 appStartMetrics.onActivityCreated(mock<Activity >(), mock<Bundle >())
492510 assertEquals(AppStartMetrics .AppStartType .WARM , appStartMetrics.appStartType)
493- assertTrue(appStartMetrics.shouldSendStartMeasurements())
511+ assertTrue(appStartMetrics.shouldSendStartMeasurements(false ))
494512 }
495513
496514 @Test
@@ -882,7 +900,7 @@ class AppStartMetricsTest {
882900 whenever(firstActivity.isChangingConfigurations).thenReturn(false )
883901 metrics.onActivityCreated(firstActivity, null )
884902 assertEquals(AppStartMetrics .AppStartType .COLD , metrics.appStartType)
885- assertTrue(metrics.shouldSendStartMeasurements())
903+ assertTrue(metrics.shouldSendStartMeasurements(false ))
886904 metrics.onAppStartSpansSent()
887905 waitForMainLooperIdle()
888906
@@ -895,15 +913,15 @@ class AppStartMetricsTest {
895913 metrics.onActivityCreated(secondActivity, null )
896914 assertEquals(AppStartMetrics .AppStartType .WARM , metrics.appStartType)
897915 assertTrue(metrics.isAppLaunchedInForeground)
898- assertTrue(metrics.shouldSendStartMeasurements())
916+ assertTrue(metrics.shouldSendStartMeasurements(false ))
899917 metrics.onAppStartSpansSent()
900918
901919 // Third activity - should still be warm
902920 SystemClock .setCurrentTimeMillis(SystemClock .uptimeMillis() + 100 )
903921 metrics.onActivityCreated(mock<Activity >(), null )
904922 assertEquals(AppStartMetrics .AppStartType .WARM , metrics.appStartType)
905923 assertTrue(metrics.isAppLaunchedInForeground)
906- assertFalse(metrics.shouldSendStartMeasurements())
924+ assertFalse(metrics.shouldSendStartMeasurements(false ))
907925 }
908926
909927 @Test
0 commit comments