Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import com.google.common.truth.Truth.assertThat
import io.sentry.Breadcrumb
import io.sentry.Hint
import io.sentry.IScope
import io.sentry.ISentryExecutorService
import io.sentry.Scope
import io.sentry.ScopeType
import io.sentry.Sentry
Expand All @@ -30,6 +31,7 @@ import io.sentry.protocol.Contexts
import io.sentry.protocol.Mechanism
import io.sentry.protocol.SentryId
import io.sentry.protocol.User
import io.sentry.test.ImmediateExecutorService
import io.sentry.test.createTestScopes
import io.sentry.transport.ITransport
import io.sentry.transport.RateLimiter
Expand All @@ -38,7 +40,6 @@ import java.io.ByteArrayOutputStream
import java.io.InputStreamReader
import java.util.concurrent.atomic.AtomicReference
import kotlin.test.BeforeTest
import kotlin.test.Ignore
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertNotEquals
Expand All @@ -58,10 +59,12 @@ class InternalSentrySdkTest {
val capturedEnvelopes = mutableListOf<SentryEnvelope>()
lateinit var options: SentryOptions

fun init(context: Context) {
fun init(context: Context, executorService: ISentryExecutorService? = null) {
initForTest(context) { options ->
this@Fixture.options = options
options.dsn = "https://key@host/proj"
// Session persistence tests can finish startup rotation before writing session.json.
executorService?.let { options.executorService = it }
options.setTransportFactory { _, _ ->
object : ITransport {
override fun close(isRestarting: Boolean) {
Expand Down Expand Up @@ -484,7 +487,7 @@ class InternalSentrySdkTest {
@Test
fun `captureEnvelopeNonTerminating keeps the session Ok and flags the unhandled error`() {
val fixture = Fixture()
fixture.init(context)
fixture.init(context, executorService = ImmediateExecutorService())

Comment on lines 489 to 491
val originalSid = AtomicReference<String>()
Sentry.configureScope { scope -> originalSid.set(scope.session!!.sessionId) }
Expand Down Expand Up @@ -613,18 +616,10 @@ class InternalSentrySdkTest {
assertThat(activeSession.get().sessionId).isNotEqualTo(oldSid)
}

// Flaky: intermittently fails with FileNotFoundException reading session.json at the
// `sessionFile.reader()` call below, i.e. persistCurrentSession() did not leave a session file
// on disk by the time this test reads it back. Seen across unrelated PRs, e.g.:
// https://scans.gradle.com/s/55fnn6xhtfyfq/tests/task/:sentry-android-core:testReleaseUnitTest/details/io.sentry.android.core.InternalSentrySdkTest/updateSessionForDroppedEventNonTerminating%20flags%20an%20unhandled%20error%20without%20sending%20an%20envelope?top-execution=1
// https://scans.gradle.com/s/ojzzz4yxag7rw/tests/task/:sentry-android-core:testReleaseUnitTest/details/io.sentry.android.core.InternalSentrySdkTest/updateSessionForDroppedEventNonTerminating%20flags%20an%20unhandled%20error%20without%20sending%20an%20envelope?top-execution=1
// Disabling until root-caused; see https://github.com/getsentry/sentry-java/pull/5990 for the
// code under test.
@Ignore("Flaky: intermittently fails to find the persisted session.json, needs root-causing")
@Test
fun `updateSessionForDroppedEventNonTerminating flags an unhandled error without sending an envelope`() {
val fixture = Fixture()
fixture.init(context)
fixture.init(context, executorService = ImmediateExecutorService())

val originalSid = AtomicReference<String>()
Sentry.configureScope { scope -> originalSid.set(scope.session!!.sessionId) }
Expand Down Expand Up @@ -653,7 +648,7 @@ class InternalSentrySdkTest {
@Test
fun `updateSessionForDroppedEventNonTerminating increments errors for a handled error without sending an envelope`() {
val fixture = Fixture()
fixture.init(context)
fixture.init(context, executorService = ImmediateExecutorService())

val originalSid = AtomicReference<String>()
Sentry.configureScope { scope -> originalSid.set(scope.session!!.sessionId) }
Expand Down
Loading