Merge pull request #1969 from vector-im/feature/bma/rageshakeTraceConfig

Feature/bma/rageshake trace config
This commit is contained in:
Benoit Marty 2023-12-11 14:58:46 +01:00 committed by GitHub
commit da0e1d6eaa
5 changed files with 30 additions and 1 deletions

10
.idea/migrations.xml generated Normal file
View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectMigrations">
<option name="MigrateToGradleLocalJavaHome">
<set>
<option value="$PROJECT_DIR$" />
</set>
</option>
</component>
</project>

View file

@ -57,6 +57,7 @@ class TracingInitializer : Initializer<Unit> {
) )
} }
bugReporter.cleanLogDirectoryIfNeeded() bugReporter.cleanLogDirectoryIfNeeded()
bugReporter.setCurrentTracingFilter(tracingConfiguration.filterConfiguration.filter)
tracingService.setupTracing(tracingConfiguration) tracingService.setupTracing(tracingConfiguration)
// Also set env variable for rust back trace // Also set env variable for rust back trace
Os.setenv("RUST_BACKTRACE", "1", true) Os.setenv("RUST_BACKTRACE", "1", true)

View file

@ -47,4 +47,9 @@ interface BugReporter {
* Provide the log directory. * Provide the log directory.
*/ */
fun logDirectory(): File fun logDirectory(): File
/**
* Set the current tracing filter.
*/
fun setCurrentTracingFilter(tracingFilter: String)
} }

View file

@ -35,6 +35,7 @@ import io.element.android.libraries.core.meta.BuildMeta
import io.element.android.libraries.core.mimetype.MimeTypes import io.element.android.libraries.core.mimetype.MimeTypes
import io.element.android.libraries.di.AppScope import io.element.android.libraries.di.AppScope
import io.element.android.libraries.di.ApplicationContext import io.element.android.libraries.di.ApplicationContext
import io.element.android.libraries.di.SingleIn
import io.element.android.libraries.network.useragent.UserAgentProvider import io.element.android.libraries.network.useragent.UserAgentProvider
import io.element.android.libraries.sessionstorage.api.SessionStore import io.element.android.libraries.sessionstorage.api.SessionStore
import io.element.android.services.toolbox.api.systemclock.SystemClock import io.element.android.services.toolbox.api.systemclock.SystemClock
@ -63,6 +64,7 @@ import javax.inject.Provider
/** /**
* BugReporter creates and sends the bug reports. * BugReporter creates and sends the bug reports.
*/ */
@SingleIn(AppScope::class)
@ContributesBinding(AppScope::class) @ContributesBinding(AppScope::class)
class DefaultBugReporter @Inject constructor( class DefaultBugReporter @Inject constructor(
@ApplicationContext private val context: Context, @ApplicationContext private val context: Context,
@ -86,10 +88,10 @@ class DefaultBugReporter @Inject constructor(
// the pending bug report call // the pending bug report call
private var bugReportCall: Call? = null private var bugReportCall: Call? = null
// boolean to cancel the bug report // boolean to cancel the bug report
private val isCancelled = false private val isCancelled = false
private val logcatCommandDebug = arrayOf("logcat", "-d", "-v", "threadtime", "*:*") private val logcatCommandDebug = arrayOf("logcat", "-d", "-v", "threadtime", "*:*")
private var currentTracingFilter: String? = null
override suspend fun sendBugReport( override suspend fun sendBugReport(
withDevicesLogs: Boolean, withDevicesLogs: Boolean,
@ -153,6 +155,9 @@ class DefaultBugReporter @Inject constructor(
.addFormDataPart("device_id", deviceId) .addFormDataPart("device_id", deviceId)
.addFormDataPart("device", Build.MODEL.trim()) .addFormDataPart("device", Build.MODEL.trim())
.addFormDataPart("locale", Locale.getDefault().toString()) .addFormDataPart("locale", Locale.getDefault().toString())
currentTracingFilter?.let {
builder.addFormDataPart("tracing_filter", it)
}
// add the gzipped files, don't cancel the whole upload if only some file failed to upload // add the gzipped files, don't cancel the whole upload if only some file failed to upload
var uploadedSomeLogs = false var uploadedSomeLogs = false
@ -323,6 +328,10 @@ class DefaultBugReporter @Inject constructor(
} }
} }
override fun setCurrentTracingFilter(tracingFilter: String) {
currentTracingFilter = tracingFilter
}
/** /**
* @return the files on the log directory. * @return the files on the log directory.
*/ */

View file

@ -59,6 +59,10 @@ class FakeBugReporter(val mode: FakeBugReporterMode = FakeBugReporterMode.Succes
override fun logDirectory(): File { override fun logDirectory(): File {
return File("fake") return File("fake")
} }
override fun setCurrentTracingFilter(tracingFilter: String) {
// No op
}
} }
enum class FakeBugReporterMode { enum class FakeBugReporterMode {