Skip to content

Commit

Permalink
send metric for PackageInstallAttemptFailed (#77)
Browse files Browse the repository at this point in the history
  • Loading branch information
928PJY authored Mar 2, 2020
1 parent 5f5df5c commit f6db88b
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 4 deletions.
19 changes: 16 additions & 3 deletions src/observers/telemetryObserver.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { BaseEvent, UserSignInTriggered, UserSignInCompleted, UserSignInSucceeded, UserSignInFailed, UserSignOutTriggered, UserSignOutCompleted, BuildTriggered, BuildCompleted, BuildSucceeded, BuildFailed, BuildCacheSizeCalculated, LearnMoreClicked, QuickPickTriggered, QuickPickCommandSelected, DependencyInstallStarted, DependencyInstallCompleted, PackageInstallCompleted } from '../common/loggingEvents';
import { BaseEvent, UserSignInTriggered, UserSignInCompleted, UserSignInSucceeded, UserSignInFailed, UserSignOutTriggered, UserSignOutCompleted, BuildTriggered, BuildCompleted, BuildSucceeded, BuildFailed, BuildCacheSizeCalculated, LearnMoreClicked, QuickPickTriggered, QuickPickCommandSelected, DependencyInstallStarted, DependencyInstallCompleted, PackageInstallCompleted, PackageInstallAttemptFailed } from '../common/loggingEvents';
import { EventType } from '../common/eventType';
import { DocsSignInType } from '../shared';
import { DocsError } from '../error/docsError';
Expand Down Expand Up @@ -41,8 +41,9 @@ export class TelemetryObserver {
case EventType.PackageInstallCompleted:
this.handlePackageInstallCompleted(<PackageInstallCompleted>event);
break;
// TODO: Send Metric for event PackageInstallAttemptFailed
// Depends on this PR: https://github.com/microsoft/vscode-extension-telemetry/pull/42
case EventType.PackageInstallAttemptFailed:
this.handlePackageInstallAttemptFailed(<PackageInstallAttemptFailed>event);
break;
case EventType.QuickPickTriggered:
this.handleQuickPickTriggered(<QuickPickTriggered>event);
break;
Expand Down Expand Up @@ -215,6 +216,18 @@ export class TelemetryObserver {
);
}

private handlePackageInstallAttemptFailed(event: PackageInstallAttemptFailed){
this.reporter.sendTelemetryMetric(
'InstallDependency.Package.Error',
1,
{
CorrelationId: event.correlationId,
PackageId: event.installedPackage.id,
ErrorCode: this.getErrorCode(event.err)
}
);
}

private handleQuickPickTriggered(event: QuickPickTriggered) {
this.reporter.sendTelemetryEvent(
'QuickPick.Triggered',
Expand Down
29 changes: 28 additions & 1 deletion test/unitTests/observers/telemetryObserver.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import assert from 'assert';
import { UserSignInTriggered, UserSignInSucceeded, UserSignInFailed, UserSignOutTriggered, UserSignOutSucceeded, UserSignOutFailed, BuildCanceled, BuildFailed, BuildTriggered, BuildSucceeded, LearnMoreClicked, QuickPickTriggered, QuickPickCommandSelected, DependencyInstallStarted, DependencyInstallCompleted, PackageInstallCompleted, BuildCacheSizeCalculated, } from '../../../src/common/loggingEvents';
import { UserSignInTriggered, UserSignInSucceeded, UserSignInFailed, UserSignOutTriggered, UserSignOutSucceeded, UserSignOutFailed, BuildCanceled, BuildFailed, BuildTriggered, BuildSucceeded, LearnMoreClicked, QuickPickTriggered, QuickPickCommandSelected, DependencyInstallStarted, DependencyInstallCompleted, PackageInstallCompleted, BuildCacheSizeCalculated, PackageInstallAttemptFailed, } from '../../../src/common/loggingEvents';
import { TelemetryObserver } from '../../../src/observers/telemetryObserver';
import { DocsError } from '../../../src/error/docsError';
import { ErrorCode } from '../../../src/error/errorCode';
Expand All @@ -11,6 +11,9 @@ import TelemetryReporter from '../../../src/telemetryReporter';
describe('TelemetryObserver', () => {
let observer: TelemetryObserver;

let sentMetricName: string;
let sentMetricValue: number;
let sentMetricProperties: any;
let sentEventName: string;
let sentEventProperties: any;
let sentEventMeasurements: any;
Expand All @@ -24,6 +27,15 @@ describe('TelemetryObserver', () => {
sentEventName = eventName;
sentEventProperties = properties;
sentEventMeasurements = measurements;
},
sendTelemetryMetric(
metricName: string,
value: number,
properties?: { [key: string]: string }
): void {
sentMetricName = metricName;
sentMetricProperties = properties;
sentMetricValue = value;
}
};

Expand All @@ -32,6 +44,9 @@ describe('TelemetryObserver', () => {
});

beforeEach(() => {
sentMetricName = undefined;
sentMetricProperties = undefined;
sentMetricValue = undefined;
sentEventName = undefined;
sentEventProperties = undefined;
sentEventMeasurements = undefined;
Expand Down Expand Up @@ -314,6 +329,18 @@ describe('TelemetryObserver', () => {
});
});

it(`PackageInstallAttemptFailed: 'InstallDependency.Package.Error' metric should be sent`, () => {
let event = new PackageInstallAttemptFailed('fakedCorrelationId', fakedPackage, 1, new DocsError('Faked error msg', ErrorCode.CheckIntegrityFailed));
observer.eventHandler(event);
assert.equal(sentMetricName, 'InstallDependency.Package.Error');
assert.equal(sentMetricValue, 1);
assert.deepStrictEqual(sentMetricProperties, {
CorrelationId: 'fakedCorrelationId',
PackageId: 'faked-id',
ErrorCode: 'CheckIntegrityFailed'
});
});

it(`QuickPickTriggered: 'QuickPick.Triggered' event should be sent`, () => {
let event = new QuickPickTriggered('fakedCorrelationId');
observer.eventHandler(event);
Expand Down

0 comments on commit f6db88b

Please sign in to comment.