Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit f1a0b36

Browse files
authored
appending language server package name to ls telemetry so that we can filter out different servers (#10666)
1 parent c4658f9 commit f1a0b36

File tree

3 files changed

+29
-10
lines changed

3 files changed

+29
-10
lines changed

src/client/activation/common/downloader.ts

+10-5
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,12 @@ export class LanguageServerDownloader implements ILanguageServerDownloader {
5353
uri = uri.replace(/^https:/, 'http:');
5454
}
5555
}
56-
57-
return [uri, info.version.raw];
56+
const lsNameTrimmed = info.package.split('.')[0];
57+
return [uri, info.version.raw, lsNameTrimmed];
5858
}
5959

6060
public async downloadLanguageServer(destinationFolder: string, resource: Resource): Promise<void> {
61-
const [downloadUri, lsVersion] = await this.getDownloadInfo(resource);
61+
const [downloadUri, lsVersion, lsName] = await this.getDownloadInfo(resource);
6262
const timer: StopWatch = new StopWatch();
6363
let success: boolean = true;
6464
let localTempFilePath = '';
@@ -85,7 +85,8 @@ export class LanguageServerDownloader implements ILanguageServerDownloader {
8585
sendTelemetryEvent(EventName.PYTHON_LANGUAGE_SERVER_DOWNLOADED, timer.elapsedTime, {
8686
success,
8787
lsVersion,
88-
usedSSL
88+
usedSSL,
89+
lsName
8990
});
9091
}
9192

@@ -105,7 +106,11 @@ export class LanguageServerDownloader implements ILanguageServerDownloader {
105106
);
106107
throw new Error(err);
107108
} finally {
108-
sendTelemetryEvent(EventName.PYTHON_LANGUAGE_SERVER_EXTRACTED, timer.elapsedTime, { success, lsVersion });
109+
sendTelemetryEvent(EventName.PYTHON_LANGUAGE_SERVER_EXTRACTED, timer.elapsedTime, {
110+
success,
111+
lsVersion,
112+
lsName
113+
});
109114
await this.fs.deleteFile(localTempFilePath);
110115
}
111116
}

src/client/telemetry/index.ts

+9
Original file line numberDiff line numberDiff line change
@@ -1082,6 +1082,11 @@ export interface IEventNamePropertyMapping {
10821082
* Whether download uri starts with `https:` or not
10831083
*/
10841084
usedSSL?: boolean;
1085+
1086+
/**
1087+
* Name of LS downloaded
1088+
*/
1089+
lsName?: string;
10851090
};
10861091
/**
10871092
* Telemetry event sent when LS is started for workspace (workspace folder in case of multi-root)
@@ -1112,6 +1117,10 @@ export interface IEventNamePropertyMapping {
11121117
* Whether download uri starts with `https:` or not
11131118
*/
11141119
usedSSL?: boolean;
1120+
/**
1121+
* Package name of LS extracted
1122+
*/
1123+
lsName?: string;
11151124
};
11161125
/**
11171126
* Telemetry event sent if azure blob packages are being listed

src/test/activation/languageServer/downloader.unit.test.ts

+10-5
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,13 @@ suite('Language Server Activation - Downloader', () => {
7373
.returns(() => Promise.resolve(pkg))
7474
.verifiable(TypeMoq.Times.once());
7575

76-
const [uri, version] = await languageServerDownloader.getDownloadInfo(resource);
76+
const [uri, version, name] = await languageServerDownloader.getDownloadInfo(resource);
7777

7878
folderService.verifyAll();
7979
workspaceService.verifyAll();
8080
expect(uri).to.equal(pkg.uri);
8181
expect(version).to.equal(pkg.version.raw);
82+
expect(name).to.equal('ls');
8283
});
8384

8485
test('Get download info - HTTPS without resource', async () => {
@@ -97,12 +98,13 @@ suite('Language Server Activation - Downloader', () => {
9798
.returns(() => Promise.resolve(pkg))
9899
.verifiable(TypeMoq.Times.once());
99100

100-
const [uri, version] = await languageServerDownloader.getDownloadInfo(undefined);
101+
const [uri, version, name] = await languageServerDownloader.getDownloadInfo(undefined);
101102

102103
folderService.verifyAll();
103104
workspaceService.verifyAll();
104105
expect(uri).to.equal(pkg.uri);
105106
expect(version).to.equal(pkg.version.raw);
107+
expect(name).to.equal('ls');
106108
});
107109

108110
test('Get download info - HTTPS disabled', async () => {
@@ -121,13 +123,14 @@ suite('Language Server Activation - Downloader', () => {
121123
.returns(() => Promise.resolve(pkg))
122124
.verifiable(TypeMoq.Times.once());
123125

124-
const [uri, version] = await languageServerDownloader.getDownloadInfo(resource);
126+
const [uri, version, name] = await languageServerDownloader.getDownloadInfo(resource);
125127

126128
folderService.verifyAll();
127129
workspaceService.verifyAll();
128130
// tslint:disable-next-line:no-http-string
129131
expect(uri).to.deep.equal('http://a.b.com/x/y/z/ls.nupkg');
130132
expect(version).to.equal(pkg.version.raw);
133+
expect(name).to.equal('ls');
131134
});
132135

133136
test('Get download info - HTTP', async () => {
@@ -138,12 +141,13 @@ suite('Language Server Activation - Downloader', () => {
138141
.returns(() => Promise.resolve(pkg))
139142
.verifiable(TypeMoq.Times.once());
140143

141-
const [uri, version] = await languageServerDownloader.getDownloadInfo(resource);
144+
const [uri, version, name] = await languageServerDownloader.getDownloadInfo(resource);
142145

143146
folderService.verifyAll();
144147
workspaceService.verifyAll();
145148
expect(uri).to.equal(pkg.uri);
146149
expect(version).to.equal(pkg.version.raw);
150+
expect(name).to.equal('ls');
147151
});
148152

149153
test('Get download info - bogus URL', async () => {
@@ -153,12 +157,13 @@ suite('Language Server Activation - Downloader', () => {
153157
.returns(() => Promise.resolve(pkg))
154158
.verifiable(TypeMoq.Times.once());
155159

156-
const [uri, version] = await languageServerDownloader.getDownloadInfo(resource);
160+
const [uri, version, name] = await languageServerDownloader.getDownloadInfo(resource);
157161

158162
folderService.verifyAll();
159163
workspaceService.verifyAll();
160164
expect(uri).to.equal(pkg.uri);
161165
expect(version).to.equal(pkg.version.raw);
166+
expect(name).to.equal('ls');
162167
});
163168

164169
suite('Test LanguageServerDownloader.downloadFile', () => {

0 commit comments

Comments
 (0)