diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/api/ui/LoggerState.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/api/ui/LoggerState.kt index 3244c5f34b18712f59e379f811d8d198268bca99..2466cb7d6598603c6d97ef9a27ce9805094073f0 100644 --- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/api/ui/LoggerState.kt +++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/api/ui/LoggerState.kt @@ -3,11 +3,13 @@ package de.rki.coronawarnapp.test.api.ui import de.rki.coronawarnapp.util.CWADebug data class LoggerState( - val isLogging: Boolean + val isLogging: Boolean, + val logsize: Long ) { companion object { internal fun CWADebug.toLoggerState() = LoggerState( - isLogging = fileLogger?.isLogging ?: false + isLogging = fileLogger?.isLogging ?: false, + logsize = fileLogger?.logFile?.length() ?: 0L ) } } diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/debugoptions/ui/DebugOptionsFragment.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/debugoptions/ui/DebugOptionsFragment.kt index 91b1206da2ff70f7df02367cf75d340c70809c70..a8ffbb7e2fab13a8e84351ff1809f1bf3e832af5 100644 --- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/debugoptions/ui/DebugOptionsFragment.kt +++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/debugoptions/ui/DebugOptionsFragment.kt @@ -2,6 +2,7 @@ package de.rki.coronawarnapp.test.debugoptions.ui import android.annotation.SuppressLint import android.os.Bundle +import android.text.format.Formatter import android.view.View import android.widget.RadioButton import android.widget.RadioGroup @@ -49,6 +50,8 @@ class DebugOptionsFragment : Fragment(R.layout.fragment_test_debugoptions), Auto vm.loggerState.observe2(this) { state -> binding.apply { testLogfileToggle.isChecked = state.isLogging + val logSize = Formatter.formatShortFileSize(requireContext(), state.logsize) + testLogfileToggle.text = "Logfile enabled ($logSize)" testLogfileShare.setGone(!state.isLogging) } } diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/debugoptions/ui/DebugOptionsFragmentViewModel.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/debugoptions/ui/DebugOptionsFragmentViewModel.kt index c58e64556e2a35b1f6604de20ecaee41ba75638e..e2d85089b1776f300d7c77c79be4a8b0d9a1fc6a 100644 --- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/debugoptions/ui/DebugOptionsFragmentViewModel.kt +++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/debugoptions/ui/DebugOptionsFragmentViewModel.kt @@ -5,11 +5,7 @@ import androidx.lifecycle.viewModelScope import com.squareup.inject.assisted.AssistedInject import de.rki.coronawarnapp.environment.EnvironmentSetup import de.rki.coronawarnapp.environment.EnvironmentSetup.Type.Companion.toEnvironmentType -import de.rki.coronawarnapp.risk.RiskLevelTask import de.rki.coronawarnapp.storage.LocalData -import de.rki.coronawarnapp.storage.TestSettings -import de.rki.coronawarnapp.task.TaskController -import de.rki.coronawarnapp.task.common.DefaultTaskRequest import de.rki.coronawarnapp.test.api.ui.EnvironmentState.Companion.toEnvironmentState import de.rki.coronawarnapp.test.api.ui.LoggerState.Companion.toLoggerState import de.rki.coronawarnapp.util.CWADebug @@ -26,8 +22,6 @@ import java.io.File class DebugOptionsFragmentViewModel @AssistedInject constructor( @AppContext private val context: Context, private val envSetup: EnvironmentSetup, - private val testSettings: TestSettings, - private val taskController: TaskController, dispatcherProvider: DispatcherProvider ) : CWAViewModel(dispatcherProvider = dispatcherProvider) { @@ -71,10 +65,6 @@ class DebugOptionsFragmentViewModel @AssistedInject constructor( loggerState.update { CWADebug.toLoggerState() } } - fun calculateRiskLevelClicked() { - taskController.submit(DefaultTaskRequest(RiskLevelTask::class)) - } - val logShareEvent = SingleLiveEvent<File?>() fun shareLogFile() { 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 cade97a58323736139c16c3898b04b26944a21fe..7cd12213f2f78ba61bab44e4e4c7bb3b05685eb2 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 @@ -14,7 +14,7 @@ object CWADebug { if (BuildConfig.DEBUG) { Timber.plant(Timber.DebugTree()) } - if ((buildFlavor == BuildFlavor.DEVICE_FOR_TESTERS || BuildConfig.DEBUG)) { + if (isDeviceForTestersBuild) { fileLogger = FileLogger(application) } } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/debug/FileLogger.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/debug/FileLogger.kt index eb3b29093e4a6c772d65dd7167ecbeda941588e0..e8d283d9c7695095ffa9995d76aa3cb2c232873a 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/debug/FileLogger.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/debug/FileLogger.kt @@ -1,39 +1,45 @@ package de.rki.coronawarnapp.util.debug import android.content.Context +import de.rki.coronawarnapp.util.CWADebug import timber.log.Timber import java.io.File -class FileLogger constructor(private val context: Context) { +class FileLogger constructor(context: Context) { val logFile = File(context.cacheDir, "FileLoggerTree.log") - val triggerFile = File(context.filesDir, "FileLoggerTree.trigger") + + private val blockerFile = File(context.filesDir, "FileLoggerTree.blocker") private var loggerTree: FileLoggerTree? = null val isLogging: Boolean get() = loggerTree != null init { - if (triggerFile.exists()) { + if (!blockerFile.exists()) { start() } } fun start() { + if (!CWADebug.isDeviceForTestersBuild) return + if (loggerTree != null) return loggerTree = FileLoggerTree(logFile).also { Timber.plant(it) it.start() - triggerFile.createNewFile() + blockerFile.delete() } } fun stop() { + if (!CWADebug.isDeviceForTestersBuild) return + loggerTree?.let { it.stop() logFile.delete() - triggerFile.delete() + blockerFile.createNewFile() loggerTree = null } } diff --git a/Corona-Warn-App/src/testDeviceForTesters/java/de/rki/coronawarnapp/test/debugoptions/ui/DebugOptionsFragmentViewModelTest.kt b/Corona-Warn-App/src/testDeviceForTesters/java/de/rki/coronawarnapp/test/debugoptions/ui/DebugOptionsFragmentViewModelTest.kt index 42ad7c156bb1ceff1fb4a3603f1849edb92f444c..41ea40f28f2074b96d99fb6abd733be53881ce85 100644 --- a/Corona-Warn-App/src/testDeviceForTesters/java/de/rki/coronawarnapp/test/debugoptions/ui/DebugOptionsFragmentViewModelTest.kt +++ b/Corona-Warn-App/src/testDeviceForTesters/java/de/rki/coronawarnapp/test/debugoptions/ui/DebugOptionsFragmentViewModelTest.kt @@ -3,8 +3,6 @@ package de.rki.coronawarnapp.test.debugoptions.ui import android.content.Context import androidx.lifecycle.Observer import de.rki.coronawarnapp.environment.EnvironmentSetup -import de.rki.coronawarnapp.storage.TestSettings -import de.rki.coronawarnapp.task.TaskController import de.rki.coronawarnapp.test.api.ui.EnvironmentState import io.kotest.matchers.shouldBe import io.mockk.MockKAnnotations @@ -30,8 +28,6 @@ class DebugOptionsFragmentViewModelTest : BaseTest() { @MockK private lateinit var environmentSetup: EnvironmentSetup @MockK private lateinit var context: Context - @MockK private lateinit var testSettings: TestSettings - @MockK lateinit var taskController: TaskController private var currentEnvironment = EnvironmentSetup.Type.DEV @@ -61,9 +57,7 @@ class DebugOptionsFragmentViewModelTest : BaseTest() { private fun createViewModel(): DebugOptionsFragmentViewModel = DebugOptionsFragmentViewModel( context = context, - taskController = taskController, envSetup = environmentSetup, - testSettings = testSettings, dispatcherProvider = TestDispatcherProvider )