mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 02:48:30 -05:00
Merge VS Code 1.31.1 (#4283)
This commit is contained in:
@@ -27,9 +27,9 @@ export interface ITelemetryService {
|
||||
* Sends a telemetry event that has been privacy approved.
|
||||
* Do not call this unless you have been given approval.
|
||||
*/
|
||||
publicLog(eventName: string, data?: ITelemetryData, anonymizeFilePaths?: boolean): Thenable<void>;
|
||||
publicLog(eventName: string, data?: ITelemetryData, anonymizeFilePaths?: boolean): Promise<void>;
|
||||
|
||||
getTelemetryInfo(): Thenable<ITelemetryInfo>;
|
||||
getTelemetryInfo(): Promise<ITelemetryInfo>;
|
||||
|
||||
isOptedIn: boolean;
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ import { Registry } from 'vs/platform/registry/common/platform';
|
||||
|
||||
export interface ITelemetryServiceConfig {
|
||||
appender: ITelemetryAppender;
|
||||
commonProperties?: Thenable<{ [name: string]: any }>;
|
||||
commonProperties?: Promise<{ [name: string]: any }>;
|
||||
piiPaths?: string[];
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ export class TelemetryService implements ITelemetryService {
|
||||
_serviceBrand: any;
|
||||
|
||||
private _appender: ITelemetryAppender;
|
||||
private _commonProperties: Thenable<{ [name: string]: any; }>;
|
||||
private _commonProperties: Promise<{ [name: string]: any; }>;
|
||||
private _piiPaths: string[];
|
||||
private _userOptIn: boolean;
|
||||
|
||||
@@ -60,6 +60,17 @@ export class TelemetryService implements ITelemetryService {
|
||||
}
|
||||
*/
|
||||
this.publicLog('optInStatus', { optIn: this._userOptIn });
|
||||
|
||||
this._commonProperties.then(values => {
|
||||
const isHashedId = /^[a-f0-9]+$/i.test(values['common.machineId']);
|
||||
|
||||
/* __GDPR__
|
||||
"machineIdFallback" : {
|
||||
"usingFallbackGuid" : { "classification": "SystemMetaData", "purpose": "BusinessInsight", "isMeasurement": true }
|
||||
}
|
||||
*/
|
||||
this.publicLog('machineIdFallback', { usingFallbackGuid: !isHashedId });
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,7 +83,7 @@ export class TelemetryService implements ITelemetryService {
|
||||
return this._userOptIn;
|
||||
}
|
||||
|
||||
getTelemetryInfo(): Thenable<ITelemetryInfo> {
|
||||
getTelemetryInfo(): Promise<ITelemetryInfo> {
|
||||
return this._commonProperties.then(values => {
|
||||
// well known properties
|
||||
let sessionId = values['sessionID'];
|
||||
@@ -87,7 +98,7 @@ export class TelemetryService implements ITelemetryService {
|
||||
this._disposables = dispose(this._disposables);
|
||||
}
|
||||
|
||||
publicLog(eventName: string, data?: ITelemetryData, anonymizeFilePaths?: boolean): Thenable<any> {
|
||||
publicLog(eventName: string, data?: ITelemetryData, anonymizeFilePaths?: boolean): Promise<any> {
|
||||
// don't send events when the user is optout
|
||||
if (!this._userOptIn) {
|
||||
return Promise.resolve(undefined);
|
||||
|
||||
@@ -15,7 +15,7 @@ import { ILogService } from 'vs/platform/log/common/log';
|
||||
export const NullTelemetryService = new class implements ITelemetryService {
|
||||
_serviceBrand: undefined;
|
||||
publicLog(eventName: string, data?: ITelemetryData) {
|
||||
return Promise.resolve(void 0);
|
||||
return Promise.resolve(undefined);
|
||||
}
|
||||
isOptedIn: true;
|
||||
getTelemetryInfo(): Promise<ITelemetryInfo> {
|
||||
@@ -29,7 +29,7 @@ export const NullTelemetryService = new class implements ITelemetryService {
|
||||
|
||||
export interface ITelemetryAppender {
|
||||
log(eventName: string, data: any): void;
|
||||
dispose(): Thenable<any>;
|
||||
dispose(): Promise<any> | undefined;
|
||||
}
|
||||
|
||||
export function combinedAppender(...appenders: ITelemetryAppender[]): ITelemetryAppender {
|
||||
|
||||
@@ -45,11 +45,11 @@ interface Measurements {
|
||||
|
||||
export class AppInsightsAppender implements ITelemetryAppender {
|
||||
|
||||
private _aiClient: appInsights.TelemetryClient;
|
||||
private _aiClient?: appInsights.TelemetryClient;
|
||||
|
||||
constructor(
|
||||
private _eventPrefix: string,
|
||||
private _defaultData: { [key: string]: any },
|
||||
private _defaultData: { [key: string]: any } | null,
|
||||
aiKeyOrClientFactory: string | (() => appInsights.ITelemetryClient), // allow factory function for testing
|
||||
@ILogService private _logService?: ILogService
|
||||
) {
|
||||
@@ -143,14 +143,14 @@ export class AppInsightsAppender implements ITelemetryAppender {
|
||||
});
|
||||
}
|
||||
|
||||
dispose(): Promise<any> {
|
||||
dispose(): Promise<any> | undefined {
|
||||
if (this._aiClient) {
|
||||
return new Promise(resolve => {
|
||||
this._aiClient.flush({
|
||||
this._aiClient!.flush({
|
||||
callback: () => {
|
||||
// all data flushed
|
||||
this._aiClient = undefined;
|
||||
resolve(void 0);
|
||||
resolve(undefined);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -11,8 +11,8 @@ import { readFile } from 'vs/base/node/pfs';
|
||||
// {{SQL CARBON EDIT}}
|
||||
import product from 'vs/platform/node/product';
|
||||
|
||||
export function resolveCommonProperties(commit: string, version: string, machineId: string, installSourcePath: string): Promise<{ [name: string]: string; }> {
|
||||
const result: { [name: string]: string; } = Object.create(null);
|
||||
export function resolveCommonProperties(commit: string | undefined, version: string, machineId: string | undefined, installSourcePath: string): Promise<{ [name: string]: string | undefined; }> {
|
||||
const result: { [name: string]: string | undefined; } = Object.create(null);
|
||||
|
||||
// {{SQL CARBON EDIT}}
|
||||
// __GDPR__COMMON__ "common.machineId" : { "endPoint": "MacAddressHash", "classification": "EndUserPseudonymizedInformation", "purpose": "FeatureInsight" }
|
||||
|
||||
@@ -20,7 +20,7 @@ export class TelemetryAppenderChannel implements IServerChannel {
|
||||
throw new Error(`Event not found: ${event}`);
|
||||
}
|
||||
|
||||
call(_, command: string, { eventName, data }: ITelemetryLog): Thenable<any> {
|
||||
call(_, command: string, { eventName, data }: ITelemetryLog): Promise<any> {
|
||||
this.appender.log(eventName, data);
|
||||
return Promise.resolve(null);
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import product from 'vs/platform/node/product';
|
||||
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
|
||||
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
|
||||
|
||||
export function addGAParameters(telemetryService: ITelemetryService, environmentService: IEnvironmentService, uri: URI, origin: string, experiment = '1'): Thenable<URI> {
|
||||
export function addGAParameters(telemetryService: ITelemetryService, environmentService: IEnvironmentService, uri: URI, origin: string, experiment = '1'): Promise<URI> {
|
||||
if (environmentService.isBuilt && !environmentService.isExtensionDevelopment && !environmentService.args['disable-telemetry'] && !!product.enableTelemetry) {
|
||||
if (uri.scheme === 'https' && uri.authority === 'code.visualstudio.com') {
|
||||
return telemetryService.getTelemetryInfo()
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import * as uuid from 'vs/base/common/uuid';
|
||||
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
|
||||
import { resolveCommonProperties } from 'vs/platform/telemetry/node/commonProperties';
|
||||
|
||||
@@ -13,8 +12,12 @@ export const lastSessionDateStorageKey = 'telemetry.lastSessionDate';
|
||||
import product from 'vs/platform/node/product';
|
||||
import * as Utils from 'sql/common/telemetryUtilities';
|
||||
|
||||
export function resolveWorkbenchCommonProperties(storageService: IStorageService, commit: string, version: string, machineId: string, installSourcePath: string): Promise<{ [name: string]: string }> {
|
||||
export function resolveWorkbenchCommonProperties(storageService: IStorageService, commit: string, version: string, machineId: string, installSourcePath: string): Promise<{ [name: string]: string | undefined }> {
|
||||
return resolveCommonProperties(commit, version, machineId, installSourcePath).then(result => {
|
||||
const instanceId = storageService.get('telemetry.instanceId', StorageScope.GLOBAL)!;
|
||||
const firstSessionDate = storageService.get('telemetry.firstSessionDate', StorageScope.GLOBAL)!;
|
||||
const lastSessionDate = storageService.get(lastSessionDateStorageKey, StorageScope.GLOBAL)!;
|
||||
|
||||
// __GDPR__COMMON__ "common.version.shell" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }
|
||||
result['common.version.shell'] = process.versions && process.versions['electron'];
|
||||
// __GDPR__COMMON__ "common.version.renderer" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }
|
||||
@@ -24,21 +27,15 @@ export function resolveWorkbenchCommonProperties(storageService: IStorageService
|
||||
// {{SQL CARBON EDIT}}
|
||||
result['common.userId'] = '';
|
||||
|
||||
// {{SQL CARBON EDIT}}
|
||||
// const lastSessionDate = storageService.get(lastSessionDateStorageKey, StorageScope.GLOBAL);
|
||||
// if (!process.env['VSCODE_TEST_STORAGE_MIGRATION']) {
|
||||
// storageService.store(lastSessionDateStorageKey, new Date().toUTCString(), StorageScope.GLOBAL);
|
||||
// }
|
||||
|
||||
// {{SQL CARBON EDIT}}
|
||||
// // __GDPR__COMMON__ "common.firstSessionDate" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
|
||||
// result['common.firstSessionDate'] = getOrCreateFirstSessionDate(storageService);
|
||||
// result['common.firstSessionDate'] = firstSessionDate;
|
||||
// // __GDPR__COMMON__ "common.lastSessionDate" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
|
||||
// result['common.lastSessionDate'] = lastSessionDate || '';
|
||||
// // __GDPR__COMMON__ "common.isNewSession" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
|
||||
// result['common.isNewSession'] = !lastSessionDate ? '1' : '0';
|
||||
// // __GDPR__COMMON__ "common.instanceId" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
|
||||
// result['common.instanceId'] = getOrCreateInstanceId(storageService);
|
||||
// result['common.instanceId'] = instanceId;
|
||||
|
||||
// {{SQL CARBON EDIT}}
|
||||
setUsageDates(storageService);
|
||||
@@ -46,48 +43,19 @@ export function resolveWorkbenchCommonProperties(storageService: IStorageService
|
||||
});
|
||||
}
|
||||
|
||||
// {{SQL CARBON EDIT}}
|
||||
// function getOrCreateInstanceId(storageService: IStorageService): string {
|
||||
// const key = 'telemetry.instanceId';
|
||||
|
||||
// let instanceId = storageService.get(key, StorageScope.GLOBAL, void 0);
|
||||
// if (instanceId) {
|
||||
// return instanceId;
|
||||
// }
|
||||
|
||||
// instanceId = uuid.generateUuid();
|
||||
// storageService.store(key, instanceId, StorageScope.GLOBAL);
|
||||
|
||||
// return instanceId;
|
||||
// }
|
||||
|
||||
function getOrCreateFirstSessionDate(storageService: IStorageService): string {
|
||||
const key = 'telemetry.firstSessionDate';
|
||||
|
||||
let firstSessionDate = storageService.get(key, StorageScope.GLOBAL, void 0);
|
||||
if (firstSessionDate) {
|
||||
return firstSessionDate;
|
||||
}
|
||||
|
||||
firstSessionDate = new Date().toUTCString();
|
||||
storageService.store(key, firstSessionDate, StorageScope.GLOBAL);
|
||||
|
||||
return firstSessionDate;
|
||||
}
|
||||
|
||||
// {{SQL CARBON EDIT}}
|
||||
function setUsageDates(storageService: IStorageService): void {
|
||||
// daily last usage date
|
||||
const appStartDate = new Date('January 1, 2000');
|
||||
const dailyLastUseDate = storageService.get('telemetry.dailyLastUseDate', StorageScope.GLOBAL) || appStartDate;
|
||||
const dailyLastUseDate = storageService.get('telemetry.dailyLastUseDate', StorageScope.GLOBAL, appStartDate.toUTCString());
|
||||
storageService.store('telemetry.dailyLastUseDate', dailyLastUseDate, StorageScope.GLOBAL);
|
||||
|
||||
// weekly last usage date
|
||||
const weeklyLastUseDate = storageService.get('telemetry.weeklyLastUseDate', StorageScope.GLOBAL) || appStartDate;
|
||||
const weeklyLastUseDate = storageService.get('telemetry.weeklyLastUseDate', StorageScope.GLOBAL, appStartDate.toUTCString());
|
||||
storageService.store('telemetry.weeklyLastUseDate', weeklyLastUseDate, StorageScope.GLOBAL);
|
||||
|
||||
// monthly last usage date
|
||||
const monthlyLastUseDate = storageService.get('telemetry.monthlyLastUseDate', StorageScope.GLOBAL) || appStartDate;
|
||||
const monthlyLastUseDate = storageService.get('telemetry.monthlyLastUseDate', StorageScope.GLOBAL, appStartDate.toUTCString());
|
||||
storageService.store('telemetry.monthlyLastUseDate', monthlyLastUseDate, StorageScope.GLOBAL);
|
||||
|
||||
}
|
||||
|
||||
@@ -73,14 +73,14 @@ class TestableLogService extends AbstractLogService implements ILogService {
|
||||
}
|
||||
|
||||
suite('AIAdapter', () => {
|
||||
var appInsightsMock: AppInsightsMock;
|
||||
var adapter: AppInsightsAppender;
|
||||
var prefix = 'prefix';
|
||||
let appInsightsMock: AppInsightsMock;
|
||||
let adapter: AppInsightsAppender;
|
||||
let prefix = 'prefix';
|
||||
|
||||
|
||||
setup(() => {
|
||||
appInsightsMock = new AppInsightsMock();
|
||||
adapter = new AppInsightsAppender(prefix, undefined, () => appInsightsMock);
|
||||
adapter = new AppInsightsAppender(prefix, undefined!, () => appInsightsMock);
|
||||
});
|
||||
|
||||
teardown(() => {
|
||||
@@ -101,49 +101,49 @@ suite('AIAdapter', () => {
|
||||
assert.equal(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.equal(first.properties!['first'], '1st');
|
||||
assert.equal(first.measurements!['second'], '2');
|
||||
assert.equal(first.measurements!['third'], 1);
|
||||
});
|
||||
|
||||
test('property limits', () => {
|
||||
var reallyLongPropertyName = 'abcdefghijklmnopqrstuvwxyz';
|
||||
let reallyLongPropertyName = 'abcdefghijklmnopqrstuvwxyz';
|
||||
for (let i = 0; i < 6; i++) {
|
||||
reallyLongPropertyName += 'abcdefghijklmnopqrstuvwxyz';
|
||||
}
|
||||
assert(reallyLongPropertyName.length > 150);
|
||||
|
||||
var reallyLongPropertyValue = 'abcdefghijklmnopqrstuvwxyz012345678901234567890123';
|
||||
let reallyLongPropertyValue = 'abcdefghijklmnopqrstuvwxyz012345678901234567890123';
|
||||
for (let i = 0; i < 21; i++) {
|
||||
reallyLongPropertyValue += 'abcdefghijklmnopqrstuvwxyz012345678901234567890123';
|
||||
}
|
||||
assert(reallyLongPropertyValue.length > 1024);
|
||||
|
||||
var data = Object.create(null);
|
||||
let data = Object.create(null);
|
||||
data[reallyLongPropertyName] = '1234';
|
||||
data['reallyLongPropertyValue'] = reallyLongPropertyValue;
|
||||
adapter.log('testEvent', data);
|
||||
|
||||
assert.equal(appInsightsMock.events.length, 1);
|
||||
|
||||
for (var prop in appInsightsMock.events[0].properties) {
|
||||
for (let prop in appInsightsMock.events[0].properties!) {
|
||||
assert(prop.length < 150);
|
||||
assert(appInsightsMock.events[0].properties[prop].length < 1024);
|
||||
assert(appInsightsMock.events[0].properties![prop].length < 1024);
|
||||
}
|
||||
});
|
||||
|
||||
test('Different data types', () => {
|
||||
var date = new Date();
|
||||
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.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);
|
||||
});
|
||||
|
||||
test('Nested data', () => {
|
||||
@@ -168,12 +168,12 @@ suite('AIAdapter', () => {
|
||||
assert.equal(appInsightsMock.events.length, 1);
|
||||
assert.equal(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.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.equal(appInsightsMock.events[0].properties['nestedObj.nestedObj2.nestedObj3'], JSON.stringify({ 'testProperty': 'test' }));
|
||||
assert.equal(appInsightsMock.events[0].measurements['nestedObj.testMeasurement'], 1);
|
||||
assert.equal(appInsightsMock.events[0].properties!['nestedObj.nestedObj2.nestedObj3'], JSON.stringify({ 'testProperty': 'test' }));
|
||||
assert.equal(appInsightsMock.events[0].measurements!['nestedObj.testMeasurement'], 1);
|
||||
});
|
||||
|
||||
test('Do not Log Telemetry if log level is not trace', () => {
|
||||
|
||||
@@ -17,8 +17,8 @@ suite('Telemetry - common properties', function () {
|
||||
const parentDir = getRandomTestPath(os.tmpdir(), 'vsctests', 'telemetryservice');
|
||||
const installSource = path.join(parentDir, 'installSource');
|
||||
|
||||
const commit: string = void 0;
|
||||
const version: string = void 0;
|
||||
const commit: string = (undefined)!;
|
||||
const version: string = (undefined)!;
|
||||
let testStorageService: IStorageService;
|
||||
|
||||
setup(() => {
|
||||
|
||||
@@ -86,7 +86,7 @@ suite('TelemetryService', () => {
|
||||
|
||||
test('Disposing', sinon.test(function () {
|
||||
let testAppender = new TestTelemetryAppender();
|
||||
let service = new TelemetryService({ appender: testAppender }, undefined);
|
||||
let service = new TelemetryService({ appender: testAppender }, undefined!);
|
||||
|
||||
return service.publicLog('testPrivateEvent').then(() => {
|
||||
assert.equal(testAppender.getEventsCount(), 1);
|
||||
@@ -99,7 +99,7 @@ suite('TelemetryService', () => {
|
||||
// event reporting
|
||||
test('Simple event', sinon.test(function () {
|
||||
let testAppender = new TestTelemetryAppender();
|
||||
let service = new TelemetryService({ appender: testAppender }, undefined);
|
||||
let service = new TelemetryService({ appender: testAppender }, undefined!);
|
||||
|
||||
return service.publicLog('testEvent').then(_ => {
|
||||
assert.equal(testAppender.getEventsCount(), 1);
|
||||
@@ -112,7 +112,7 @@ suite('TelemetryService', () => {
|
||||
|
||||
test('Event with data', sinon.test(function () {
|
||||
let testAppender = new TestTelemetryAppender();
|
||||
let service = new TelemetryService({ appender: testAppender }, undefined);
|
||||
let service = new TelemetryService({ appender: testAppender }, undefined!);
|
||||
|
||||
return service.publicLog('testEvent', {
|
||||
'stringProp': 'property',
|
||||
@@ -140,7 +140,7 @@ suite('TelemetryService', () => {
|
||||
let service = new TelemetryService({
|
||||
appender: testAppender,
|
||||
commonProperties: Promise.resolve({ foo: 'JA!', get bar() { return Math.random(); } })
|
||||
}, undefined);
|
||||
}, undefined!);
|
||||
|
||||
return service.publicLog('testEvent').then(_ => {
|
||||
let [first] = testAppender.events;
|
||||
@@ -158,7 +158,7 @@ suite('TelemetryService', () => {
|
||||
let service = new TelemetryService({
|
||||
appender: testAppender,
|
||||
commonProperties: Promise.resolve({ foo: 'JA!', get bar() { return Math.random(); } })
|
||||
}, undefined);
|
||||
}, undefined!);
|
||||
|
||||
return service.publicLog('testEvent', { hightower: 'xl', price: 8000 }).then(_ => {
|
||||
let [first] = testAppender.events;
|
||||
@@ -181,7 +181,7 @@ suite('TelemetryService', () => {
|
||||
['common.instanceId']: 'two',
|
||||
['common.machineId']: 'three',
|
||||
})
|
||||
}, undefined);
|
||||
}, undefined!);
|
||||
|
||||
return service.getTelemetryInfo().then(info => {
|
||||
assert.equal(info.sessionId, 'one');
|
||||
@@ -194,7 +194,7 @@ suite('TelemetryService', () => {
|
||||
|
||||
test('enableTelemetry on by default', sinon.test(function () {
|
||||
let testAppender = new TestTelemetryAppender();
|
||||
let service = new TelemetryService({ appender: testAppender }, undefined);
|
||||
let service = new TelemetryService({ appender: testAppender }, undefined!);
|
||||
|
||||
return service.publicLog('testEvent').then(() => {
|
||||
assert.equal(testAppender.getEventsCount(), 1);
|
||||
@@ -206,13 +206,13 @@ suite('TelemetryService', () => {
|
||||
|
||||
class JoinableTelemetryService extends TelemetryService {
|
||||
|
||||
private readonly promises: Thenable<void>[] = [];
|
||||
private readonly promises: Promise<void>[] = [];
|
||||
|
||||
join(): Promise<any> {
|
||||
return Promise.all(this.promises);
|
||||
}
|
||||
|
||||
publicLog(eventName: string, data?: ITelemetryData, anonymizeFilePaths?: boolean): Thenable<void> {
|
||||
publicLog(eventName: string, data?: ITelemetryData, anonymizeFilePaths?: boolean): Promise<void> {
|
||||
let p = super.publicLog(eventName, data, anonymizeFilePaths);
|
||||
this.promises.push(p);
|
||||
return p;
|
||||
@@ -227,7 +227,7 @@ suite('TelemetryService', () => {
|
||||
|
||||
// try {
|
||||
// let testAppender = new TestTelemetryAppender();
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined);
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined!);
|
||||
// const errorTelemetry = new ErrorTelemetry(service);
|
||||
|
||||
|
||||
@@ -286,7 +286,7 @@ suite('TelemetryService', () => {
|
||||
// window.onerror = errorStub;
|
||||
|
||||
// let testAppender = new TestTelemetryAppender();
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined);
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined!);
|
||||
// const errorTelemetry = new ErrorTelemetry(service);
|
||||
|
||||
// let testError = new Error('test');
|
||||
@@ -314,7 +314,7 @@ suite('TelemetryService', () => {
|
||||
// window.onerror = errorStub;
|
||||
// let settings = new ErrorTestingSettings();
|
||||
// let testAppender = new TestTelemetryAppender();
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined);
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined!);
|
||||
// const errorTelemetry = new ErrorTelemetry(service);
|
||||
|
||||
// let personInfoWithSpaces = settings.personalInfo.slice(0, 2) + ' ' + settings.personalInfo.slice(2);
|
||||
@@ -338,7 +338,7 @@ suite('TelemetryService', () => {
|
||||
// window.onerror = errorStub;
|
||||
// let settings = new ErrorTestingSettings();
|
||||
// let testAppender = new TestTelemetryAppender();
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined);
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined!);
|
||||
// const errorTelemetry = new ErrorTelemetry(service);
|
||||
|
||||
// let dangerousFilenameError: any = new Error('dangerousFilename');
|
||||
@@ -370,7 +370,7 @@ suite('TelemetryService', () => {
|
||||
// try {
|
||||
// let settings = new ErrorTestingSettings();
|
||||
// let testAppender = new TestTelemetryAppender();
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined);
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined!);
|
||||
// const errorTelemetry = new ErrorTelemetry(service);
|
||||
|
||||
// let dangerousPathWithoutImportantInfoError: any = new Error(settings.dangerousPathWithoutImportantInfo);
|
||||
@@ -400,7 +400,7 @@ suite('TelemetryService', () => {
|
||||
// window.onerror = errorStub;
|
||||
// let settings = new ErrorTestingSettings();
|
||||
// let testAppender = new TestTelemetryAppender();
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined);
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined!);
|
||||
// const errorTelemetry = new ErrorTelemetry(service);
|
||||
|
||||
// let dangerousPathWithoutImportantInfoError: any = new Error('dangerousPathWithoutImportantInfo');
|
||||
@@ -430,7 +430,7 @@ suite('TelemetryService', () => {
|
||||
// try {
|
||||
// let settings = new ErrorTestingSettings();
|
||||
// let testAppender = new TestTelemetryAppender();
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined);
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined!);
|
||||
// const errorTelemetry = new ErrorTelemetry(service);
|
||||
|
||||
// let dangerousPathWithImportantInfoError: any = new Error(settings.dangerousPathWithImportantInfo);
|
||||
@@ -463,7 +463,7 @@ suite('TelemetryService', () => {
|
||||
// window.onerror = errorStub;
|
||||
// let settings = new ErrorTestingSettings();
|
||||
// let testAppender = new TestTelemetryAppender();
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined);
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined!);
|
||||
// const errorTelemetry = new ErrorTelemetry(service);
|
||||
|
||||
// let dangerousPathWithImportantInfoError: any = new Error('dangerousPathWithImportantInfo');
|
||||
@@ -495,7 +495,7 @@ suite('TelemetryService', () => {
|
||||
// try {
|
||||
// let settings = new ErrorTestingSettings();
|
||||
// let testAppender = new TestTelemetryAppender();
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined);
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined!);
|
||||
// const errorTelemetry = new ErrorTelemetry(service);
|
||||
|
||||
// let dangerousPathWithImportantInfoError: any = new Error(settings.dangerousPathWithImportantInfo);
|
||||
@@ -524,7 +524,7 @@ suite('TelemetryService', () => {
|
||||
// window.onerror = errorStub;
|
||||
// let settings = new ErrorTestingSettings();
|
||||
// let testAppender = new TestTelemetryAppender();
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined);
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined!);
|
||||
// const errorTelemetry = new ErrorTelemetry(service);
|
||||
|
||||
// let dangerousPathWithImportantInfoError: any = new Error('dangerousPathWithImportantInfo');
|
||||
@@ -553,7 +553,7 @@ suite('TelemetryService', () => {
|
||||
// try {
|
||||
// let settings = new ErrorTestingSettings();
|
||||
// let testAppender = new TestTelemetryAppender();
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender, piiPaths: [settings.personalInfo + '/resources/app/'] }, undefined);
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender, piiPaths: [settings.personalInfo + '/resources/app/'] }, undefined!);
|
||||
// const errorTelemetry = new ErrorTelemetry(service);
|
||||
|
||||
// let dangerousPathWithImportantInfoError: any = new Error(settings.dangerousPathWithImportantInfo);
|
||||
@@ -586,7 +586,7 @@ suite('TelemetryService', () => {
|
||||
// window.onerror = errorStub;
|
||||
// let settings = new ErrorTestingSettings();
|
||||
// let testAppender = new TestTelemetryAppender();
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender, piiPaths: [settings.personalInfo + '/resources/app/'] }, undefined);
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender, piiPaths: [settings.personalInfo + '/resources/app/'] }, undefined!);
|
||||
// const errorTelemetry = new ErrorTelemetry(service);
|
||||
|
||||
// let dangerousPathWithImportantInfoError: any = new Error('dangerousPathWithImportantInfo');
|
||||
@@ -618,7 +618,7 @@ suite('TelemetryService', () => {
|
||||
// try {
|
||||
// let settings = new ErrorTestingSettings();
|
||||
// let testAppender = new TestTelemetryAppender();
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined);
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined!);
|
||||
// const errorTelemetry = new ErrorTelemetry(service);
|
||||
|
||||
// let missingModelError: any = new Error(settings.missingModelMessage);
|
||||
@@ -651,7 +651,7 @@ suite('TelemetryService', () => {
|
||||
// window.onerror = errorStub;
|
||||
// let settings = new ErrorTestingSettings();
|
||||
// let testAppender = new TestTelemetryAppender();
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined);
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined!);
|
||||
// const errorTelemetry = new ErrorTelemetry(service);
|
||||
|
||||
// let missingModelError: any = new Error('missingModelMessage');
|
||||
@@ -684,7 +684,7 @@ suite('TelemetryService', () => {
|
||||
// try {
|
||||
// let settings = new ErrorTestingSettings();
|
||||
// let testAppender = new TestTelemetryAppender();
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined);
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined!);
|
||||
// const errorTelemetry = new ErrorTelemetry(service);
|
||||
|
||||
// let noSuchFileError: any = new Error(settings.noSuchFileMessage);
|
||||
@@ -721,7 +721,7 @@ suite('TelemetryService', () => {
|
||||
// window.onerror = errorStub;
|
||||
// let settings = new ErrorTestingSettings();
|
||||
// let testAppender = new TestTelemetryAppender();
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined);
|
||||
// let service = new JoinableTelemetryService({ appender: testAppender }, undefined!);
|
||||
// const errorTelemetry = new ErrorTelemetry(service);
|
||||
|
||||
// let noSuchFileError: any = new Error('noSuchFileMessage');
|
||||
@@ -752,7 +752,7 @@ suite('TelemetryService', () => {
|
||||
|
||||
test('Telemetry Service sends events when enableTelemetry is on', sinon.test(function () {
|
||||
let testAppender = new TestTelemetryAppender();
|
||||
let service = new TelemetryService({ appender: testAppender }, undefined);
|
||||
let service = new TelemetryService({ appender: testAppender }, undefined!);
|
||||
|
||||
return service.publicLog('testEvent').then(() => {
|
||||
assert.equal(testAppender.getEventsCount(), 1);
|
||||
@@ -776,20 +776,20 @@ suite('TelemetryService', () => {
|
||||
} as any;
|
||||
},
|
||||
updateValue(): Promise<void> {
|
||||
return null;
|
||||
return null!;
|
||||
},
|
||||
inspect(key: string) {
|
||||
return {
|
||||
value: getConfigurationValue(this.getValue(), key),
|
||||
default: getConfigurationValue(this.getValue(), key),
|
||||
user: getConfigurationValue(this.getValue(), key),
|
||||
workspace: null,
|
||||
workspaceFolder: null
|
||||
workspace: null!,
|
||||
workspaceFolder: null!
|
||||
};
|
||||
},
|
||||
keys() { return { default: [], user: [], workspace: [], workspaceFolder: [] }; },
|
||||
onDidChangeConfiguration: emitter.event,
|
||||
reloadConfiguration(): Promise<void> { return null; },
|
||||
reloadConfiguration(): Promise<void> { return null!; },
|
||||
getConfigurationData() { return null; }
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user