Skip to content

Commit 02a7c5a

Browse files
authored
Improve telemetry (#543)
* Improve telemetry Signed-off-by: Yevhen Vydolob <yvydolob@redhat.com> * Fix test Signed-off-by: Yevhen Vydolob <yvydolob@redhat.com> * fix timestamp removing Signed-off-by: Yevhen Vydolob <yvydolob@redhat.com>
1 parent 5647b42 commit 02a7c5a

File tree

2 files changed

+43
-5
lines changed

2 files changed

+43
-5
lines changed

src/telemetry.ts

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ export class TelemetryErrorHandler implements ErrorHandler {
4343
}
4444
}
4545

46+
const errorMassagesToSkip = [{ text: 'Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED', contains: true }];
47+
4648
export class TelemetryOutputChannel implements vscode.OutputChannel {
4749
constructor(private readonly delegate: vscode.OutputChannel, private readonly telemetry: TelemetryService) {}
4850

@@ -60,9 +62,38 @@ export class TelemetryOutputChannel implements vscode.OutputChannel {
6062

6163
private checkError(value: string): void {
6264
if (value.startsWith('[Error') || value.startsWith(' Message: Request')) {
63-
this.telemetry.send({ name: 'yaml.server.error', properties: { error: value } });
65+
if (this.isNeedToSkip(value)) {
66+
return;
67+
}
68+
this.telemetry.send({ name: 'yaml.server.error', properties: { error: this.createErrorMessage(value) } });
6469
}
6570
}
71+
72+
private isNeedToSkip(value: string): boolean {
73+
for (const skip of errorMassagesToSkip) {
74+
if (skip.contains) {
75+
if (value.includes(skip.text)) {
76+
return true;
77+
}
78+
} else {
79+
const starts = value.startsWith(skip.text);
80+
if (starts) {
81+
return true;
82+
}
83+
}
84+
}
85+
86+
return false;
87+
}
88+
89+
private createErrorMessage(value: string): string {
90+
if (value.startsWith('[Error')) {
91+
value = value.substr(value.indexOf(']') + 1, value.length).trim();
92+
}
93+
94+
return value;
95+
}
96+
6697
clear(): void {
6798
this.delegate.clear();
6899
}

test/telemetry.test.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,20 @@ describe('Telemetry Test', () => {
7979
});
8080

8181
it('should send telemetry if log error in "append"', () => {
82-
telemetryChannel.append('[Error Some');
83-
expect(telemetry.send).calledOnceWith({ name: 'yaml.server.error', properties: { error: '[Error Some' } });
82+
telemetryChannel.append('[Error] Some');
83+
expect(telemetry.send).calledOnceWith({ name: 'yaml.server.error', properties: { error: 'Some' } });
8484
});
8585

8686
it('should send telemetry if log error on "appendLine"', () => {
87-
telemetryChannel.appendLine('[Error Some');
88-
expect(telemetry.send).calledOnceWith({ name: 'yaml.server.error', properties: { error: '[Error Some' } });
87+
telemetryChannel.appendLine('[Error] Some error');
88+
expect(telemetry.send).calledOnceWith({ name: 'yaml.server.error', properties: { error: 'Some error' } });
89+
});
90+
91+
it("shouldn't send telemetry if error should be skipped", () => {
92+
telemetryChannel.append(
93+
"[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."
94+
);
95+
expect(telemetry.send).not.called;
8996
});
9097
});
9198

0 commit comments

Comments
 (0)