Skip to content

Commit 74430be

Browse files
committed
Add generic telemetry event
1 parent e40b6bd commit 74430be

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

src/observers/TelemetryObserver.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import { PlatformInformation } from "../platform";
7-
import { BaseEvent, PackageInstallation, InstallationFailure, InstallationSuccess, OmnisharpDelayTrackerEventMeasures, OmnisharpStart, TestExecutionCountReport, TelemetryEventWithMeasures } from "../omnisharp/loggingEvents";
7+
import { BaseEvent, PackageInstallation, InstallationFailure, InstallationSuccess, OmnisharpDelayTrackerEventMeasures, OmnisharpStart, TestExecutionCountReport, TelemetryEventWithMeasures, TelemetryEvent } from "../omnisharp/loggingEvents";
88
import { PackageError } from "../packageManager/PackageError";
99

1010
export interface ITelemetryReporter {
@@ -39,6 +39,10 @@ export class TelemetryObserver {
3939
case TestExecutionCountReport.name:
4040
this.handleTestExecutionCountReport(<TestExecutionCountReport>event);
4141
break;
42+
case TelemetryEvent.name:
43+
let telemetryEvent = <TelemetryEvent>event;
44+
this.reporter.sendTelemetryEvent(telemetryEvent.eventName, telemetryEvent.properties, telemetryEvent.measures);
45+
break;
4246
}
4347
}
4448

src/omnisharp/loggingEvents.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ import { LaunchTarget } from "./launcher";
1111
export interface BaseEvent {
1212
}
1313

14+
export class TelemetryEvent implements BaseEvent {
15+
constructor(public eventName: string, public properties?: { [key: string]: string }, public measures?: { [key: string]: number }){ }
16+
}
17+
1418
export class TelemetryEventWithMeasures implements BaseEvent {
1519
constructor(public eventName: string, public measures: { [key: string]: number }) {
1620
}

test/unitTests/logging/TelemetryObserver.test.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import { should, expect } from 'chai';
66
import { TelemetryObserver } from '../../../src/observers/TelemetryObserver';
77
import { PlatformInformation } from '../../../src/platform';
8-
import { PackageInstallation, InstallationFailure, InstallationSuccess, TestExecutionCountReport, TelemetryEventWithMeasures, OmnisharpDelayTrackerEventMeasures, OmnisharpStart } from '../../../src/omnisharp/loggingEvents';
8+
import { PackageInstallation, InstallationFailure, InstallationSuccess, TestExecutionCountReport, TelemetryEventWithMeasures, OmnisharpDelayTrackerEventMeasures, OmnisharpStart, TelemetryEvent } from '../../../src/omnisharp/loggingEvents';
99
import { getNullTelemetryReporter } from '../testAssets/Fakes';
1010
import { Package } from '../../../src/packageManager/Package';
1111
import { PackageError } from '../../../src/packageManager/PackageError';
@@ -60,6 +60,14 @@ suite('TelemetryReporterObserver', () => {
6060
});
6161
});
6262

63+
test(`${TelemetryEvent.name}: SendTelemetry event is called with the name, properties and measures`, () => {
64+
let event = new TelemetryEvent("someName", { "key": "value" }, { someKey: 1 });
65+
observer.post(event);
66+
expect(name).to.contain(event.eventName);
67+
expect(measure).to.be.containingAllOf([event.measures]);
68+
expect(property).to.be.equal(event.properties);
69+
});
70+
6371
suite('InstallationFailure', () => {
6472
test("Telemetry Props contains platform information, install stage and an event name", () => {
6573
let event = new InstallationFailure("someStage", "someError");
@@ -69,7 +77,7 @@ suite('TelemetryReporterObserver', () => {
6977
expect(property).to.have.property("installStage");
7078
expect(name).to.not.be.empty;
7179
});
72-
80+
7381
test(`Telemetry Props contains message and packageUrl if error is package error`, () => {
7482
let error = new PackageError("someError", <Package>{ "description": "foo", "url": "someurl" });
7583
let event = new InstallationFailure("someStage", error);

0 commit comments

Comments
 (0)