@@ -3,6 +3,7 @@ package io.sentry.uitest.android
33import androidx.lifecycle.Lifecycle
44import androidx.test.core.app.launchActivity
55import androidx.test.ext.junit.runners.AndroidJUnit4
6+ import io.sentry.IConnectionStatusProvider
67import io.sentry.ProfilingTraceData
78import io.sentry.Sentry
89import io.sentry.SentryIntegrationPackageStorage
@@ -23,19 +24,51 @@ import shark.AndroidReferenceMatchers
2324import shark.IgnoredReferenceMatcher
2425import shark.ReferencePattern
2526
27+ /* * Test connection status provider that always reports connected. */
28+ private class AlwaysOnlineStatusProvider : IConnectionStatusProvider {
29+
30+ override fun close () {
31+ // No-op for test implementation
32+ }
33+
34+ override fun getConnectionStatus (): IConnectionStatusProvider .ConnectionStatus {
35+ return IConnectionStatusProvider .ConnectionStatus .CONNECTED
36+ }
37+
38+ override fun getConnectionType (): String? {
39+ return null
40+ }
41+
42+ override fun addConnectionStatusObserver (
43+ observer : IConnectionStatusProvider .IConnectionStatusObserver
44+ ): Boolean {
45+ return false
46+ }
47+
48+ override fun removeConnectionStatusObserver (
49+ observer : IConnectionStatusProvider .IConnectionStatusObserver
50+ ) {
51+ // no-op
52+ }
53+ }
54+
2655@RunWith(AndroidJUnit4 ::class )
2756class SdkInitTests : BaseUiTest () {
2857 @Test
2958 fun doubleInitDoesNotThrow () {
3059 initSentry(false ) { options: SentryAndroidOptions ->
3160 options.tracesSampleRate = 1.0
3261 options.profilesSampleRate = 1.0
62+ options.readTimeoutMillis = 500
63+ options.connectionTimeoutMillis = 500
3364 }
3465 val transaction = Sentry .startTransaction(" e2etests" , " testInit" )
3566 val sampleScenario = launchActivity<EmptyActivity >()
3667 initSentry(false ) { options: SentryAndroidOptions ->
3768 options.tracesSampleRate = 1.0
3869 options.profilesSampleRate = 1.0
70+ options.readTimeoutMillis = 500
71+ options.connectionTimeoutMillis = 500
3972 }
4073 transaction.finish()
4174 sampleScenario.moveToState(Lifecycle .State .DESTROYED )
@@ -53,6 +86,9 @@ class SdkInitTests : BaseUiTest() {
5386 // We use the same executorService before and after closing the SDK
5487 it.executorService = options.executorService
5588 it.isDebug = true
89+ it.readTimeoutMillis = 500
90+ it.connectionTimeoutMillis = 500
91+ it.connectionStatusProvider = AlwaysOnlineStatusProvider ()
5692 }
5793 val transaction = Sentry .startTransaction(" e2etests" , " testInit" )
5894 val sampleScenario = launchActivity<EmptyActivity >()
@@ -62,6 +98,9 @@ class SdkInitTests : BaseUiTest() {
6298 // We use the same executorService before and after closing the SDK
6399 it.executorService = options.executorService
64100 it.isDebug = true
101+ it.readTimeoutMillis = 500
102+ it.connectionTimeoutMillis = 500
103+ it.connectionStatusProvider = AlwaysOnlineStatusProvider ()
65104 }
66105 relayIdlingResource.increment()
67106 relayIdlingResource.increment()
@@ -103,7 +142,12 @@ class SdkInitTests : BaseUiTest() {
103142 // Let's make the first request timeout
104143 relay.addTimeoutResponse()
105144
106- initSentry(true ) { options: SentryAndroidOptions -> options.tracesSampleRate = 1.0 }
145+ initSentry(true ) { options: SentryAndroidOptions ->
146+ options.tracesSampleRate = 1.0
147+ options.readTimeoutMillis = 500
148+ options.connectionTimeoutMillis = 500
149+ options.connectionStatusProvider = AlwaysOnlineStatusProvider ()
150+ }
107151
108152 Sentry .startTransaction(" beforeRestart" , " emptyTransaction" ).finish()
109153
@@ -120,6 +164,9 @@ class SdkInitTests : BaseUiTest() {
120164 initSentry(true ) { options: SentryAndroidOptions ->
121165 options.tracesSampleRate = 1.0
122166 options.profilesSampleRate = 1.0
167+ options.readTimeoutMillis = 500
168+ options.connectionTimeoutMillis = 500
169+ options.connectionStatusProvider = AlwaysOnlineStatusProvider ()
123170 }
124171 val afterRestart = System .currentTimeMillis()
125172 val restartMs = afterRestart - beforeRestart
@@ -156,6 +203,7 @@ class SdkInitTests : BaseUiTest() {
156203 initSentry(true ) { options: SentryAndroidOptions ->
157204 options.tracesSampleRate = 1.0
158205 options.flushTimeoutMillis = 3000
206+ options.connectionStatusProvider = AlwaysOnlineStatusProvider ()
159207 }
160208
161209 Sentry .startTransaction(" beforeRestart" , " emptyTransaction" ).finish()
@@ -170,6 +218,7 @@ class SdkInitTests : BaseUiTest() {
170218 initSentry(true ) { options: SentryAndroidOptions ->
171219 options.tracesSampleRate = 1.0
172220 options.profilesSampleRate = 1.0
221+ options.connectionStatusProvider = AlwaysOnlineStatusProvider ()
173222 }
174223 val afterRestart = System .currentTimeMillis()
175224 val restartMs = afterRestart - beforeRestart
@@ -224,6 +273,9 @@ class SdkInitTests : BaseUiTest() {
224273 initSentry(false ) { options: SentryAndroidOptions ->
225274 options.tracesSampleRate = 1.0
226275 options.profilesSampleRate = 1.0
276+ options.readTimeoutMillis = 500
277+ options.connectionTimeoutMillis = 500
278+ options.connectionStatusProvider = AlwaysOnlineStatusProvider ()
227279 }
228280 }
229281 activityScenario.moveToState(Lifecycle .State .DESTROYED )
@@ -244,6 +296,9 @@ class SdkInitTests : BaseUiTest() {
244296 initSentry(false ) { options: SentryAndroidOptions ->
245297 options.tracesSampleRate = 1.0
246298 options.profilesSampleRate = 1.0
299+ options.readTimeoutMillis = 500
300+ options.connectionTimeoutMillis = 500
301+ options.connectionStatusProvider = AlwaysOnlineStatusProvider ()
247302 }
248303 initLatch.countDown()
249304 }
0 commit comments