From d81684e2d1825564da8d0e52454c0e3ede5cd514 Mon Sep 17 00:00:00 2001 From: Lukas Bloder Date: Thu, 23 Mar 2023 13:42:43 +0100 Subject: [PATCH] Read integration list written by sentry gradle plugin from manifest (#2598) * read integration list written by sentry gradle plugin from manifest * add changelog * set submodule to same tag as main * Update sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java Co-authored-by: Roman Zavarnitsyn --------- Co-authored-by: Roman Zavarnitsyn --- CHANGELOG.md | 4 ++++ .../android/core/ManifestMetadataReader.java | 13 +++++++++++++ .../android/core/ManifestMetadataReaderTest.kt | 16 ++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index dc17a306cb..b3adbbdd31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +### Features + +- Read integration list written by sentry gradle plugin from manifest ([#2598](https://github.com/getsentry/sentry-java/pull/2598)) + ### Fixes - Fix wrong default environment in Session ([#2610](https://github.com/getsentry/sentry-java/pull/2610)) diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java b/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java index df9077838e..5446da2fab 100644 --- a/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java +++ b/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java @@ -5,6 +5,7 @@ import android.content.pm.PackageManager; import android.os.Bundle; import io.sentry.ILogger; +import io.sentry.SentryIntegrationPackageStorage; import io.sentry.SentryLevel; import io.sentry.protocol.SdkVersion; import io.sentry.util.Objects; @@ -86,6 +87,8 @@ final class ManifestMetadataReader { static final String PERFORM_FRAMES_TRACKING = "io.sentry.traces.frames-tracking"; + static final String SENTRY_GRADLE_PLUGIN_INTEGRATIONS = "io.sentry.gradle-plugin-integrations"; + /** ManifestMetadataReader ctor */ private ManifestMetadataReader() {} @@ -320,6 +323,16 @@ static void applyMetadata( options.setSendDefaultPii( readBool(metadata, logger, SEND_DEFAULT_PII, options.isSendDefaultPii())); + + // sdkInfo.addIntegration(); + + List integrationsFromGradlePlugin = + readList(metadata, logger, SENTRY_GRADLE_PLUGIN_INTEGRATIONS); + if (integrationsFromGradlePlugin != null) { + for (String integration : integrationsFromGradlePlugin) { + SentryIntegrationPackageStorage.getInstance().addIntegration(integration); + } + } } options diff --git a/sentry-android-core/src/test/java/io/sentry/android/core/ManifestMetadataReaderTest.kt b/sentry-android-core/src/test/java/io/sentry/android/core/ManifestMetadataReaderTest.kt index e8c637b2a6..99fe287c2f 100644 --- a/sentry-android-core/src/test/java/io/sentry/android/core/ManifestMetadataReaderTest.kt +++ b/sentry-android-core/src/test/java/io/sentry/android/core/ManifestMetadataReaderTest.kt @@ -15,6 +15,7 @@ import org.mockito.kotlin.verify import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertFalse +import kotlin.test.assertNotNull import kotlin.test.assertNull import kotlin.test.assertTrue @@ -1202,4 +1203,19 @@ class ManifestMetadataReaderTest { // Assert assertFalse(fixture.options.isEnableTimeToFullDisplayTracing) } + + @Test + fun `applyMetadata reads enabled integrations to SDK Version`() { + // Arrange + val bundle = bundleOf(ManifestMetadataReader.SENTRY_GRADLE_PLUGIN_INTEGRATIONS to "Database Instrumentation,OkHttp Instrumentation") + val context = fixture.getContext(metaData = bundle) + + // Act + ManifestMetadataReader.applyMetadata(context, fixture.options, fixture.buildInfoProvider) + + // Assert + val resultingSet = fixture.options.sdkVersion?.integrationSet + assertNotNull(resultingSet) + assert(resultingSet.containsAll(listOf("Database Instrumentation", "OkHttp Instrumentation"))) + } }