Skip to content

Commit c02f059

Browse files
authored
Merge pull request #4992 from getsentry/12-19-metrics_external_options
feat(metrics): [Trace Metrics 13] Metrics external options
2 parents 7a122ec + cceb10f commit c02f059

File tree

5 files changed

+51
-0
lines changed

5 files changed

+51
-0
lines changed

sentry/api/sentry.api

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -513,6 +513,7 @@ public final class io/sentry/ExternalOptions {
513513
public fun isCaptureOpenTelemetryEvents ()Ljava/lang/Boolean;
514514
public fun isEnableBackpressureHandling ()Ljava/lang/Boolean;
515515
public fun isEnableLogs ()Ljava/lang/Boolean;
516+
public fun isEnableMetrics ()Ljava/lang/Boolean;
516517
public fun isEnablePrettySerializationOutput ()Ljava/lang/Boolean;
517518
public fun isEnableSpotlight ()Ljava/lang/Boolean;
518519
public fun isEnabled ()Ljava/lang/Boolean;
@@ -528,6 +529,7 @@ public final class io/sentry/ExternalOptions {
528529
public fun setEnableBackpressureHandling (Ljava/lang/Boolean;)V
529530
public fun setEnableDeduplication (Ljava/lang/Boolean;)V
530531
public fun setEnableLogs (Ljava/lang/Boolean;)V
532+
public fun setEnableMetrics (Ljava/lang/Boolean;)V
531533
public fun setEnablePrettySerializationOutput (Ljava/lang/Boolean;)V
532534
public fun setEnableSpotlight (Ljava/lang/Boolean;)V
533535
public fun setEnableUncaughtExceptionHandler (Ljava/lang/Boolean;)V

sentry/src/main/java/io/sentry/ExternalOptions.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ public final class ExternalOptions {
4444
private @Nullable Boolean enablePrettySerializationOutput;
4545
private @Nullable Boolean enableSpotlight;
4646
private @Nullable Boolean enableLogs;
47+
private @Nullable Boolean enableMetrics;
4748
private @Nullable String spotlightConnectionUrl;
4849

4950
private @Nullable List<String> ignoredCheckIns;
@@ -157,6 +158,8 @@ public final class ExternalOptions {
157158

158159
options.setEnableLogs(propertiesProvider.getBooleanProperty("logs.enabled"));
159160

161+
options.setEnableMetrics(propertiesProvider.getBooleanProperty("metrics.enabled"));
162+
160163
for (final String ignoredExceptionType :
161164
propertiesProvider.getList("ignored-exceptions-for-type")) {
162165
try {
@@ -539,6 +542,14 @@ public void setEnableLogs(final @Nullable Boolean enableLogs) {
539542
return enableLogs;
540543
}
541544

545+
public void setEnableMetrics(final @Nullable Boolean enableMetrics) {
546+
this.enableMetrics = enableMetrics;
547+
}
548+
549+
public @Nullable Boolean isEnableMetrics() {
550+
return enableMetrics;
551+
}
552+
542553
public @Nullable Double getProfileSessionSampleRate() {
543554
return profileSessionSampleRate;
544555
}

sentry/src/main/java/io/sentry/SentryOptions.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3480,6 +3480,10 @@ public void merge(final @NotNull ExternalOptions options) {
34803480
getLogs().setEnabled(options.isEnableLogs());
34813481
}
34823482

3483+
if (options.isEnableMetrics() != null) {
3484+
getMetrics().setEnabled(options.isEnableMetrics());
3485+
}
3486+
34833487
if (options.getProfileSessionSampleRate() != null) {
34843488
setProfileSessionSampleRate(options.getProfileSessionSampleRate());
34853489
}

sentry/src/test/java/io/sentry/ExternalOptionsTest.kt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,25 @@ class ExternalOptionsTest {
376376
withPropertiesFile("logs.enabled=true") { options -> assertTrue(options.isEnableLogs == true) }
377377
}
378378

379+
@Test
380+
fun `creates options with enableMetrics set to true`() {
381+
withPropertiesFile("metrics.enabled=true") { options ->
382+
assertTrue(options.isEnableMetrics == true)
383+
}
384+
}
385+
386+
@Test
387+
fun `creates options with enableMetrics set to false`() {
388+
withPropertiesFile("metrics.enabled=false") { options ->
389+
assertTrue(options.isEnableMetrics == false)
390+
}
391+
}
392+
393+
@Test
394+
fun `creates options with enableMetrics set to null when not set`() {
395+
withPropertiesFile { assertNull(it.isEnableMetrics) }
396+
}
397+
379398
@Test
380399
fun `creates options with profileSessionSampleRate set to 0_8`() {
381400
withPropertiesFile("profile-session-sample-rate=0.8") { options ->

sentry/src/test/java/io/sentry/SentryOptionsTest.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,7 @@ class SentryOptionsTest {
411411
externalOptions.spotlightConnectionUrl = "http://local.sentry.io:1234"
412412
externalOptions.isGlobalHubMode = true
413413
externalOptions.isEnableLogs = true
414+
externalOptions.isEnableMetrics = false
414415
externalOptions.profileSessionSampleRate = 0.8
415416
externalOptions.profilingTracesDirPath = "/profiling-traces"
416417
externalOptions.profileLifecycle = ProfileLifecycle.TRACE
@@ -469,6 +470,7 @@ class SentryOptionsTest {
469470
assertEquals("http://local.sentry.io:1234", options.spotlightConnectionUrl)
470471
assertTrue(options.isGlobalHubMode!!)
471472
assertTrue(options.logs.isEnabled!!)
473+
assertFalse(options.metrics.isEnabled)
472474
assertEquals(0.8, options.profileSessionSampleRate)
473475
assertEquals("/profiling-traces${File.separator}${hash}", options.profilingTracesDirPath)
474476
assertEquals(ProfileLifecycle.TRACE, options.profileLifecycle)
@@ -482,6 +484,14 @@ class SentryOptionsTest {
482484
assertTrue(options.isEnableUncaughtExceptionHandler)
483485
}
484486

487+
@Test
488+
fun `merging options when enableMetrics is not set preserves the default value`() {
489+
val externalOptions = ExternalOptions()
490+
val options = SentryOptions()
491+
options.merge(externalOptions)
492+
assertTrue(options.metrics.isEnabled)
493+
}
494+
485495
@Test
486496
fun `merging options merges and overwrites existing tag values`() {
487497
val externalOptions = ExternalOptions()
@@ -660,6 +670,11 @@ class SentryOptionsTest {
660670
assertTrue(SentryOptions().isEnableBackpressureHandling)
661671
}
662672

673+
@Test
674+
fun `when options are initialized, metrics is enabled by default`() {
675+
assertTrue(SentryOptions().metrics.isEnabled)
676+
}
677+
663678
@Test
664679
fun `when options are initialized, enableSpotlight is set to false by default`() {
665680
assertFalse(SentryOptions().isEnableSpotlight)

0 commit comments

Comments
 (0)