diff --git a/sentry-core/src/main/java/io/sentry/core/MainEventProcessor.java b/sentry-core/src/main/java/io/sentry/core/MainEventProcessor.java index 25225b902..bbf59eac6 100644 --- a/sentry-core/src/main/java/io/sentry/core/MainEventProcessor.java +++ b/sentry-core/src/main/java/io/sentry/core/MainEventProcessor.java @@ -68,6 +68,10 @@ private void processNonCachedEvent(SentryEvent event) { event.setEnvironment(options.getEnvironment()); } + if (event.getDist() == null) { + event.setDist(options.getDist()); + } + if (event.getThreads() == null) { event.setThreads(sentryThreadFactory.getCurrentThreads()); } diff --git a/sentry-core/src/main/java/io/sentry/core/SentryOptions.java b/sentry-core/src/main/java/io/sentry/core/SentryOptions.java index 5f7c725ce..db4143e3d 100644 --- a/sentry-core/src/main/java/io/sentry/core/SentryOptions.java +++ b/sentry-core/src/main/java/io/sentry/core/SentryOptions.java @@ -36,6 +36,7 @@ public class SentryOptions { private @Nullable Double sampleRate; private @NotNull List inAppExcludes; private @NotNull List inAppIncludes; + private @Nullable String dist; public void addEventProcessor(@NotNull EventProcessor eventProcessor) { eventProcessors.add(eventProcessor); @@ -228,6 +229,14 @@ public void addInAppInclude(@NotNull String include) { inAppIncludes.add(include); } + public @Nullable String getDist() { + return dist; + } + + public void setDist(@Nullable String dist) { + this.dist = dist; + } + public interface BeforeSendCallback { @Nullable SentryEvent execute(@NotNull SentryEvent event, @Nullable Object hint); diff --git a/sentry-core/src/test/java/io/sentry/core/MainEventProcessorTest.kt b/sentry-core/src/test/java/io/sentry/core/MainEventProcessorTest.kt index 80a77498d..d1bb86a09 100644 --- a/sentry-core/src/test/java/io/sentry/core/MainEventProcessorTest.kt +++ b/sentry-core/src/test/java/io/sentry/core/MainEventProcessorTest.kt @@ -14,6 +14,7 @@ class MainEventProcessorTest { dsn = dsnString release = "release" environment = "environment" + dist = "dist" } fun getSut() = MainEventProcessor(sentryOptions) } @@ -21,7 +22,7 @@ class MainEventProcessorTest { private val fixture = Fixture() @Test - fun `when processing an event from UncaughtExceptionHandlerIntegration, crashed thread is flaged, mechanism added`() { + fun `when processing an event from UncaughtExceptionHandlerIntegration, crashed thread is flagged, mechanism added`() { val sut = fixture.getSut() val crashedThread = Thread.currentThread() @@ -42,9 +43,25 @@ class MainEventProcessorTest { assertEquals("release", event.release) assertEquals("environment", event.environment) + assertEquals("dist", event.dist) assertTrue(event.threads.first { t -> t.id == crashedThread.id }.isCrashed) } + @Test + fun `data should be applied only if event doesn't have them`() { + val sut = fixture.getSut() + var event = generateCrashedEvent() + event.dist = "eventDist" + event.environment = "eventEnvironment" + event.release = "eventRelease" + + event = sut.process(event, null) + + assertEquals("eventRelease", event.release) + assertEquals("eventEnvironment", event.environment) + assertEquals("eventDist", event.dist) + } + @Test fun `When hint is Cached, data should not be applied`() { val sut = fixture.getSut()