Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -661,16 +661,17 @@ private void setColdStart(final @Nullable Bundle savedInstanceState) {
lastPausedTime = AndroidDateUtils.getCurrentSentryDateTime();
}
if (!firstActivityCreated) {
final @NotNull AppStartMetrics appStartMetrics = AppStartMetrics.getInstance();
// if Activity has savedInstanceState then its a warm start
// https://developer.android.com/topic/performance/vitals/launch-time#warm
// SentryPerformanceProvider sets this already
// pre-performance-v2: back-fill with best guess
if (options != null && !options.isEnablePerformanceV2()) {
AppStartMetrics.getInstance()
.setAppStartType(
savedInstanceState == null
? AppStartMetrics.AppStartType.COLD
: AppStartMetrics.AppStartType.WARM);
if ((options != null && !options.isEnablePerformanceV2())
|| appStartMetrics.getAppStartType() == AppStartMetrics.AppStartType.UNKNOWN) {
appStartMetrics.setAppStartType(
savedInstanceState == null
? AppStartMetrics.AppStartType.COLD
: AppStartMetrics.AppStartType.WARM);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@ class ActivityFramesTrackerTest {
val handler = mock<MainLooperHandler>()
val options = SentryAndroidOptions()

init {
// ActivityFramesTracker is used only if performanceV2 is disabled
options.isEnablePerformanceV2 = false
}

fun getSut(mockAggregator: Boolean = true): ActivityFramesTracker {
return if (mockAggregator) {
ActivityFramesTracker(loadClass, options, handler, aggregator)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -817,6 +817,7 @@ class ActivityLifecycleIntegrationTest {
val appStartMetrics = AppStartMetrics.getInstance()
appStartMetrics.appStartType = AppStartType.WARM
appStartMetrics.sdkInitTimeSpan.setStoppedAt(2)
appStartMetrics.appStartTimeSpan.setStoppedAt(2)

val endDate = appStartMetrics.sdkInitTimeSpan.projectedStopTimestamp

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -524,7 +524,7 @@ class AndroidOptionsInitializerTest {
}

@Test
fun `When Activity Frames Tracking is enabled, the Activity Frames Tracker should be available`() {
fun `When Activity Frames Tracking is enabled, the Activity Frames Tracker should be unavailable`() {
fixture.initSut(
hasAppContext = true,
useRealContext = true,
Expand All @@ -533,6 +533,25 @@ class AndroidOptionsInitializerTest {
}
)

val activityLifeCycleIntegration = fixture.sentryOptions.integrations
.first { it is ActivityLifecycleIntegration }

assertFalse(
(activityLifeCycleIntegration as ActivityLifecycleIntegration).activityFramesTracker.isFrameMetricsAggregatorAvailable
)
}

@Test
fun `When Activity Frames Tracking is enabled, the Activity Frames Tracker should be available if perfv2 is false`() {
fixture.initSut(
hasAppContext = true,
useRealContext = true,
configureOptions = {
isEnablePerformanceV2 = false
isEnableFramesTracking = true
}
)

val activityLifeCycleIntegration = fixture.sentryOptions.integrations
.first { it is ActivityLifecycleIntegration }

Expand All @@ -556,12 +575,32 @@ class AndroidOptionsInitializerTest {
}

@Test
fun `When Frames Tracking is initially disabled, but enabled via configureOptions it should be available`() {
fun `When Frames Tracking is initially disabled, but enabled via configureOptions it should be unavailable`() {
fixture.sentryOptions.isEnableFramesTracking = false
fixture.initSut(
hasAppContext = true,
useRealContext = true,
configureOptions = {
isEnableFramesTracking = true
}
)

val activityLifeCycleIntegration = fixture.sentryOptions.integrations
.first { it is ActivityLifecycleIntegration }

assertFalse(
(activityLifeCycleIntegration as ActivityLifecycleIntegration).activityFramesTracker.isFrameMetricsAggregatorAvailable
)
}

@Test
fun `When Frames Tracking is initially disabled, but enabled via configureOptions it should be available if perfv2 is false`() {
fixture.sentryOptions.isEnableFramesTracking = false
fixture.initSut(
hasAppContext = true,
useRealContext = true,
configureOptions = {
isEnablePerformanceV2 = false
isEnableFramesTracking = true
}
)
Expand Down
Loading