mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-15 18:46:36 -05:00
Merge from vscode a348d103d1256a06a2c9b3f9b406298a9fef6898 (#15681)
* Merge from vscode a348d103d1256a06a2c9b3f9b406298a9fef6898 * Fixes and cleanup * Distro * Fix hygiene yarn * delete no yarn lock changes file * Fix hygiene * Fix layer check * Fix CI * Skip lib checks * Remove tests deleted in vs code * Fix tests * Distro * Fix tests and add removed extension point * Skip failing notebook tests for now * Disable broken tests and cleanup build folder * Update yarn.lock and fix smoke tests * Bump sqlite * fix contributed actions and file spacing * Fix user data path * Update yarn.locks Co-authored-by: ADS Merger <karlb@microsoft.com>
This commit is contained in:
@@ -8,7 +8,7 @@ import { globals } from 'vs/base/common/platform';
|
||||
import BaseErrorTelemetry, { ErrorEvent } from 'vs/platform/telemetry/common/errorTelemetry';
|
||||
|
||||
export default class ErrorTelemetry extends BaseErrorTelemetry {
|
||||
protected installErrorListeners(): void {
|
||||
protected override installErrorListeners(): void {
|
||||
let oldOnError: Function;
|
||||
let that = this;
|
||||
if (typeof globals.onerror === 'function') {
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { IFileService } from 'vs/platform/files/common/files';
|
||||
import { isLinuxSnap, PlatformToString, platform } from 'vs/base/common/platform';
|
||||
import { isLinuxSnap, PlatformToString, platform, Platform } from 'vs/base/common/platform';
|
||||
import { platform as nodePlatform, env } from 'vs/base/common/process';
|
||||
import { generateUuid } from 'vs/base/common/uuid';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
@@ -12,9 +12,18 @@ import { URI } from 'vs/base/common/uri';
|
||||
import product from 'vs/platform/product/common/product'; // {{SQL CARBON EDIT}}
|
||||
const productObject = product; // {{SQL CARBON EDIT}}
|
||||
|
||||
function getPlatformDetail(hostname: string): string | undefined {
|
||||
if (platform === Platform.Linux && /^penguin(\.|$)/i.test(hostname)) {
|
||||
return 'chromebook';
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
export async function resolveCommonProperties(
|
||||
fileService: IFileService,
|
||||
release: string,
|
||||
hostname: string,
|
||||
arch: string,
|
||||
commit: string | undefined,
|
||||
version: string | undefined,
|
||||
@@ -77,6 +86,13 @@ export async function resolveCommonProperties(
|
||||
result['common.snap'] = 'true';
|
||||
}
|
||||
|
||||
const platformDetail = getPlatformDetail(hostname);
|
||||
|
||||
if (platformDetail) {
|
||||
// __GDPR__COMMON__ "common.platformDetail" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
|
||||
result['common.platformDetail'] = platformDetail;
|
||||
}
|
||||
|
||||
try {
|
||||
const contents = await fileService.readFile(URI.file(installSourcePath));
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ export interface ITelemetryInfo {
|
||||
sessionId: string;
|
||||
machineId: string;
|
||||
instanceId: string;
|
||||
firstSessionDate: string;
|
||||
msftInternal?: boolean;
|
||||
}
|
||||
|
||||
@@ -51,6 +52,21 @@ export interface ITelemetryService {
|
||||
isOptedIn: boolean;
|
||||
}
|
||||
|
||||
export interface ITelemetryEndpoint {
|
||||
id: string;
|
||||
aiKey: string;
|
||||
sendErrorTelemetry: boolean;
|
||||
}
|
||||
|
||||
export const ICustomEndpointTelemetryService = createDecorator<ICustomEndpointTelemetryService>('customEndpointTelemetryService');
|
||||
|
||||
export interface ICustomEndpointTelemetryService {
|
||||
readonly _serviceBrand: undefined;
|
||||
|
||||
publicLog(endpoint: ITelemetryEndpoint, eventName: string, data?: ITelemetryData): Promise<void>;
|
||||
publicLogError(endpoint: ITelemetryEndpoint, errorEventName: string, data?: ITelemetryData): Promise<void>;
|
||||
}
|
||||
|
||||
// Keys
|
||||
export const instanceStorageKey = 'telemetry.instanceId';
|
||||
export const currentSessionDateStorageKey = 'telemetry.currentSessionDate';
|
||||
|
||||
@@ -17,7 +17,7 @@ export class TelemetryLogAppender extends Disposable implements ITelemetryAppend
|
||||
@IEnvironmentService environmentService: IEnvironmentService
|
||||
) {
|
||||
super();
|
||||
this.logger = this._register(loggerService.getLogger(environmentService.telemetryLogResource));
|
||||
this.logger = this._register(loggerService.createLogger(environmentService.telemetryLogResource));
|
||||
this.logger.info('The below are logs for every telemetry event sent from VS Code once the log level is set to trace.');
|
||||
this.logger.info('===========================================================');
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ import { ITelemetryService, ITelemetryInfo, ITelemetryData } from 'vs/platform/t
|
||||
import { ITelemetryAppender } from 'vs/platform/telemetry/common/telemetryUtils';
|
||||
import { optional } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
import { IConfigurationRegistry, Extensions } from 'vs/platform/configuration/common/configurationRegistry';
|
||||
import { IConfigurationRegistry, Extensions, ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry';
|
||||
import { DisposableStore } from 'vs/base/common/lifecycle';
|
||||
import { cloneAndChange, mixin } from 'vs/base/common/objects';
|
||||
import { Registry } from 'vs/platform/registry/common/platform';
|
||||
@@ -105,9 +105,10 @@ export class TelemetryService implements ITelemetryService {
|
||||
let sessionId = values['sessionID'];
|
||||
let instanceId = values['common.instanceId'];
|
||||
let machineId = values['common.machineId'];
|
||||
let firstSessionDate = values['common.firstSessionDate'];
|
||||
let msftInternal = values['common.msftInternal'];
|
||||
|
||||
return { sessionId, instanceId, machineId, msftInternal };
|
||||
return { sessionId, instanceId, machineId, firstSessionDate, msftInternal };
|
||||
}
|
||||
|
||||
dispose(): void {
|
||||
@@ -222,6 +223,8 @@ Registry.as<IConfigurationRegistry>(Extensions.Configuration).registerConfigurat
|
||||
localize('telemetry.enableTelemetry', "Enable usage data and errors to be sent to a Microsoft online service.") :
|
||||
localize('telemetry.enableTelemetryMd', "Enable usage data and errors to be sent to a Microsoft online service. Read our privacy statement [here]({0}).", product.privacyStatementUrl),
|
||||
'default': true,
|
||||
'restricted': true,
|
||||
'scope': ConfigurationScope.APPLICATION,
|
||||
'tags': ['usesOnlineServices']
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
import { IDisposable } from 'vs/base/common/lifecycle';
|
||||
import { IConfigurationService, ConfigurationTarget, ConfigurationTargetToString } from 'vs/platform/configuration/common/configuration';
|
||||
import { ITelemetryService, ITelemetryInfo, ITelemetryData } from 'vs/platform/telemetry/common/telemetry';
|
||||
import { ITelemetryService, ITelemetryInfo, ITelemetryData, ICustomEndpointTelemetryService, ITelemetryEndpoint } from 'vs/platform/telemetry/common/telemetry';
|
||||
import { ClassifiedEvent, StrictPropertyCheck, GDPRClassification } from 'vs/platform/telemetry/common/gdprTypings';
|
||||
import { safeStringify } from 'vs/base/common/objects';
|
||||
import { isObject } from 'vs/base/common/types';
|
||||
@@ -35,11 +35,24 @@ export const NullTelemetryService = new class implements ITelemetryService {
|
||||
return Promise.resolve({
|
||||
instanceId: 'someValue.instanceId',
|
||||
sessionId: 'someValue.sessionId',
|
||||
machineId: 'someValue.machineId'
|
||||
machineId: 'someValue.machineId',
|
||||
firstSessionDate: 'someValue.firstSessionDate'
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
export class NullEndpointTelemetryService implements ICustomEndpointTelemetryService {
|
||||
_serviceBrand: undefined;
|
||||
|
||||
async publicLog(_endpoint: ITelemetryEndpoint, _eventName: string, _data?: ITelemetryData): Promise<void> {
|
||||
// noop
|
||||
}
|
||||
|
||||
async publicLogError(_endpoint: ITelemetryEndpoint, _errorEventName: string, _data?: ITelemetryData): Promise<void> {
|
||||
// noop
|
||||
}
|
||||
}
|
||||
|
||||
export interface ITelemetryAppender {
|
||||
log(eventName: string, data: any): void;
|
||||
flush(): Promise<any>;
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { registerSharedProcessRemoteService } from 'vs/platform/ipc/electron-sandbox/services';
|
||||
import { ICustomEndpointTelemetryService } from 'vs/platform/telemetry/common/telemetry';
|
||||
|
||||
registerSharedProcessRemoteService(ICustomEndpointTelemetryService, 'customEndpointTelemetry', { supportsDelayedInstantiation: true });
|
||||
@@ -0,0 +1,65 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { Client as TelemetryClient } from 'vs/base/parts/ipc/node/ipc.cp';
|
||||
import { TelemetryAppenderClient } from 'vs/platform/telemetry/common/telemetryIpc';
|
||||
import { FileAccess } from 'vs/base/common/network';
|
||||
import { TelemetryService } from 'vs/platform/telemetry/common/telemetryService';
|
||||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
import { ICustomEndpointTelemetryService, ITelemetryData, ITelemetryEndpoint, ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
|
||||
|
||||
export class CustomEndpointTelemetryService implements ICustomEndpointTelemetryService {
|
||||
declare readonly _serviceBrand: undefined;
|
||||
|
||||
private customTelemetryServices = new Map<string, ITelemetryService>();
|
||||
|
||||
constructor(
|
||||
@IConfigurationService private readonly configurationService: IConfigurationService,
|
||||
@ITelemetryService private readonly telemetryService: ITelemetryService
|
||||
) { }
|
||||
|
||||
private async getCustomTelemetryService(endpoint: ITelemetryEndpoint): Promise<ITelemetryService> {
|
||||
if (!this.customTelemetryServices.has(endpoint.id)) {
|
||||
const { machineId, sessionId } = await this.telemetryService.getTelemetryInfo();
|
||||
const telemetryInfo: { [key: string]: string } = Object.create(null);
|
||||
telemetryInfo['common.vscodemachineid'] = machineId;
|
||||
telemetryInfo['common.vscodesessionid'] = sessionId;
|
||||
const args = [endpoint.id, JSON.stringify(telemetryInfo), endpoint.aiKey];
|
||||
const client = new TelemetryClient(
|
||||
FileAccess.asFileUri('bootstrap-fork', require).fsPath,
|
||||
{
|
||||
serverName: 'Debug Telemetry',
|
||||
timeout: 1000 * 60 * 5,
|
||||
args,
|
||||
env: {
|
||||
ELECTRON_RUN_AS_NODE: 1,
|
||||
VSCODE_PIPE_LOGGING: 'true',
|
||||
VSCODE_AMD_ENTRYPOINT: 'vs/workbench/contrib/debug/node/telemetryApp'
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
const channel = client.getChannel('telemetryAppender');
|
||||
const appender = new TelemetryAppenderClient(channel);
|
||||
|
||||
this.customTelemetryServices.set(endpoint.id, new TelemetryService({
|
||||
appender,
|
||||
sendErrorTelemetry: endpoint.sendErrorTelemetry
|
||||
}, this.configurationService));
|
||||
}
|
||||
|
||||
return this.customTelemetryServices.get(endpoint.id)!;
|
||||
}
|
||||
|
||||
async publicLog(telemetryEndpoint: ITelemetryEndpoint, eventName: string, data?: ITelemetryData): Promise<void> {
|
||||
const customTelemetryService = await this.getCustomTelemetryService(telemetryEndpoint);
|
||||
await customTelemetryService.publicLog(eventName, data);
|
||||
}
|
||||
|
||||
async publicLogError(telemetryEndpoint: ITelemetryEndpoint, errorEventName: string, data?: ITelemetryData): Promise<void> {
|
||||
const customTelemetryService = await this.getCustomTelemetryService(telemetryEndpoint);
|
||||
await customTelemetryService.publicLogError(errorEventName, data);
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,7 @@ import { onUnexpectedError, setUnexpectedErrorHandler } from 'vs/base/common/err
|
||||
import BaseErrorTelemetry from 'vs/platform/telemetry/common/errorTelemetry';
|
||||
|
||||
export default class ErrorTelemetry extends BaseErrorTelemetry {
|
||||
protected installErrorListeners(): void {
|
||||
protected override installErrorListeners(): void {
|
||||
setUnexpectedErrorHandler(err => console.error(err));
|
||||
|
||||
// Print a console message when rejection isn't handled within N seconds. For details:
|
||||
|
||||
@@ -90,10 +90,10 @@ suite('TelemetryService', () => {
|
||||
let service = new TelemetryService({ appender: testAppender }, undefined!);
|
||||
|
||||
return service.publicLog('testPrivateEvent').then(() => {
|
||||
assert.equal(testAppender.getEventsCount(), 1);
|
||||
assert.strictEqual(testAppender.getEventsCount(), 1);
|
||||
|
||||
service.dispose();
|
||||
assert.equal(!testAppender.isDisposed, true);
|
||||
assert.strictEqual(!testAppender.isDisposed, true);
|
||||
});
|
||||
}));
|
||||
|
||||
@@ -103,9 +103,9 @@ suite('TelemetryService', () => {
|
||||
let service = new TelemetryService({ appender: testAppender }, undefined!);
|
||||
|
||||
return service.publicLog('testEvent').then(_ => {
|
||||
assert.equal(testAppender.getEventsCount(), 1);
|
||||
assert.equal(testAppender.events[0].eventName, 'testEvent');
|
||||
assert.notEqual(testAppender.events[0].data, null);
|
||||
assert.strictEqual(testAppender.getEventsCount(), 1);
|
||||
assert.strictEqual(testAppender.events[0].eventName, 'testEvent');
|
||||
assert.notStrictEqual(testAppender.events[0].data, null);
|
||||
|
||||
service.dispose();
|
||||
});
|
||||
@@ -123,13 +123,13 @@ suite('TelemetryService', () => {
|
||||
'value': 0
|
||||
}
|
||||
}).then(() => {
|
||||
assert.equal(testAppender.getEventsCount(), 1);
|
||||
assert.equal(testAppender.events[0].eventName, 'testEvent');
|
||||
assert.notEqual(testAppender.events[0].data, null);
|
||||
assert.equal(testAppender.events[0].data['stringProp'], 'property');
|
||||
assert.equal(testAppender.events[0].data['numberProp'], 1);
|
||||
assert.equal(testAppender.events[0].data['booleanProp'], true);
|
||||
assert.equal(testAppender.events[0].data['complexProp'].value, 0);
|
||||
assert.strictEqual(testAppender.getEventsCount(), 1);
|
||||
assert.strictEqual(testAppender.events[0].eventName, 'testEvent');
|
||||
assert.notStrictEqual(testAppender.events[0].data, null);
|
||||
assert.strictEqual(testAppender.events[0].data['stringProp'], 'property');
|
||||
assert.strictEqual(testAppender.events[0].data['numberProp'], 1);
|
||||
assert.strictEqual(testAppender.events[0].data['booleanProp'], true);
|
||||
assert.strictEqual(testAppender.events[0].data['complexProp'].value, 0);
|
||||
|
||||
service.dispose();
|
||||
});
|
||||
@@ -146,9 +146,9 @@ suite('TelemetryService', () => {
|
||||
return service.publicLog('testEvent').then(_ => {
|
||||
let [first] = testAppender.events;
|
||||
|
||||
assert.equal(Object.keys(first.data).length, 2);
|
||||
assert.equal(typeof first.data['foo'], 'string');
|
||||
assert.equal(typeof first.data['bar'], 'number');
|
||||
assert.strictEqual(Object.keys(first.data).length, 2);
|
||||
assert.strictEqual(typeof first.data['foo'], 'string');
|
||||
assert.strictEqual(typeof first.data['bar'], 'number');
|
||||
|
||||
service.dispose();
|
||||
});
|
||||
@@ -164,11 +164,11 @@ suite('TelemetryService', () => {
|
||||
return service.publicLog('testEvent', { hightower: 'xl', price: 8000 }).then(_ => {
|
||||
let [first] = testAppender.events;
|
||||
|
||||
assert.equal(Object.keys(first.data).length, 4);
|
||||
assert.equal(typeof first.data['foo'], 'string');
|
||||
assert.equal(typeof first.data['bar'], 'number');
|
||||
assert.equal(typeof first.data['hightower'], 'string');
|
||||
assert.equal(typeof first.data['price'], 'number');
|
||||
assert.strictEqual(Object.keys(first.data).length, 4);
|
||||
assert.strictEqual(typeof first.data['foo'], 'string');
|
||||
assert.strictEqual(typeof first.data['bar'], 'number');
|
||||
assert.strictEqual(typeof first.data['hightower'], 'string');
|
||||
assert.strictEqual(typeof first.data['price'], 'number');
|
||||
|
||||
service.dispose();
|
||||
});
|
||||
@@ -185,9 +185,9 @@ suite('TelemetryService', () => {
|
||||
}, undefined!);
|
||||
|
||||
return service.getTelemetryInfo().then(info => {
|
||||
assert.equal(info.sessionId, 'one');
|
||||
assert.equal(info.instanceId, 'two');
|
||||
assert.equal(info.machineId, 'three');
|
||||
assert.strictEqual(info.sessionId, 'one');
|
||||
assert.strictEqual(info.instanceId, 'two');
|
||||
assert.strictEqual(info.machineId, 'three');
|
||||
|
||||
service.dispose();
|
||||
});
|
||||
@@ -198,8 +198,8 @@ suite('TelemetryService', () => {
|
||||
let service = new TelemetryService({ appender: testAppender }, undefined!);
|
||||
|
||||
return service.publicLog('testEvent').then(() => {
|
||||
assert.equal(testAppender.getEventsCount(), 1);
|
||||
assert.equal(testAppender.events[0].eventName, 'testEvent');
|
||||
assert.strictEqual(testAppender.getEventsCount(), 1);
|
||||
assert.strictEqual(testAppender.events[0].eventName, 'testEvent');
|
||||
|
||||
service.dispose();
|
||||
});
|
||||
@@ -217,7 +217,7 @@ suite('TelemetryService', () => {
|
||||
return Promise.all(this.promises);
|
||||
}
|
||||
|
||||
publicLog(eventName: string, data?: ITelemetryData, anonymizeFilePaths?: boolean): Promise<void> {
|
||||
override publicLog(eventName: string, data?: ITelemetryData, anonymizeFilePaths?: boolean): Promise<void> {
|
||||
let p = super.publicLog(eventName, data, anonymizeFilePaths);
|
||||
this.promises.push(p);
|
||||
return p;
|
||||
@@ -245,9 +245,9 @@ suite('TelemetryService', () => {
|
||||
this.clock.tick(ErrorTelemetry.ERROR_FLUSH_TIMEOUT);
|
||||
await service.join();
|
||||
|
||||
assert.equal(testAppender.getEventsCount(), 1);
|
||||
assert.equal(testAppender.events[0].eventName, 'UnhandledError');
|
||||
assert.equal(testAppender.events[0].data.msg, 'This is a test.');
|
||||
assert.strictEqual(testAppender.getEventsCount(), 1);
|
||||
assert.strictEqual(testAppender.events[0].eventName, 'UnhandledError');
|
||||
assert.strictEqual(testAppender.events[0].data.msg, 'This is a test.');
|
||||
|
||||
errorTelemetry.dispose();
|
||||
service.dispose();
|
||||
@@ -275,9 +275,9 @@ suite('TelemetryService', () => {
|
||||
// // allow for the promise to finish
|
||||
// this.clock.tick(MainErrorTelemetry.ERROR_FLUSH_TIMEOUT);
|
||||
//
|
||||
// assert.equal(testAppender.getEventsCount(), 1);
|
||||
// assert.equal(testAppender.events[0].eventName, 'UnhandledError');
|
||||
// assert.equal(testAppender.events[0].data.msg, 'This should get logged');
|
||||
// assert.strictEqual(testAppender.getEventsCount(), 1);
|
||||
// assert.strictEqual(testAppender.events[0].eventName, 'UnhandledError');
|
||||
// assert.strictEqual(testAppender.events[0].data.msg, 'This should get logged');
|
||||
//
|
||||
// service.dispose();
|
||||
// } finally {
|
||||
@@ -298,16 +298,16 @@ suite('TelemetryService', () => {
|
||||
this.clock.tick(ErrorTelemetry.ERROR_FLUSH_TIMEOUT);
|
||||
await service.join();
|
||||
|
||||
assert.equal(errorStub.alwaysCalledWithExactly('Error Message', 'file.js', 2, 42, testError), true);
|
||||
assert.equal(errorStub.callCount, 1);
|
||||
assert.strictEqual(errorStub.alwaysCalledWithExactly('Error Message', 'file.js', 2, 42, testError), true);
|
||||
assert.strictEqual(errorStub.callCount, 1);
|
||||
|
||||
assert.equal(testAppender.getEventsCount(), 1);
|
||||
assert.equal(testAppender.events[0].eventName, 'UnhandledError');
|
||||
assert.equal(testAppender.events[0].data.msg, 'Error Message');
|
||||
assert.equal(testAppender.events[0].data.file, 'file.js');
|
||||
assert.equal(testAppender.events[0].data.line, 2);
|
||||
assert.equal(testAppender.events[0].data.column, 42);
|
||||
assert.equal(testAppender.events[0].data.uncaught_error_msg, 'test');
|
||||
assert.strictEqual(testAppender.getEventsCount(), 1);
|
||||
assert.strictEqual(testAppender.events[0].eventName, 'UnhandledError');
|
||||
assert.strictEqual(testAppender.events[0].data.msg, 'Error Message');
|
||||
assert.strictEqual(testAppender.events[0].data.file, 'file.js');
|
||||
assert.strictEqual(testAppender.events[0].data.line, 2);
|
||||
assert.strictEqual(testAppender.events[0].data.column, 42);
|
||||
assert.strictEqual(testAppender.events[0].data.uncaught_error_msg, 'test');
|
||||
|
||||
errorTelemetry.dispose();
|
||||
service.dispose();
|
||||
@@ -328,9 +328,9 @@ suite('TelemetryService', () => {
|
||||
this.clock.tick(ErrorTelemetry.ERROR_FLUSH_TIMEOUT);
|
||||
await service.join();
|
||||
|
||||
assert.equal(errorStub.callCount, 1);
|
||||
assert.equal(testAppender.events[0].data.file.indexOf(settings.dangerousPathWithImportantInfo.replace(settings.personalInfo, personInfoWithSpaces)), -1);
|
||||
assert.equal(testAppender.events[0].data.file, settings.importantInfo + '/test.js');
|
||||
assert.strictEqual(errorStub.callCount, 1);
|
||||
assert.strictEqual(testAppender.events[0].data.file.indexOf(settings.dangerousPathWithImportantInfo.replace(settings.personalInfo, personInfoWithSpaces)), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.file, settings.importantInfo + '/test.js');
|
||||
|
||||
errorTelemetry.dispose();
|
||||
service.dispose();
|
||||
@@ -350,8 +350,8 @@ suite('TelemetryService', () => {
|
||||
(<any>window.onerror)('dangerousFilename', settings.dangerousPathWithImportantInfo + '/test.js', 2, 42, dangerousFilenameError);
|
||||
clock.tick(ErrorTelemetry.ERROR_FLUSH_TIMEOUT);
|
||||
return service.join().then(() => {
|
||||
assert.equal(errorStub.callCount, 1);
|
||||
assert.equal(testAppender.events[0].data.file.indexOf(settings.dangerousPathWithImportantInfo), -1);
|
||||
assert.strictEqual(errorStub.callCount, 1);
|
||||
assert.strictEqual(testAppender.events[0].data.file.indexOf(settings.dangerousPathWithImportantInfo), -1);
|
||||
|
||||
dangerousFilenameError = new Error('dangerousFilename');
|
||||
dangerousFilenameError.stack = settings.stack;
|
||||
@@ -359,9 +359,9 @@ suite('TelemetryService', () => {
|
||||
clock.tick(ErrorTelemetry.ERROR_FLUSH_TIMEOUT);
|
||||
return service.join();
|
||||
}).then(() => {
|
||||
assert.equal(errorStub.callCount, 2);
|
||||
assert.equal(testAppender.events[0].data.file.indexOf(settings.dangerousPathWithImportantInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.file, settings.importantInfo + '/test.js');
|
||||
assert.strictEqual(errorStub.callCount, 2);
|
||||
assert.strictEqual(testAppender.events[0].data.file.indexOf(settings.dangerousPathWithImportantInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.file, settings.importantInfo + '/test.js');
|
||||
|
||||
errorTelemetry.dispose();
|
||||
service.dispose();
|
||||
@@ -383,13 +383,13 @@ suite('TelemetryService', () => {
|
||||
this.clock.tick(ErrorTelemetry.ERROR_FLUSH_TIMEOUT);
|
||||
await service.join();
|
||||
|
||||
assert.equal(testAppender.events[0].data.msg.indexOf(settings.personalInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.msg.indexOf(settings.filePrefix), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.msg.indexOf(settings.personalInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.msg.indexOf(settings.filePrefix), -1);
|
||||
|
||||
assert.equal(testAppender.events[0].data.callstack.indexOf(settings.personalInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.indexOf(settings.filePrefix), -1);
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf(settings.stack[4].replace(settings.randomUserFile, settings.anonymizedRandomUserFile)), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.split('\n').length, settings.stack.length);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.indexOf(settings.personalInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.indexOf(settings.filePrefix), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf(settings.stack[4].replace(settings.randomUserFile, settings.anonymizedRandomUserFile)), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.split('\n').length, settings.stack.length);
|
||||
|
||||
errorTelemetry.dispose();
|
||||
service.dispose();
|
||||
@@ -413,14 +413,14 @@ suite('TelemetryService', () => {
|
||||
this.clock.tick(ErrorTelemetry.ERROR_FLUSH_TIMEOUT);
|
||||
await service.join();
|
||||
|
||||
assert.equal(errorStub.callCount, 1);
|
||||
assert.strictEqual(errorStub.callCount, 1);
|
||||
// Test that no file information remains, esp. personal info
|
||||
assert.equal(testAppender.events[0].data.msg.indexOf(settings.personalInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.msg.indexOf(settings.filePrefix), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.indexOf(settings.personalInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.indexOf(settings.filePrefix), -1);
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf(settings.stack[4].replace(settings.randomUserFile, settings.anonymizedRandomUserFile)), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.split('\n').length, settings.stack.length);
|
||||
assert.strictEqual(testAppender.events[0].data.msg.indexOf(settings.personalInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.msg.indexOf(settings.filePrefix), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.indexOf(settings.personalInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.indexOf(settings.filePrefix), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf(settings.stack[4].replace(settings.randomUserFile, settings.anonymizedRandomUserFile)), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.split('\n').length, settings.stack.length);
|
||||
|
||||
errorTelemetry.dispose();
|
||||
service.dispose();
|
||||
@@ -445,14 +445,14 @@ suite('TelemetryService', () => {
|
||||
this.clock.tick(ErrorTelemetry.ERROR_FLUSH_TIMEOUT);
|
||||
await service.join();
|
||||
|
||||
assert.notEqual(testAppender.events[0].data.msg.indexOf(settings.importantInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.msg.indexOf(settings.personalInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.msg.indexOf(settings.filePrefix), -1);
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf(settings.importantInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.indexOf(settings.personalInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.indexOf(settings.filePrefix), -1);
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf(settings.stack[4].replace(settings.randomUserFile, settings.anonymizedRandomUserFile)), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.split('\n').length, settings.stack.length);
|
||||
assert.notStrictEqual(testAppender.events[0].data.msg.indexOf(settings.importantInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.msg.indexOf(settings.personalInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.msg.indexOf(settings.filePrefix), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf(settings.importantInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.indexOf(settings.personalInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.indexOf(settings.filePrefix), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf(settings.stack[4].replace(settings.randomUserFile, settings.anonymizedRandomUserFile)), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.split('\n').length, settings.stack.length);
|
||||
|
||||
errorTelemetry.dispose();
|
||||
service.dispose();
|
||||
@@ -476,16 +476,16 @@ suite('TelemetryService', () => {
|
||||
this.clock.tick(ErrorTelemetry.ERROR_FLUSH_TIMEOUT);
|
||||
await service.join();
|
||||
|
||||
assert.equal(errorStub.callCount, 1);
|
||||
assert.strictEqual(errorStub.callCount, 1);
|
||||
// Test that important information remains but personal info does not
|
||||
assert.notEqual(testAppender.events[0].data.msg.indexOf(settings.importantInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.msg.indexOf(settings.personalInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.msg.indexOf(settings.filePrefix), -1);
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf(settings.importantInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.indexOf(settings.personalInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.indexOf(settings.filePrefix), -1);
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf(settings.stack[4].replace(settings.randomUserFile, settings.anonymizedRandomUserFile)), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.split('\n').length, settings.stack.length);
|
||||
assert.notStrictEqual(testAppender.events[0].data.msg.indexOf(settings.importantInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.msg.indexOf(settings.personalInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.msg.indexOf(settings.filePrefix), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf(settings.importantInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.indexOf(settings.personalInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.indexOf(settings.filePrefix), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf(settings.stack[4].replace(settings.randomUserFile, settings.anonymizedRandomUserFile)), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.split('\n').length, settings.stack.length);
|
||||
|
||||
errorTelemetry.dispose();
|
||||
service.dispose();
|
||||
@@ -510,10 +510,10 @@ suite('TelemetryService', () => {
|
||||
this.clock.tick(ErrorTelemetry.ERROR_FLUSH_TIMEOUT);
|
||||
await service.join();
|
||||
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf('(' + settings.nodeModuleAsarPathToRetain), -1);
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf('(' + settings.nodeModulePathToRetain), -1);
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf('(/' + settings.nodeModuleAsarPathToRetain), -1);
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf('(/' + settings.nodeModulePathToRetain), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf('(' + settings.nodeModuleAsarPathToRetain), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf('(' + settings.nodeModulePathToRetain), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf('(/' + settings.nodeModuleAsarPathToRetain), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf('(/' + settings.nodeModulePathToRetain), -1);
|
||||
|
||||
errorTelemetry.dispose();
|
||||
service.dispose();
|
||||
@@ -537,12 +537,12 @@ suite('TelemetryService', () => {
|
||||
this.clock.tick(ErrorTelemetry.ERROR_FLUSH_TIMEOUT);
|
||||
await service.join();
|
||||
|
||||
assert.equal(errorStub.callCount, 1);
|
||||
assert.strictEqual(errorStub.callCount, 1);
|
||||
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf('(' + settings.nodeModuleAsarPathToRetain), -1);
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf('(' + settings.nodeModulePathToRetain), -1);
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf('(/' + settings.nodeModuleAsarPathToRetain), -1);
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf('(/' + settings.nodeModulePathToRetain), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf('(' + settings.nodeModuleAsarPathToRetain), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf('(' + settings.nodeModulePathToRetain), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf('(/' + settings.nodeModuleAsarPathToRetain), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf('(/' + settings.nodeModulePathToRetain), -1);
|
||||
|
||||
errorTelemetry.dispose();
|
||||
service.dispose();
|
||||
@@ -568,14 +568,14 @@ suite('TelemetryService', () => {
|
||||
this.clock.tick(ErrorTelemetry.ERROR_FLUSH_TIMEOUT);
|
||||
await service.join();
|
||||
|
||||
assert.notEqual(testAppender.events[0].data.msg.indexOf(settings.importantInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.msg.indexOf(settings.personalInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.msg.indexOf(settings.filePrefix), -1);
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf(settings.importantInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.indexOf(settings.personalInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.indexOf(settings.filePrefix), -1);
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf(settings.stack[4].replace(settings.randomUserFile, settings.anonymizedRandomUserFile)), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.split('\n').length, settings.stack.length);
|
||||
assert.notStrictEqual(testAppender.events[0].data.msg.indexOf(settings.importantInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.msg.indexOf(settings.personalInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.msg.indexOf(settings.filePrefix), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf(settings.importantInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.indexOf(settings.personalInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.indexOf(settings.filePrefix), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf(settings.stack[4].replace(settings.randomUserFile, settings.anonymizedRandomUserFile)), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.split('\n').length, settings.stack.length);
|
||||
|
||||
errorTelemetry.dispose();
|
||||
service.dispose();
|
||||
@@ -599,16 +599,16 @@ suite('TelemetryService', () => {
|
||||
this.clock.tick(ErrorTelemetry.ERROR_FLUSH_TIMEOUT);
|
||||
await service.join();
|
||||
|
||||
assert.equal(errorStub.callCount, 1);
|
||||
assert.strictEqual(errorStub.callCount, 1);
|
||||
// Test that important information remains but personal info does not
|
||||
assert.notEqual(testAppender.events[0].data.msg.indexOf(settings.importantInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.msg.indexOf(settings.personalInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.msg.indexOf(settings.filePrefix), -1);
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf(settings.importantInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.indexOf(settings.personalInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.indexOf(settings.filePrefix), -1);
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf(settings.stack[4].replace(settings.randomUserFile, settings.anonymizedRandomUserFile)), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.split('\n').length, settings.stack.length);
|
||||
assert.notStrictEqual(testAppender.events[0].data.msg.indexOf(settings.importantInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.msg.indexOf(settings.personalInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.msg.indexOf(settings.filePrefix), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf(settings.importantInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.indexOf(settings.personalInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.indexOf(settings.filePrefix), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf(settings.stack[4].replace(settings.randomUserFile, settings.anonymizedRandomUserFile)), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.split('\n').length, settings.stack.length);
|
||||
|
||||
errorTelemetry.dispose();
|
||||
service.dispose();
|
||||
@@ -634,14 +634,14 @@ suite('TelemetryService', () => {
|
||||
this.clock.tick(ErrorTelemetry.ERROR_FLUSH_TIMEOUT);
|
||||
await service.join();
|
||||
|
||||
assert.notEqual(testAppender.events[0].data.msg.indexOf(settings.missingModelPrefix), -1);
|
||||
assert.equal(testAppender.events[0].data.msg.indexOf(settings.personalInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.msg.indexOf(settings.filePrefix), -1);
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf(settings.missingModelPrefix), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.indexOf(settings.personalInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.indexOf(settings.filePrefix), -1);
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf(settings.stack[4].replace(settings.randomUserFile, settings.anonymizedRandomUserFile)), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.split('\n').length, settings.stack.length);
|
||||
assert.notStrictEqual(testAppender.events[0].data.msg.indexOf(settings.missingModelPrefix), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.msg.indexOf(settings.personalInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.msg.indexOf(settings.filePrefix), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf(settings.missingModelPrefix), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.indexOf(settings.personalInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.indexOf(settings.filePrefix), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf(settings.stack[4].replace(settings.randomUserFile, settings.anonymizedRandomUserFile)), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.split('\n').length, settings.stack.length);
|
||||
|
||||
errorTelemetry.dispose();
|
||||
service.dispose();
|
||||
@@ -664,17 +664,17 @@ suite('TelemetryService', () => {
|
||||
this.clock.tick(ErrorTelemetry.ERROR_FLUSH_TIMEOUT);
|
||||
await service.join();
|
||||
|
||||
assert.equal(errorStub.callCount, 1);
|
||||
assert.strictEqual(errorStub.callCount, 1);
|
||||
// Test that no file information remains, but this particular
|
||||
// error message does (Received model events for missing model)
|
||||
assert.notEqual(testAppender.events[0].data.msg.indexOf(settings.missingModelPrefix), -1);
|
||||
assert.equal(testAppender.events[0].data.msg.indexOf(settings.personalInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.msg.indexOf(settings.filePrefix), -1);
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf(settings.missingModelPrefix), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.indexOf(settings.personalInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.indexOf(settings.filePrefix), -1);
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf(settings.stack[4].replace(settings.randomUserFile, settings.anonymizedRandomUserFile)), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.split('\n').length, settings.stack.length);
|
||||
assert.notStrictEqual(testAppender.events[0].data.msg.indexOf(settings.missingModelPrefix), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.msg.indexOf(settings.personalInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.msg.indexOf(settings.filePrefix), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf(settings.missingModelPrefix), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.indexOf(settings.personalInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.indexOf(settings.filePrefix), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf(settings.stack[4].replace(settings.randomUserFile, settings.anonymizedRandomUserFile)), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.split('\n').length, settings.stack.length);
|
||||
|
||||
errorTelemetry.dispose();
|
||||
service.dispose();
|
||||
@@ -700,14 +700,15 @@ suite('TelemetryService', () => {
|
||||
this.clock.tick(ErrorTelemetry.ERROR_FLUSH_TIMEOUT);
|
||||
await service.join();
|
||||
|
||||
assert.notEqual(testAppender.events[0].data.msg.indexOf(settings.noSuchFilePrefix), -1);
|
||||
assert.equal(testAppender.events[0].data.msg.indexOf(settings.personalInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.msg.indexOf(settings.filePrefix), -1);
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf(settings.noSuchFilePrefix), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.indexOf(settings.personalInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.indexOf(settings.filePrefix), -1);
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf(settings.stack[4].replace(settings.randomUserFile, settings.anonymizedRandomUserFile)), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.split('\n').length, settings.stack.length);
|
||||
assert.notStrictEqual(testAppender.events[0].data.msg.indexOf(settings.noSuchFilePrefix), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.msg.indexOf(settings.personalInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.msg.indexOf(settings.filePrefix), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf(settings.noSuchFilePrefix), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.indexOf(settings.personalInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.indexOf(settings.filePrefix), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf(settings.stack[4].replace(settings.randomUserFile, settings.anonymizedRandomUserFile)), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.split('\n').length, settings.stack.length);
|
||||
|
||||
errorTelemetry.dispose();
|
||||
service.dispose();
|
||||
} finally {
|
||||
@@ -729,18 +730,19 @@ suite('TelemetryService', () => {
|
||||
(<any>window.onerror)(settings.noSuchFileMessage, 'test.js', 2, 42, noSuchFileError);
|
||||
this.clock.tick(ErrorTelemetry.ERROR_FLUSH_TIMEOUT);
|
||||
await service.join();
|
||||
assert.equal(errorStub.callCount, 1);
|
||||
|
||||
assert.strictEqual(errorStub.callCount, 1);
|
||||
// Test that no file information remains, but this particular
|
||||
// error message does (ENOENT: no such file or directory)
|
||||
Errors.onUnexpectedError(noSuchFileError);
|
||||
assert.notEqual(testAppender.events[0].data.msg.indexOf(settings.noSuchFilePrefix), -1);
|
||||
assert.equal(testAppender.events[0].data.msg.indexOf(settings.personalInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.msg.indexOf(settings.filePrefix), -1);
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf(settings.noSuchFilePrefix), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.indexOf(settings.personalInfo), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.indexOf(settings.filePrefix), -1);
|
||||
assert.notEqual(testAppender.events[0].data.callstack.indexOf(settings.stack[4].replace(settings.randomUserFile, settings.anonymizedRandomUserFile)), -1);
|
||||
assert.equal(testAppender.events[0].data.callstack.split('\n').length, settings.stack.length);
|
||||
assert.notStrictEqual(testAppender.events[0].data.msg.indexOf(settings.noSuchFilePrefix), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.msg.indexOf(settings.personalInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.msg.indexOf(settings.filePrefix), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf(settings.noSuchFilePrefix), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.indexOf(settings.personalInfo), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.indexOf(settings.filePrefix), -1);
|
||||
assert.notStrictEqual(testAppender.events[0].data.callstack.indexOf(settings.stack[4].replace(settings.randomUserFile, settings.anonymizedRandomUserFile)), -1);
|
||||
assert.strictEqual(testAppender.events[0].data.callstack.split('\n').length, settings.stack.length);
|
||||
|
||||
errorTelemetry.dispose();
|
||||
service.dispose();
|
||||
@@ -754,7 +756,7 @@ suite('TelemetryService', () => {
|
||||
let service = new TelemetryService({ appender: testAppender }, undefined!);
|
||||
|
||||
return service.publicLog('testEvent').then(() => {
|
||||
assert.equal(testAppender.getEventsCount(), 1);
|
||||
assert.strictEqual(testAppender.getEventsCount(), 1);
|
||||
service.dispose();
|
||||
});
|
||||
}));
|
||||
@@ -768,23 +770,23 @@ suite('TelemetryService', () => {
|
||||
let service = new TelemetryService({
|
||||
appender: testAppender
|
||||
}, new class extends TestConfigurationService {
|
||||
onDidChangeConfiguration = emitter.event;
|
||||
getValue() {
|
||||
override onDidChangeConfiguration = emitter.event;
|
||||
override getValue() {
|
||||
return {
|
||||
enableTelemetry: enableTelemetry
|
||||
} as any;
|
||||
}
|
||||
}());
|
||||
|
||||
assert.equal(service.isOptedIn, false);
|
||||
assert.strictEqual(service.isOptedIn, false);
|
||||
|
||||
enableTelemetry = true;
|
||||
emitter.fire({});
|
||||
assert.equal(service.isOptedIn, true);
|
||||
assert.strictEqual(service.isOptedIn, true);
|
||||
|
||||
enableTelemetry = false;
|
||||
emitter.fire({});
|
||||
assert.equal(service.isOptedIn, false);
|
||||
assert.strictEqual(service.isOptedIn, false);
|
||||
|
||||
service.dispose();
|
||||
});
|
||||
|
||||
@@ -3,13 +3,12 @@
|
||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
import * as assert from 'assert';
|
||||
import { LogLevel, ILoggerService, AbstractLogService, DEFAULT_LOG_LEVEL, ILogger } from 'vs/platform/log/common/log';
|
||||
import { LogLevel, ILoggerService, AbstractLogger, DEFAULT_LOG_LEVEL, ILogger } from 'vs/platform/log/common/log';
|
||||
import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock';
|
||||
import { TelemetryLogAppender } from 'vs/platform/telemetry/common/telemetryLogAppender';
|
||||
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
|
||||
|
||||
class TestTelemetryLogger extends AbstractLogService implements ILogger {
|
||||
declare readonly _serviceBrand: undefined;
|
||||
class TestTelemetryLogger extends AbstractLogger implements ILogger {
|
||||
|
||||
public logs: string[] = [];
|
||||
|
||||
@@ -54,7 +53,7 @@ class TestTelemetryLogger extends AbstractLogService implements ILogger {
|
||||
}
|
||||
}
|
||||
|
||||
dispose(): void { }
|
||||
override dispose(): void { }
|
||||
flush(): void { }
|
||||
}
|
||||
|
||||
@@ -67,7 +66,7 @@ class TestTelemetryLoggerService implements ILoggerService {
|
||||
this.logger = new TestTelemetryLogger(logLevel);
|
||||
}
|
||||
|
||||
getLogger(): ILogger {
|
||||
createLogger(): ILogger {
|
||||
return this.logger;
|
||||
}
|
||||
}
|
||||
@@ -78,14 +77,14 @@ suite('TelemetryLogAdapter', () => {
|
||||
const testLoggerService = new TestTelemetryLoggerService(DEFAULT_LOG_LEVEL);
|
||||
const testObject = new TelemetryLogAppender(testLoggerService, new TestInstantiationService().stub(IEnvironmentService, {}));
|
||||
testObject.log('testEvent', { hello: 'world', isTrue: true, numberBetween1And3: 2 });
|
||||
assert.equal(testLoggerService.logger.logs.length, 2);
|
||||
assert.strictEqual(testLoggerService.logger.logs.length, 2);
|
||||
});
|
||||
|
||||
test('Log Telemetry if log level is trace', async () => {
|
||||
const testLoggerService = new TestTelemetryLoggerService(LogLevel.Trace);
|
||||
const testObject = new TelemetryLogAppender(testLoggerService, new TestInstantiationService().stub(IEnvironmentService, {}));
|
||||
testObject.log('testEvent', { hello: 'world', isTrue: true, numberBetween1And3: 2 });
|
||||
assert.equal(testLoggerService.logger.logs[2], 'telemetry/testEvent' + JSON.stringify([{
|
||||
assert.strictEqual(testLoggerService.logger.logs[2], 'telemetry/testEvent' + JSON.stringify([{
|
||||
properties: {
|
||||
hello: 'world',
|
||||
},
|
||||
|
||||
@@ -7,8 +7,8 @@ import { AppInsightsAppender } from 'vs/platform/telemetry/node/appInsightsAppen
|
||||
import { TelemetryClient, Contracts } from 'applicationinsights';
|
||||
|
||||
class AppInsightsMock extends TelemetryClient {
|
||||
public config: any;
|
||||
public channel: any;
|
||||
public override config: any;
|
||||
public override channel: any;
|
||||
public events: Contracts.EventTelemetry[] = [];
|
||||
public IsTrackingPageView: boolean = false;
|
||||
public exceptions: any[] = [];
|
||||
@@ -17,11 +17,11 @@ class AppInsightsMock extends TelemetryClient {
|
||||
super('testKey');
|
||||
}
|
||||
|
||||
public trackEvent(event: any) {
|
||||
public override trackEvent(event: any) {
|
||||
this.events.push(event);
|
||||
}
|
||||
|
||||
public flush(options: any): void {
|
||||
public override flush(options: any): void {
|
||||
// called on dispose
|
||||
}
|
||||
}
|
||||
@@ -44,20 +44,20 @@ suite('AIAdapter', () => {
|
||||
test('Simple event', () => {
|
||||
adapter.log('testEvent');
|
||||
|
||||
assert.equal(appInsightsMock.events.length, 1);
|
||||
assert.equal(appInsightsMock.events[0].name, `${prefix}/testEvent`);
|
||||
assert.strictEqual(appInsightsMock.events.length, 1);
|
||||
assert.strictEqual(appInsightsMock.events[0].name, `${prefix}/testEvent`);
|
||||
});
|
||||
|
||||
test('addional data', () => {
|
||||
adapter = new AppInsightsAppender(prefix, { first: '1st', second: 2, third: true }, () => appInsightsMock);
|
||||
adapter.log('testEvent');
|
||||
|
||||
assert.equal(appInsightsMock.events.length, 1);
|
||||
assert.strictEqual(appInsightsMock.events.length, 1);
|
||||
let [first] = appInsightsMock.events;
|
||||
assert.equal(first.name, `${prefix}/testEvent`);
|
||||
assert.equal(first.properties!['first'], '1st');
|
||||
assert.equal(first.measurements!['second'], '2');
|
||||
assert.equal(first.measurements!['third'], 1);
|
||||
assert.strictEqual(first.name, `${prefix}/testEvent`);
|
||||
assert.strictEqual(first.properties!['first'], '1st');
|
||||
assert.strictEqual(first.measurements!['second'], 2);
|
||||
assert.strictEqual(first.measurements!['third'], 1);
|
||||
});
|
||||
|
||||
test('property limits', () => {
|
||||
@@ -78,7 +78,7 @@ suite('AIAdapter', () => {
|
||||
data['reallyLongPropertyValue'] = reallyLongPropertyValue;
|
||||
adapter.log('testEvent', data);
|
||||
|
||||
assert.equal(appInsightsMock.events.length, 1);
|
||||
assert.strictEqual(appInsightsMock.events.length, 1);
|
||||
|
||||
for (let prop in appInsightsMock.events[0].properties!) {
|
||||
assert(prop.length < 150);
|
||||
@@ -90,14 +90,14 @@ suite('AIAdapter', () => {
|
||||
let date = new Date();
|
||||
adapter.log('testEvent', { favoriteDate: date, likeRed: false, likeBlue: true, favoriteNumber: 1, favoriteColor: 'blue', favoriteCars: ['bmw', 'audi', 'ford'] });
|
||||
|
||||
assert.equal(appInsightsMock.events.length, 1);
|
||||
assert.equal(appInsightsMock.events[0].name, `${prefix}/testEvent`);
|
||||
assert.equal(appInsightsMock.events[0].properties!['favoriteColor'], 'blue');
|
||||
assert.equal(appInsightsMock.events[0].measurements!['likeRed'], 0);
|
||||
assert.equal(appInsightsMock.events[0].measurements!['likeBlue'], 1);
|
||||
assert.equal(appInsightsMock.events[0].properties!['favoriteDate'], date.toISOString());
|
||||
assert.equal(appInsightsMock.events[0].properties!['favoriteCars'], JSON.stringify(['bmw', 'audi', 'ford']));
|
||||
assert.equal(appInsightsMock.events[0].measurements!['favoriteNumber'], 1);
|
||||
assert.strictEqual(appInsightsMock.events.length, 1);
|
||||
assert.strictEqual(appInsightsMock.events[0].name, `${prefix}/testEvent`);
|
||||
assert.strictEqual(appInsightsMock.events[0].properties!['favoriteColor'], 'blue');
|
||||
assert.strictEqual(appInsightsMock.events[0].measurements!['likeRed'], 0);
|
||||
assert.strictEqual(appInsightsMock.events[0].measurements!['likeBlue'], 1);
|
||||
assert.strictEqual(appInsightsMock.events[0].properties!['favoriteDate'], date.toISOString());
|
||||
assert.strictEqual(appInsightsMock.events[0].properties!['favoriteCars'], JSON.stringify(['bmw', 'audi', 'ford']));
|
||||
assert.strictEqual(appInsightsMock.events[0].measurements!['favoriteNumber'], 1);
|
||||
});
|
||||
|
||||
test('Nested data', () => {
|
||||
@@ -119,15 +119,15 @@ suite('AIAdapter', () => {
|
||||
}
|
||||
});
|
||||
|
||||
assert.equal(appInsightsMock.events.length, 1);
|
||||
assert.equal(appInsightsMock.events[0].name, `${prefix}/testEvent`);
|
||||
assert.strictEqual(appInsightsMock.events.length, 1);
|
||||
assert.strictEqual(appInsightsMock.events[0].name, `${prefix}/testEvent`);
|
||||
|
||||
assert.equal(appInsightsMock.events[0].properties!['window.title'], 'some title');
|
||||
assert.equal(appInsightsMock.events[0].measurements!['window.measurements.width'], 100);
|
||||
assert.equal(appInsightsMock.events[0].measurements!['window.measurements.height'], 200);
|
||||
assert.strictEqual(appInsightsMock.events[0].properties!['window.title'], 'some title');
|
||||
assert.strictEqual(appInsightsMock.events[0].measurements!['window.measurements.width'], 100);
|
||||
assert.strictEqual(appInsightsMock.events[0].measurements!['window.measurements.height'], 200);
|
||||
|
||||
assert.equal(appInsightsMock.events[0].properties!['nestedObj.nestedObj2.nestedObj3'], JSON.stringify({ 'testProperty': 'test' }));
|
||||
assert.equal(appInsightsMock.events[0].measurements!['nestedObj.testMeasurement'], 1);
|
||||
assert.strictEqual(appInsightsMock.events[0].properties!['nestedObj.nestedObj2.nestedObj3'], JSON.stringify({ 'testProperty': 'test' }));
|
||||
assert.strictEqual(appInsightsMock.events[0].measurements!['nestedObj.testMeasurement'], 1);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user