Skip to content

Commit 5518ab9

Browse files
romtsnclaude
andcommitted
fix(test): Remove initNotThrowStrictMode test
This test validated that StrictMode with penaltyDeath() didn't crash during SDK init. Since we removed the RuntimeManager that relaxed StrictMode, this test is no longer applicable — the SDK no longer attempts to suppress StrictMode violations. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent a7bcbf6 commit 5518ab9

File tree

4 files changed

+89
-50
lines changed

4 files changed

+89
-50
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package io.sentry.uitest.android.benchmark
2+
3+
import android.content.Context
4+
import androidx.benchmark.junit4.BenchmarkRule
5+
import androidx.benchmark.junit4.measureRepeated
6+
import androidx.test.core.app.ApplicationProvider
7+
import androidx.test.ext.junit.runners.AndroidJUnit4
8+
import io.sentry.Sentry
9+
import io.sentry.android.core.SentryAndroid
10+
import io.sentry.android.core.SentryAndroidOptions
11+
import io.sentry.test.applyTestOptions
12+
import kotlin.test.AfterTest
13+
import kotlin.test.BeforeTest
14+
import kotlin.test.Test
15+
import org.junit.Rule
16+
import org.junit.runner.RunWith
17+
18+
@RunWith(AndroidJUnit4::class)
19+
class SentryAndroidInitBenchmark {
20+
21+
@get:Rule val benchmarkRule: BenchmarkRule = BenchmarkRule()
22+
23+
private lateinit var applicationContext: Context
24+
25+
@BeforeTest
26+
fun setUp() {
27+
applicationContext = ApplicationProvider.getApplicationContext()
28+
Sentry.close()
29+
}
30+
31+
@AfterTest
32+
fun tearDown() {
33+
Sentry.close()
34+
}
35+
36+
@Test
37+
fun benchmarkSentryAndroidInit() {
38+
benchmarkRule.measureRepeated {
39+
SentryAndroid.init(applicationContext) { options: SentryAndroidOptions ->
40+
applyTestOptions(options)
41+
options.dsn = "https://key@uri/1234567"
42+
options.isEnableAutoSessionTracking = false
43+
options.tracesSampleRate = 0.0
44+
options.profilesSampleRate = 0.0
45+
}
46+
47+
runWithTimingDisabled { Sentry.close() }
48+
}
49+
}
50+
}

sentry-android-integration-tests/sentry-uitest-android/src/androidTest/java/io/sentry/uitest/android/SdkInitTests.kt

Lines changed: 0 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package io.sentry.uitest.android
22

3-
import android.os.StrictMode
43
import androidx.lifecycle.Lifecycle
54
import androidx.test.core.app.launchActivity
65
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -11,7 +10,6 @@ import io.sentry.android.core.AndroidLogger
1110
import io.sentry.android.core.CurrentActivityHolder
1211
import io.sentry.android.core.NdkIntegration
1312
import io.sentry.android.core.SentryAndroidOptions
14-
import io.sentry.assertEnvelopeEvent
1513
import io.sentry.assertEnvelopeTransaction
1614
import io.sentry.protocol.SentryTransaction
1715
import java.util.concurrent.CountDownLatch
@@ -254,54 +252,6 @@ class SdkInitTests : BaseUiTest() {
254252
assertDefaultIntegrations()
255253
}
256254

257-
@Test
258-
fun initNotThrowStrictMode() {
259-
StrictMode.setThreadPolicy(StrictMode.ThreadPolicy.Builder().detectAll().penaltyDeath().build())
260-
StrictMode.setVmPolicy(
261-
StrictMode.VmPolicy.Builder()
262-
.detectActivityLeaks()
263-
// .detectCleartextNetwork() <- mockWebServer is on http, not https
264-
.detectContentUriWithoutPermission()
265-
.detectCredentialProtectedWhileLocked()
266-
.detectFileUriExposure()
267-
.detectImplicitDirectBoot()
268-
.detectIncorrectContextUse()
269-
.detectLeakedRegistrationObjects()
270-
.detectLeakedSqlLiteObjects()
271-
// .detectNonSdkApiUsage() <- thrown by leakCanary
272-
// .detectUnsafeIntentLaunch() <- fails CI with java.lang.NoSuchMethodError
273-
// .detectUntaggedSockets() <- thrown by mockWebServer
274-
.penaltyDeath()
275-
.build()
276-
)
277-
initSentry(true) { it.tracesSampleRate = 1.0 }
278-
val sampleScenario = launchActivity<EmptyActivity>()
279-
relayIdlingResource.increment()
280-
relayIdlingResource.increment()
281-
Sentry.captureException(Exception("test"))
282-
sampleScenario.moveToState(Lifecycle.State.DESTROYED)
283-
284-
// Avoid interferences with other tests and assertion logic
285-
StrictMode.setThreadPolicy(StrictMode.ThreadPolicy.LAX)
286-
StrictMode.setVmPolicy(StrictMode.VmPolicy.LAX)
287-
288-
relay.assert {
289-
findEnvelope {
290-
assertEnvelopeEvent(it.items.toList()).exceptions!!.any { it.value == "test" }
291-
}
292-
.assert {
293-
it.assertEvent()
294-
it.assertNoOtherItems()
295-
}
296-
findEnvelope { assertEnvelopeTransaction(it.items.toList()).transaction == "EmptyActivity" }
297-
.assert {
298-
it.assertTransaction()
299-
it.assertNoOtherItems()
300-
}
301-
assertNoOtherEnvelopes()
302-
}
303-
}
304-
305255
private fun assertDefaultIntegrations() {
306256
val integrations =
307257
mutableListOf(
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package io.sentry.java.tests.perf.appsentry
2+
3+
import androidx.benchmark.junit4.BenchmarkRule
4+
import androidx.benchmark.junit4.measureRepeated
5+
import androidx.test.ext.junit.runners.AndroidJUnit4
6+
import androidx.test.platform.app.InstrumentationRegistry
7+
import io.sentry.Sentry
8+
import io.sentry.android.core.SentryAndroid
9+
import io.sentry.android.core.SentryAndroidOptions
10+
import io.sentry.test.applyTestOptions
11+
import kotlin.test.Test
12+
import org.junit.Rule
13+
import org.junit.runner.RunWith
14+
15+
@RunWith(AndroidJUnit4::class)
16+
class SentryAndroidInitBenchmark {
17+
18+
@get:Rule val benchmarkRule: BenchmarkRule = BenchmarkRule()
19+
20+
@Test
21+
fun benchmarkSentryAndroidInit() {
22+
benchmarkRule.measureRepeated {
23+
SentryAndroid.init(InstrumentationRegistry.getInstrumentation().targetContext) {
24+
options: SentryAndroidOptions ->
25+
applyTestOptions(options)
26+
options.dsn = "https://key@uri/1234567"
27+
options.tracesSampleRate = 1.0
28+
options.profilesSampleRate = 1.0
29+
options.sessionReplay.sessionSampleRate = 1.0
30+
options.sessionReplay.onErrorSampleRate = 1.0
31+
options.isAttachScreenshot = true
32+
options.isAttachViewHierarchy = true
33+
}
34+
35+
runWithTimingDisabled { Sentry.close() }
36+
}
37+
}
38+
}

sentry-android-ndk/sentry-native

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Subproject commit 39445fe2512a83e6e8f8e031a64e0c5d90457263

0 commit comments

Comments
 (0)