From 89ab6ff7af3f6b989bf6947d655f44a4febb7b99 Mon Sep 17 00:00:00 2001 From: Christof Marti Date: Thu, 14 Jul 2016 11:50:37 -0700 Subject: [PATCH] Collect telemetry for #55 - update from feedback --- .../search/browser/openAnythingHandler.ts | 52 ++++++++++++------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/src/vs/workbench/parts/search/browser/openAnythingHandler.ts b/src/vs/workbench/parts/search/browser/openAnythingHandler.ts index 365ad21a11a..f9ba32e26fd 100644 --- a/src/vs/workbench/parts/search/browser/openAnythingHandler.ts +++ b/src/vs/workbench/parts/search/browser/openAnythingHandler.ts @@ -41,6 +41,14 @@ interface ITimerEventData { numberOfResultEntries: number; } +interface ITelemetryData { + fromCache: boolean; + searchLength: number; + unsortedResultTime: number; + sortedResultTime: number; + numberOfResultEntries: number; +} + // OpenSymbolHandler is used from an extension and must be in the main bundle file so it can load export import OpenSymbolHandler = openSymbolHandler.OpenSymbolHandler; @@ -87,7 +95,7 @@ export class OpenAnythingHandler extends QuickOpenHandler { public getResults(searchValue: string): TPromise { const timerEvent = this.telemetryService.timedPublicLog('openAnything'); - const startTime = timerEvent.startTime ? timerEvent.startTime.getTime() : Date.now(); + const startTime = timerEvent.startTime ? timerEvent.startTime.getTime() : Date.now(); // startTime is undefined when telemetry is disabled searchValue = searchValue.replace(/ /g, ''); // get rid of all whitespace // Help Windows users to search for paths when using slash @@ -115,15 +123,10 @@ export class OpenAnythingHandler extends QuickOpenHandler { // Check Cache first let cachedResults = this.getResultsFromCache(searchValue, searchWithRange ? searchWithRange.range : null); if (cachedResults) { - timerEvent.data = { - fromCache: true, - searchLength: searchValue.length, - unsortedResultDuration: cachedResults.unsortedResultTime - startTime, - sortedResultDuration: cachedResults.sortedResultTime - startTime, - numberOfResultEntries: cachedResults.numberOfResultEntries - }; + const [viewResults, telemetry] = cachedResults; + timerEvent.data = this.createTimerEventData(startTime, telemetry); timerEvent.stop(); - return TPromise.as(new QuickOpenModel(cachedResults.viewResults)); + return TPromise.as(new QuickOpenModel(viewResults)); } // The throttler needs a factory for its promises @@ -205,13 +208,13 @@ export class OpenAnythingHandler extends QuickOpenHandler { } }); - timerEvent.data = { + timerEvent.data = this.createTimerEventData(startTime, { fromCache: false, searchLength: searchValue.length, - unsortedResultDuration: unsortedResultTime - startTime, - sortedResultDuration: sortedResultTime - startTime, + unsortedResultTime, + sortedResultTime, numberOfResultEntries: result.length - }; + }); timerEvent.stop(); return TPromise.as(new QuickOpenModel(viewResults)); }, (error: Error) => { @@ -274,7 +277,7 @@ export class OpenAnythingHandler extends QuickOpenHandler { return null; } - public getResultsFromCache(searchValue: string, range: IRange = null) { + private getResultsFromCache(searchValue: string, range: IRange = null): [QuickOpenEntry[], ITelemetryData] { if (paths.isAbsolute(searchValue)) { return null; // bypass cache if user looks up an absolute path where matching goes directly on disk } @@ -340,12 +343,13 @@ export class OpenAnythingHandler extends QuickOpenHandler { entry.setHighlights(labelHighlights, descriptionHighlights); }); - return { - viewResults: viewResults, - unsortedResultTime: unsortedResultTime, - sortedResultTime: sortedResultTime, + return [viewResults, { + fromCache: true, + searchLength: searchValue.length, + unsortedResultTime, + sortedResultTime, numberOfResultEntries: results.length - }; + }]; } public getGroupLabel(): string { @@ -379,4 +383,14 @@ export class OpenAnythingHandler extends QuickOpenHandler { this.pendingSearch = null; } } + + private createTimerEventData(startTime: number, telemetry: ITelemetryData): ITimerEventData { + return { + fromCache: telemetry.fromCache, + searchLength: telemetry.searchLength, + unsortedResultDuration: telemetry.unsortedResultTime - startTime, + sortedResultDuration: telemetry.sortedResultTime - startTime, + numberOfResultEntries: telemetry.numberOfResultEntries + }; + } } \ No newline at end of file -- GitLab