Add e2e latency metrics.
Added a couple log lines also, to help with detecting issues with
downloading files from remote tool.
Bug: 392658517
Test: npm run test:unit:ci
Change-Id: I583c327215bb11d3e65d72d010503aa94387f0e5
diff --git a/tools/winscope/src/app/mediator.ts b/tools/winscope/src/app/mediator.ts
index b70e2f9..0397664 100644
--- a/tools/winscope/src/app/mediator.ts
+++ b/tools/winscope/src/app/mediator.ts
@@ -210,12 +210,14 @@
'Downloading files...',
undefined,
);
+ console.log("App reset for remote tool download.");
},
);
await event.visit(
WinscopeEventType.REMOTE_TOOL_FILES_RECEIVED,
async (event) => {
+ console.log("Remote tool files received.");
await this.processRemoteFilesReceived(
event.files,
FilesSource.REMOTE_TOOL,
@@ -360,11 +362,13 @@
}
private async loadFiles(files: File[], source: FilesSource) {
+ const startTimeMs = Date.now();
await this.tracePipeline.loadFiles(
files,
source,
this.currentProgressListener,
);
+ Analytics.Loading.logLoadFilesTime(Date.now() - startTimeMs, source);
}
private async propagateTracePosition(
@@ -486,6 +490,7 @@
}
private async loadViewers(source: FilesSource) {
+ const e2eStartTimeMs = Date.now();
this.currentProgressListener?.onProgressUpdate(
'Computing frame mapping...',
undefined,
@@ -574,6 +579,7 @@
// Meaning the viewer could perform twice the initial heavy pre-processing,
// thus increasing UI initialization times.
await this.appComponent.onWinscopeEvent(new ViewersLoaded(this.viewers));
+ Analytics.Loading.logLoadViewersTime(Date.now() - e2eStartTimeMs);
}
private getInitialTracePosition(): TracePosition | undefined {
diff --git a/tools/winscope/src/logging/analytics.ts b/tools/winscope/src/logging/analytics.ts
index ab81534..6589930 100644
--- a/tools/winscope/src/logging/analytics.ts
+++ b/tools/winscope/src/logging/analytics.ts
@@ -36,6 +36,8 @@
private static GLOBAL_EXCEPTION = 'global_exception';
private static HIERARCHY_SETTINGS = 'hierarchy_settings';
private static JS_MEMORY_USAGE = 'js_memory_usage';
+ private static LOAD_FILES_TIME = 'load_files_time';
+ private static LOAD_VIEWERS_TIME = 'load_viewer_time';
private static NAVIGATION_ZOOM_EVENT = 'navigation_zoom';
private static PROPERTIES_SETTINGS = 'properties_settings';
private static PROXY_ERROR = 'proxy_error';
@@ -119,6 +121,14 @@
Analytics.logTimeMs(Analytics.FRAME_MAP_BUILD_TIME, ms);
}
+ static logLoadFilesTime(ms: number, files_source: FilesSource) {
+ Analytics.logTimeMs(Analytics.LOAD_FILES_TIME, ms, {files_source});
+ }
+
+ static logLoadViewersTime(ms: number) {
+ Analytics.logTimeMs(Analytics.LOAD_VIEWERS_TIME, ms);
+ }
+
static logViewerInitializationTime(
traceType: string,
files_source: FilesSource,
diff --git a/tools/winscope/src/trace_collection/trace_configuration.ts b/tools/winscope/src/trace_collection/trace_configuration.ts
index 84708c6..06a2c30 100644
--- a/tools/winscope/src/trace_collection/trace_configuration.ts
+++ b/tools/winscope/src/trace_collection/trace_configuration.ts
@@ -242,7 +242,7 @@
types: [TraceType.WAYLAND, TraceType.WAYLAND_DUMP],
},
eventlog: {
- name: TRACE_INFO[TraceType.EVENT_LOG].name + " (CUJs)",
+ name: TRACE_INFO[TraceType.EVENT_LOG].name + ' (CUJs)',
config: {
enabled: false,
checkboxConfigs: [],