diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/BugReporter.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/BugReporter.kt index d3ae63b5936f0cb30d67f227d1640aef9603d987..d67d523d971bad04dbaa4f18d84230aa5e002a6d 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/BugReporter.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/BugReporter.kt @@ -1,5 +1,6 @@ package de.rki.coronawarnapp.bugreporting +import de.rki.coronawarnapp.util.CWADebug import de.rki.coronawarnapp.util.di.AppInjector interface BugReporter { @@ -7,6 +8,7 @@ interface BugReporter { } fun Throwable.reportProblem(tag: String? = null, info: String? = null) { + if (CWADebug.isAUnitTest) return val reporter = AppInjector.component.bugReporter reporter.report(this, tag, info) } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/exception/reporting/ExceptionReporter.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/exception/reporting/ExceptionReporter.kt index 8f602075d2af674dfa4b9853c9d9c22428e36777..06a6455a5d21d2d9a03b2cfd8c7c48dd5607cd51 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/exception/reporting/ExceptionReporter.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/exception/reporting/ExceptionReporter.kt @@ -10,6 +10,7 @@ import de.rki.coronawarnapp.exception.ExceptionCategory import de.rki.coronawarnapp.exception.reporting.ReportingConstants.STATUS_CODE_GOOGLE_API_FAIL import de.rki.coronawarnapp.exception.reporting.ReportingConstants.STATUS_CODE_GOOGLE_UPDATE_NEEDED import de.rki.coronawarnapp.exception.reporting.ReportingConstants.STATUS_CODE_REACHED_REQUEST_LIMIT +import de.rki.coronawarnapp.util.CWADebug import de.rki.coronawarnapp.util.tryFormattedError import java.io.PrintWriter import java.io.StringWriter @@ -22,6 +23,8 @@ fun Throwable.report( prefix: String?, suffix: String? ) { + if (CWADebug.isAUnitTest) return + reportProblem(tag = prefix, info = suffix) val context = CoronaWarnApplication.getAppContext() diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/task/TaskController.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/task/TaskController.kt index 77e22394784193a235c6a0793ebedf78d2ff5231..46b3964b9c81961b732ac03c8c5bdb4758b52211 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/task/TaskController.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/task/TaskController.kt @@ -1,6 +1,9 @@ package de.rki.coronawarnapp.task import androidx.annotation.VisibleForTesting +import de.rki.coronawarnapp.bugreporting.reportProblem +import de.rki.coronawarnapp.exception.ExceptionCategory +import de.rki.coronawarnapp.exception.reporting.report import de.rki.coronawarnapp.task.TaskFactory.Config.CollisionBehavior import de.rki.coronawarnapp.task.internal.InternalTaskState import de.rki.coronawarnapp.util.TimeStamper @@ -147,6 +150,8 @@ class TaskController @Inject constructor( state.job.getCompleted() } else { Timber.tag(TAG).e(error, "Task failed: %s", state) + error.report(ExceptionCategory.INTERNAL) + error.reportProblem(tag = state.request.type.simpleName) null } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/transaction/TransactionCoroutineScope.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/task/internal/DefaultTaskCoroutineScope.kt similarity index 75% rename from Corona-Warn-App/src/main/java/de/rki/coronawarnapp/transaction/TransactionCoroutineScope.kt rename to Corona-Warn-App/src/main/java/de/rki/coronawarnapp/task/internal/DefaultTaskCoroutineScope.kt index 0e27712b8af6d356585d87e67c6576dec91421ff..c10a3c04117bfa1fb76c1cf3da536a8b8684ffab 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/transaction/TransactionCoroutineScope.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/task/internal/DefaultTaskCoroutineScope.kt @@ -1,4 +1,4 @@ -package de.rki.coronawarnapp.transaction +package de.rki.coronawarnapp.task.internal import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -8,6 +8,6 @@ import javax.inject.Singleton import kotlin.coroutines.CoroutineContext @Singleton -class TransactionCoroutineScope @Inject constructor() : CoroutineScope { +class DefaultTaskCoroutineScope @Inject constructor() : CoroutineScope { override val coroutineContext: CoroutineContext = SupervisorJob() + Dispatchers.Default } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/task/internal/TaskModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/task/internal/TaskModule.kt index c94f6beb9e882a0cf1cd9c44374ba40637fa4333..f0169422b448ae4e1153a12fda48c7ff21f89b6d 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/task/internal/TaskModule.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/task/internal/TaskModule.kt @@ -4,7 +4,6 @@ import dagger.Module import dagger.Provides import de.rki.coronawarnapp.task.TaskCoroutineScope import de.rki.coronawarnapp.task.example.QueueingTaskModule -import de.rki.coronawarnapp.transaction.TransactionCoroutineScope import kotlinx.coroutines.CoroutineScope import javax.inject.Singleton @@ -17,5 +16,5 @@ class TaskModule { @Provides @Singleton @TaskCoroutineScope - fun provideScope(scope: TransactionCoroutineScope): CoroutineScope = scope + fun provideScope(scope: DefaultTaskCoroutineScope): CoroutineScope = scope } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/CWADebug.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/CWADebug.kt index 8efb6c14888cb3fb0193da546f7ea5f9cf7566d4..cade97a58323736139c16c3898b04b26944a21fe 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/CWADebug.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/CWADebug.kt @@ -31,4 +31,13 @@ object CWADebug { DEVICE("device"), DEVICE_FOR_TESTERS("deviceForTesters") } + + val isAUnitTest: Boolean by lazy { + try { + Class.forName("testhelpers.IsAUnitTest") + true + } catch (e: Exception) { + false + } + } } diff --git a/Corona-Warn-App/src/test/java/testhelpers/IsAUnitTest.kt b/Corona-Warn-App/src/test/java/testhelpers/IsAUnitTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..2af3e4cb78347fa7849576e9c3f36eac53fe3968 --- /dev/null +++ b/Corona-Warn-App/src/test/java/testhelpers/IsAUnitTest.kt @@ -0,0 +1,3 @@ +package testhelpers + +class IsAUnitTest