Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Delete all results #102

Merged
merged 2 commits into from
Sep 16, 2024
Merged
Show file tree
Hide file tree
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
@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="#FF000000"
android:pathData="M376,660L480,556L584,660L640,604L536,500L640,396L584,340L480,444L376,340L320,396L424,500L320,604L376,660ZM280,840Q247,840 223.5,816.5Q200,793 200,760L200,240L160,240L160,160L360,160L360,120L600,120L600,160L800,160L800,240L760,240L760,760Q760,793 736.5,816.5Q713,840 680,840L280,840ZM680,240L280,240L280,760Q280,760 280,760Q280,760 280,760L680,760Q680,760 680,760Q680,760 680,760L680,240ZM280,240L280,240L280,760Q280,760 280,760Q280,760 280,760L280,760Q280,760 280,760Q280,760 280,760L280,240Z"/>
</vector>
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@

<string name="TestResults_Overview_Title">Test Results</string>
<string name="TestResults_Overview_Tab_Label">Test Results</string>
<string name="TestResults_Overview_NoTestsHaveBeenRun">No tests have been run yet. Try running one!</string>
<string name="TestResults_UnknownASN">Unknown</string>
<string name="TestResults_NotAvailable">N/A</string>

Expand Down Expand Up @@ -162,6 +163,8 @@
<string name="Modal_Retry">Retry</string>
<string name="Modal_Cancel">Cancel</string>
<string name="Modal_OK">OK</string>
<string name="Modal_DoYouWantToDeleteAllTests">Do you want to delete all test results?</string>
<string name="Modal_Delete">Delete</string>

<string name="Modal_Error_CantDownloadURLs">Unable to download URL list. Please try again.</string>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@ import okio.FileSystem
import okio.Path
import okio.Path.Companion.toPath

interface DeleteFile {
interface DeleteFiles {
suspend operator fun invoke(path: Path)
}

class DeleteFileOkio(
class DeleteFilesOkio(
private val fileSystem: FileSystem,
private val baseFilesDir: String,
) : DeleteFile {
) : DeleteFiles {
override suspend fun invoke(path: Path) {
fileSystem.delete(baseFilesDir.toPath().resolve(path))
fileSystem.deleteRecursively(baseFilesDir.toPath().resolve(path))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,16 @@ class ResultRepository(
database.resultQueries.deleteByRunId(resultId.value)
}

suspend fun deleteAll() {
withContext(backgroundDispatcher) {
database.transaction {
database.measurementQueries.deleteAll()
database.resultQueries.deleteAll()
database.networkQueries.deleteAll()
}
}
}

private fun Result.toModel(): ResultModel? {
return ResultModel(
id = ResultModel.Id(id),
Expand Down
17 changes: 11 additions & 6 deletions composeApp/src/commonMain/kotlin/org/ooni/probe/di/Dependencies.kt
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ import org.ooni.engine.NetworkTypeFinder
import org.ooni.engine.OonimkallBridge
import org.ooni.engine.TaskEventMapper
import org.ooni.probe.Database
import org.ooni.probe.data.disk.DeleteFile
import org.ooni.probe.data.disk.DeleteFileOkio
import org.ooni.probe.data.disk.DeleteFiles
import org.ooni.probe.data.disk.DeleteFilesOkio
import org.ooni.probe.data.disk.ReadFile
import org.ooni.probe.data.disk.ReadFileOkio
import org.ooni.probe.data.disk.WriteFile
Expand All @@ -39,6 +39,7 @@ import org.ooni.probe.data.repositories.ResultRepository
import org.ooni.probe.data.repositories.TestDescriptorRepository
import org.ooni.probe.data.repositories.UrlRepository
import org.ooni.probe.domain.BootstrapTestDescriptors
import org.ooni.probe.domain.DeleteAllResults
import org.ooni.probe.domain.DeleteTestDescriptor
import org.ooni.probe.domain.DownloadUrls
import org.ooni.probe.domain.FetchDescriptor
Expand Down Expand Up @@ -109,7 +110,7 @@ class Dependencies(

private val readFile: ReadFile by lazy { ReadFileOkio(FileSystem.SYSTEM, baseFileDir) }
private val writeFile: WriteFile by lazy { WriteFileOkio(FileSystem.SYSTEM, baseFileDir) }
private val deleteFile: DeleteFile by lazy { DeleteFileOkio(FileSystem.SYSTEM, baseFileDir) }
private val deleteFiles: DeleteFiles by lazy { DeleteFilesOkio(FileSystem.SYSTEM, baseFileDir) }

// Engine

Expand Down Expand Up @@ -147,6 +148,9 @@ class Dependencies(
urlRepository::createOrUpdateByUrl,
)
}
private val deleteAllResults by lazy {
DeleteAllResults(resultRepository::deleteAll, deleteFiles::invoke)
}
private val fetchDescriptor by lazy {
FetchDescriptor(
engineHttpDo = engine::httpDo,
Expand Down Expand Up @@ -202,7 +206,7 @@ class Dependencies(
storeMeasurement = measurementRepository::createOrUpdate,
storeNetwork = networkRepository::createIfNew,
writeFile = writeFile,
deleteFile = deleteFile,
deleteFiles = deleteFiles,
json = json,
spec = spec,
)
Expand Down Expand Up @@ -235,7 +239,7 @@ class Dependencies(
deleteMeasurementByResultRunId = measurementRepository::deleteByResultRunId,
selectMeasurementsByResultRunId = measurementRepository::selectByResultRunId,
deleteResultByRunId = resultRepository::deleteByRunId,
deleteFile = deleteFile::invoke,
deleteFile = deleteFiles::invoke,
)
}

Expand All @@ -253,7 +257,7 @@ class Dependencies(
getMeasurementsNotUploaded = measurementRepository.listNotUploaded(),
submitMeasurement = engine::submitMeasurements,
readFile = readFile,
deleteFile = deleteFile,
deleteFiles = deleteFiles,
updateMeasurement = measurementRepository::createOrUpdate,
)
}
Expand Down Expand Up @@ -299,6 +303,7 @@ class Dependencies(
goToResult = goToResult,
goToUpload = goToUpload,
getResults = getResults::invoke,
deleteAllResults = deleteAllResults::invoke,
)

fun runningViewModel(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.ooni.probe.domain

import okio.Path
import okio.Path.Companion.toPath

class DeleteAllResults(
private val deleteAllResultsFromDatabase: suspend () -> Unit,
private val deleteFiles: suspend (Path) -> Unit,
) {
suspend operator fun invoke() {
deleteAllResultsFromDatabase()
deleteFiles("Measurement".toPath())
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import kotlinx.serialization.json.Json
import org.ooni.engine.models.TaskEvent
import org.ooni.engine.models.TaskEventResult
import org.ooni.engine.models.TaskOrigin
import org.ooni.probe.data.disk.DeleteFile
import org.ooni.probe.data.disk.DeleteFiles
import org.ooni.probe.data.disk.WriteFile
import org.ooni.probe.data.models.Descriptor
import org.ooni.probe.data.models.InstalledTestDescriptorModel
Expand All @@ -29,7 +29,7 @@ class RunNetTest(
private val storeResult: suspend (ResultModel) -> ResultModel.Id,
private val setCurrentTestState: ((TestRunState) -> TestRunState) -> Unit,
private val writeFile: WriteFile,
private val deleteFile: DeleteFile,
private val deleteFiles: DeleteFiles,
private val json: Json,
private val spec: Specification,
) {
Expand Down Expand Up @@ -252,7 +252,7 @@ class RunNetTest(
is TaskEvent.TaskTerminated -> {
val measurement = measurements[event.index] ?: return
if (measurement.isUploaded) {
measurement.reportFilePath?.let { deleteFile(it) }
measurement.reportFilePath?.let { deleteFiles(it) }
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@ import kotlinx.coroutines.flow.first
import org.ooni.engine.Engine.MkException
import org.ooni.engine.OonimkallBridge.SubmitMeasurementResults
import org.ooni.engine.models.Result
import org.ooni.probe.data.disk.DeleteFile
import org.ooni.probe.data.disk.DeleteFiles
import org.ooni.probe.data.disk.ReadFile
import org.ooni.probe.data.models.MeasurementModel

class UploadMissingMeasurements(
private val getMeasurementsNotUploaded: Flow<List<MeasurementModel>>,
private val submitMeasurement: suspend (String) -> Result<SubmitMeasurementResults, MkException>,
private val readFile: ReadFile,
private val deleteFile: DeleteFile,
private val deleteFiles: DeleteFiles,
private val updateMeasurement: suspend (MeasurementModel) -> Unit,
) {
operator fun invoke(): Flow<State> =
Expand Down Expand Up @@ -49,7 +49,7 @@ class UploadMissingMeasurements(
reportId = MeasurementModel.ReportId(submitResult.updatedReportId),
),
)
deleteFile(reportFilePath)
deleteFiles(reportFilePath)
}
.onFailure { exception ->
failedToUpload++
Expand Down
Loading