Skip to content

Commit e13d0b9

Browse files
CopilotJoeRobich
andcommitted
Refactor telemetry and make reporter parameters optional
Co-authored-by: JoeRobich <611219+JoeRobich@users.noreply.github.com>
1 parent 60894e9 commit e13d0b9

File tree

7 files changed

+43
-51
lines changed

7 files changed

+43
-51
lines changed

src/omnisharp/omnisharpDownloader.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export class OmnisharpDownloader {
2828
private packageJSON: any,
2929
private platformInfo: PlatformInformation,
3030
private extensionPath: string,
31-
private reporter: ITelemetryReporter
31+
private reporter?: ITelemetryReporter
3232
) {}
3333

3434
public async DownloadAndInstallOmnisharp(

src/omnisharp/omnisharpLanguageServer.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,8 @@ export async function activateOmniSharpLanguageServer(
154154
eventStream,
155155
context.extension.packageJSON,
156156
platformInfo,
157-
context.extension.extensionPath
157+
context.extension.extensionPath,
158+
reporter
158159
);
159160

160161
await razorOmnisharpDownloader.DownloadAndInstallRazorOmnisharp(

src/packageManager/downloadAndInstallPackages.ts

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,29 @@ export async function downloadAndInstallPackages(
2626
telemetryReporter?: ITelemetryReporter,
2727
token?: CancellationToken
2828
): Promise<boolean> {
29+
function sendInstallationFailureTelemetry(pkg: AbsolutePathPackage, installationStage: string, error: any): void {
30+
if (!telemetryReporter) {
31+
return;
32+
}
33+
34+
const telemetryProperties: { [key: string]: string } = {
35+
installStage: installationStage,
36+
packageId: pkg.id,
37+
isOptional: pkg.isOptional ? 'true' : 'false',
38+
};
39+
40+
if (error instanceof NestedError && error.err instanceof PackageError) {
41+
telemetryProperties['error.message'] = error.err.message;
42+
telemetryProperties['error.packageUrl'] = error.err.pkg.url;
43+
} else if (error instanceof PackageError) {
44+
telemetryProperties['error.message'] = error.message;
45+
telemetryProperties['error.packageUrl'] = error.pkg.url;
46+
}
47+
48+
const eventName = pkg.isOptional ? 'OptionalPackageInstallationFailed' : 'PackageInstallationFailed';
49+
telemetryReporter.sendTelemetryEvent(eventName, telemetryProperties);
50+
}
51+
2952
eventStream.post(new PackageInstallStart());
3053
for (const pkg of packages) {
3154
let installationStage = 'touchBeginFile';
@@ -64,24 +87,7 @@ export async function downloadAndInstallPackages(
6487
}
6588

6689
// Send telemetry for the failure
67-
if (telemetryReporter) {
68-
const telemetryProperties: { [key: string]: string } = {
69-
installStage: installationStage,
70-
packageId: pkg.id,
71-
isOptional: pkg.isOptional ? 'true' : 'false',
72-
};
73-
74-
if (error instanceof NestedError && error.err instanceof PackageError) {
75-
telemetryProperties['error.message'] = error.err.message;
76-
telemetryProperties['error.packageUrl'] = error.err.pkg.url;
77-
} else if (error instanceof PackageError) {
78-
telemetryProperties['error.message'] = error.message;
79-
telemetryProperties['error.packageUrl'] = error.pkg.url;
80-
}
81-
82-
const eventName = pkg.isOptional ? 'OptionalPackageInstallationFailed' : 'PackageInstallationFailed';
83-
telemetryReporter.sendTelemetryEvent(eventName, telemetryProperties);
84-
}
90+
sendInstallationFailureTelemetry(pkg, installationStage, error);
8591

8692
// If the package is optional, log and continue with the next package
8793
if (pkg.isOptional) {

src/razor/razorOmnisharpDownloader.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,16 @@ import { downloadAndInstallPackages } from '../packageManager/downloadAndInstall
1111
import { getRuntimeDependenciesPackages } from '../tools/runtimeDependencyPackageUtils';
1212
import { getAbsolutePathPackagesToInstall } from '../packageManager/getAbsolutePathPackagesToInstall';
1313
import { isValidDownload } from '../packageManager/isValidDownload';
14+
import { ITelemetryReporter } from '../shared/telemetryReporter';
1415

1516
export class RazorOmnisharpDownloader {
1617
public constructor(
1718
private networkSettingsProvider: NetworkSettingsProvider,
1819
private eventStream: EventStream,
1920
private packageJSON: any,
2021
private platformInfo: PlatformInformation,
21-
private extensionPath: string
22+
private extensionPath: string,
23+
private reporter?: ITelemetryReporter
2224
) {}
2325

2426
public async DownloadAndInstallRazorOmnisharp(version: string): Promise<boolean> {
@@ -39,7 +41,7 @@ export class RazorOmnisharpDownloader {
3941
this.networkSettingsProvider,
4042
this.eventStream,
4143
isValidDownload,
42-
undefined
44+
this.reporter
4345
)
4446
) {
4547
this.eventStream.post(new InstallationSuccess());

test/omnisharp/omnisharpUnitTests/omnisharpDownloader.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,7 @@ import { modernNetVersion } from '../../../src/omnisharp/omnisharpPackageCreator
5454
eventStream,
5555
testPackageJSON,
5656
platformInfo,
57-
extensionPath,
58-
undefined as any
57+
extensionPath
5958
);
6059
server = await MockHttpsServer.CreateMockHttpsServer();
6160
testZip = await TestZip.createTestZipAsync(createTestFile('Foo', 'foo.txt'));

test/omnisharp/omnisharpUnitTests/omnisharpManager.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,8 +245,7 @@ function GetTestOmniSharpManager(
245245
eventStream,
246246
testPackageJSON,
247247
platformInfo,
248-
extensionPath,
249-
undefined as any
248+
extensionPath
250249
);
251250
return new OmnisharpManager(downloader, platformInfo, serverUrl);
252251
}

test/omnisharp/omnisharpUnitTests/packages/downloadAndInstallPackages.test.ts

Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,7 @@ describe(`${downloadAndInstallPackages.name}`, () => {
8787
downloadablePackage,
8888
networkSettingsProvider,
8989
eventStream,
90-
downloadValidator,
91-
undefined
90+
downloadValidator
9291
);
9392
for (const elem of testZip.files) {
9493
const filePath = path.join(tmpDirPath, elem.path);
@@ -101,8 +100,7 @@ describe(`${downloadAndInstallPackages.name}`, () => {
101100
downloadablePackage,
102101
networkSettingsProvider,
103102
eventStream,
104-
downloadValidator,
105-
undefined
103+
downloadValidator
106104
);
107105
expect(await util.fileExists(path.join(tmpDirPath, 'install.Lock'))).toBe(true);
108106
});
@@ -121,8 +119,7 @@ describe(`${downloadAndInstallPackages.name}`, () => {
121119
downloadablePackage,
122120
networkSettingsProvider,
123121
eventStream,
124-
downloadValidator,
125-
undefined
122+
downloadValidator
126123
);
127124
expect(eventBus.getEvents()).toStrictEqual(eventsSequence);
128125
});
@@ -156,8 +153,7 @@ describe(`${downloadAndInstallPackages.name}`, () => {
156153
downloadablePackage,
157154
networkSettingsProvider,
158155
eventStream,
159-
downloadValidator,
160-
undefined
156+
downloadValidator
161157
);
162158
expect(eventBus.getEvents()).toStrictEqual(eventsSequence);
163159
});
@@ -184,8 +180,7 @@ describe(`${downloadAndInstallPackages.name}`, () => {
184180
downloadablePackage,
185181
networkSettingsProvider,
186182
eventStream,
187-
downloadValidator,
188-
undefined
183+
downloadValidator
189184
);
190185
expect(eventBus.getEvents()).toStrictEqual(eventsSequence);
191186
});
@@ -201,8 +196,7 @@ describe(`${downloadAndInstallPackages.name}`, () => {
201196
notDownloadablePackage,
202197
networkSettingsProvider,
203198
eventStream,
204-
downloadValidator,
205-
undefined
199+
downloadValidator
206200
);
207201
const obtainedEvents = eventBus.getEvents();
208202
expect(obtainedEvents[0]).toStrictEqual(eventsSequence[0]);
@@ -218,8 +212,7 @@ describe(`${downloadAndInstallPackages.name}`, () => {
218212
notDownloadablePackage,
219213
networkSettingsProvider,
220214
eventStream,
221-
downloadValidator,
222-
undefined
215+
downloadValidator
223216
);
224217
expect(await util.fileExists(path.join(tmpDirPath, 'install.Lock'))).toBe(false);
225218
});
@@ -240,8 +233,7 @@ describe(`${downloadAndInstallPackages.name}`, () => {
240233
optionalPackage,
241234
networkSettingsProvider,
242235
eventStream,
243-
downloadValidator,
244-
undefined
236+
downloadValidator
245237
);
246238
expect(result).toBe(true);
247239
});
@@ -266,8 +258,7 @@ describe(`${downloadAndInstallPackages.name}`, () => {
266258
mixedPackages,
267259
networkSettingsProvider,
268260
eventStream,
269-
downloadValidator,
270-
undefined
261+
downloadValidator
271262
);
272263
expect(result).toBe(true);
273264
expect(await util.fileExists(path.join(tmpInstallDir2.name, 'install.Lock'))).toBe(true);
@@ -285,13 +276,7 @@ describe(`${downloadAndInstallPackages.name}`, () => {
285276
];
286277

287278
eventBus.getEvents(); // Clear any previous events
288-
await downloadAndInstallPackages(
289-
optionalPackage,
290-
networkSettingsProvider,
291-
eventStream,
292-
downloadValidator,
293-
undefined
294-
);
279+
await downloadAndInstallPackages(optionalPackage, networkSettingsProvider, eventStream, downloadValidator);
295280
const obtainedEvents = eventBus.getEvents();
296281
const installationFailureEvent = obtainedEvents.find(
297282
(event) => event instanceof InstallationFailure

0 commit comments

Comments
 (0)