Skip to content

Commit d72b09f

Browse files
committed
added app start option checks in SentryPerformanceProvider
1 parent d790035 commit d72b09f

File tree

3 files changed

+31
-5
lines changed

3 files changed

+31
-5
lines changed

sentry-android-core/src/main/java/io/sentry/android/core/SentryPerformanceProvider.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,8 @@ private void launchAppStartProfiler(final @NotNull AppStartMetrics appStartMetri
139139
return;
140140
}
141141

142-
if (profilingOptions.isContinuousProfilingEnabled()) {
142+
if (profilingOptions.isContinuousProfilingEnabled()
143+
&& profilingOptions.isStartProfilerOnAppStart()) {
143144
createAndStartContinuousProfiler(context, profilingOptions, appStartMetrics);
144145
return;
145146
}
@@ -150,8 +151,9 @@ private void launchAppStartProfiler(final @NotNull AppStartMetrics appStartMetri
150151
return;
151152
}
152153

153-
createAndStartTransactionProfiler(context, profilingOptions, appStartMetrics);
154-
154+
if (profilingOptions.isEnableAppStartProfiling()) {
155+
createAndStartTransactionProfiler(context, profilingOptions, appStartMetrics);
156+
}
155157
} catch (FileNotFoundException e) {
156158
logger.log(SentryLevel.ERROR, "App start profiling config file not found. ", e);
157159
} catch (Throwable e) {

sentry-android-core/src/test/java/io/sentry/android/core/SentryPerformanceProviderTest.kt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,22 @@ class SentryPerformanceProviderTest {
326326
assertFalse(AppStartMetrics.getInstance().appStartProfiler!!.isRunning)
327327
}
328328

329+
@Test
330+
fun `when isEnableAppStartProfiling is false, transaction profiler is not started`() {
331+
fixture.getSut { config ->
332+
writeConfig(config, profilingEnabled = true, continuousProfilingEnabled = false, isEnableAppStartProfiling = false)
333+
}
334+
assertNull(AppStartMetrics.getInstance().appStartProfiler)
335+
}
336+
337+
@Test
338+
fun `when isStartProfilerOnAppStart is false, continuous profiler is not started`() {
339+
fixture.getSut { config ->
340+
writeConfig(config, profilingEnabled = false, continuousProfilingEnabled = true, isStartProfilerOnAppStart = false)
341+
}
342+
assertNull(AppStartMetrics.getInstance().appStartContinuousProfiler)
343+
}
344+
329345
@Test
330346
fun `when provider is closed, continuous profiler is stopped`() {
331347
val provider = fixture.getSut { config ->
@@ -345,6 +361,8 @@ class SentryPerformanceProviderTest {
345361
profileSampled: Boolean = true,
346362
profileSampleRate: Double = 1.0,
347363
continuousProfileSampled: Boolean = true,
364+
isEnableAppStartProfiling: Boolean = true,
365+
isStartProfilerOnAppStart: Boolean = true,
348366
profilingTracesDirPath: String = traceDir.absolutePath
349367
) {
350368
val appStartProfilingOptions = SentryAppStartProfilingOptions()
@@ -357,6 +375,8 @@ class SentryPerformanceProviderTest {
357375
appStartProfilingOptions.isContinuousProfileSampled = continuousProfileSampled
358376
appStartProfilingOptions.profilingTracesDirPath = profilingTracesDirPath
359377
appStartProfilingOptions.profilingTracesHz = 101
378+
appStartProfilingOptions.isEnableAppStartProfiling = isEnableAppStartProfiling
379+
appStartProfilingOptions.isStartProfilerOnAppStart = isStartProfilerOnAppStart
360380
JsonSerializer(SentryOptions.empty()).serialize(appStartProfilingOptions, FileWriter(configFile))
361381
}
362382
//endregion

sentry-samples/sentry-samples-android/src/main/AndroidManifest.xml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,12 @@
112112
<!-- how to enable profiling when starting transactions -->
113113
<!-- <meta-data android:name="io.sentry.traces.profiling.sample-rate" android:value="1.0" />-->
114114

115-
<!-- how to enable app start profiling -->
116-
<meta-data android:name="io.sentry.traces.profiling.enable-app-start" android:value="true" />
115+
<!-- Enable profiling, adjust in production env -->
116+
<meta-data android:name="io.sentry.traces.profiling.session-sample-rate" android:value="1.0" />
117+
<!-- Set profiling lifecycle, can be `manual` or `trace` -->
118+
<meta-data android:name="io.sentry.traces.profiling.lifecycle" android:value="manual" />
119+
<!-- Enable profiling on app start -->
120+
<meta-data android:name="io.sentry.traces.profiling.start-on-app-start" android:value="true" />
117121

118122
<!-- how to disable the Activity auto instrumentation for tracing-->
119123
<!-- <meta-data android:name="io.sentry.traces.activity.enable" android:value="false" />-->

0 commit comments

Comments
 (0)