From ae7eacf407829d79448a12b8c6e60e94f4a6390c Mon Sep 17 00:00:00 2001 From: Yevhen Vydolob Date: Wed, 23 Jun 2021 14:28:19 +0300 Subject: [PATCH 1/3] Improve telemetry Signed-off-by: Yevhen Vydolob --- src/telemetry.ts | 33 ++++++++++++++++++++++++++++++++- test/telemetry.test.ts | 15 +++++++++++---- 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/src/telemetry.ts b/src/telemetry.ts index d3c2b190..c0614d07 100644 --- a/src/telemetry.ts +++ b/src/telemetry.ts @@ -43,6 +43,8 @@ export class TelemetryErrorHandler implements ErrorHandler { } } +const errorMassagesToSkip = [{ text: 'Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED', contains: true }]; + export class TelemetryOutputChannel implements vscode.OutputChannel { constructor(private readonly delegate: vscode.OutputChannel, private readonly telemetry: TelemetryService) {} @@ -60,9 +62,38 @@ export class TelemetryOutputChannel implements vscode.OutputChannel { private checkError(value: string): void { if (value.startsWith('[Error') || value.startsWith(' Message: Request')) { - this.telemetry.send({ name: 'yaml.server.error', properties: { error: value } }); + if (this.isNeedToSkip(value)) { + return; + } + this.telemetry.send({ name: 'yaml.server.error', properties: { error: this.createErrorMessage(value) } }); } } + + private isNeedToSkip(value: string): boolean { + for (const skip of errorMassagesToSkip) { + if (skip.contains) { + if (value.includes(skip.text)) { + return true; + } + } else { + const starts = value.startsWith(skip.text); + if (starts) { + return false; + } + } + } + + return true; + } + + private createErrorMessage(value: string): string { + if (value.startsWith('[Error')) { + value = value.substr(0, value.indexOf(']')).trim(); + } + + return value; + } + clear(): void { this.delegate.clear(); } diff --git a/test/telemetry.test.ts b/test/telemetry.test.ts index d70405d0..240a8b18 100644 --- a/test/telemetry.test.ts +++ b/test/telemetry.test.ts @@ -79,13 +79,20 @@ describe('Telemetry Test', () => { }); it('should send telemetry if log error in "append"', () => { - telemetryChannel.append('[Error Some'); - expect(telemetry.send).calledOnceWith({ name: 'yaml.server.error', properties: { error: '[Error Some' } }); + telemetryChannel.append('[Error] Some'); + expect(telemetry.send).calledOnceWith({ name: 'yaml.server.error', properties: { error: 'Some' } }); }); it('should send telemetry if log error on "appendLine"', () => { - telemetryChannel.appendLine('[Error Some'); - expect(telemetry.send).calledOnceWith({ name: 'yaml.server.error', properties: { error: '[Error Some' } }); + telemetryChannel.appendLine('[Error] Some'); + expect(telemetry.send).calledOnceWith({ name: 'yaml.server.error', properties: { error: 'Some' } }); + }); + + it("shouldn't send telemetry if error should be skipped", () => { + telemetryChannel.append( + "[Error - 15:10:33] (node:25052) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification." + ); + expect(telemetry.send).not.called; }); }); From b5f99e9983d144f1b05cbd9d2c46bf9856f79ca9 Mon Sep 17 00:00:00 2001 From: Yevhen Vydolob Date: Wed, 23 Jun 2021 14:46:32 +0300 Subject: [PATCH 2/3] Fix test Signed-off-by: Yevhen Vydolob --- src/telemetry.ts | 2 +- test/telemetry.test.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/telemetry.ts b/src/telemetry.ts index c0614d07..df70e14a 100644 --- a/src/telemetry.ts +++ b/src/telemetry.ts @@ -88,7 +88,7 @@ export class TelemetryOutputChannel implements vscode.OutputChannel { private createErrorMessage(value: string): string { if (value.startsWith('[Error')) { - value = value.substr(0, value.indexOf(']')).trim(); + value = value.substr(value.indexOf(']'), value.length).trim(); } return value; diff --git a/test/telemetry.test.ts b/test/telemetry.test.ts index 240a8b18..7d13eb95 100644 --- a/test/telemetry.test.ts +++ b/test/telemetry.test.ts @@ -84,8 +84,8 @@ describe('Telemetry Test', () => { }); it('should send telemetry if log error on "appendLine"', () => { - telemetryChannel.appendLine('[Error] Some'); - expect(telemetry.send).calledOnceWith({ name: 'yaml.server.error', properties: { error: 'Some' } }); + telemetryChannel.appendLine('[Error] Some error'); + expect(telemetry.send).calledOnceWith({ name: 'yaml.server.error', properties: { error: 'Some error' } }); }); it("shouldn't send telemetry if error should be skipped", () => { From e3bc694293c2b5af7ca68d744ab2fd620847c725 Mon Sep 17 00:00:00 2001 From: Yevhen Vydolob Date: Wed, 23 Jun 2021 15:11:58 +0300 Subject: [PATCH 3/3] fix timestamp removing Signed-off-by: Yevhen Vydolob --- src/telemetry.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/telemetry.ts b/src/telemetry.ts index df70e14a..30a97cb4 100644 --- a/src/telemetry.ts +++ b/src/telemetry.ts @@ -78,17 +78,17 @@ export class TelemetryOutputChannel implements vscode.OutputChannel { } else { const starts = value.startsWith(skip.text); if (starts) { - return false; + return true; } } } - return true; + return false; } private createErrorMessage(value: string): string { if (value.startsWith('[Error')) { - value = value.substr(value.indexOf(']'), value.length).trim(); + value = value.substr(value.indexOf(']') + 1, value.length).trim(); } return value;