From d215bada5eabe56781024a2c943d53ffb18f16a4 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Tue, 12 Apr 2022 11:13:15 +0200 Subject: [PATCH] smoke - more logging for shared process --- .../sharedProcess/sharedProcessMain.ts | 5 +---- .../platform/request/browser/requestService.ts | 4 ++-- src/vs/platform/request/node/requestService.ts | 6 +++--- .../electron-main/sharedProcess.ts | 6 +++--- .../electron-sandbox/sharedProcessService.ts | 3 ++- .../src/areas/extensions/extensions.test.ts | 2 -- .../smoke/src/areas/workbench/data-loss.test.ts | 17 +++++++++-------- .../src/areas/workbench/localization.test.ts | 2 -- test/smoke/src/utils.ts | 9 +++++++-- 9 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts b/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts index 9146df0c064..3687285e230 100644 --- a/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts +++ b/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts @@ -148,7 +148,7 @@ class SharedProcessMain extends Disposable { const logService = accessor.get(ILogService); // Log info - logService.info('sharedProcess configuration', JSON.stringify(this.configuration)); + logService.trace('sharedProcess configuration', JSON.stringify(this.configuration)); // Channels this.initChannels(accessor); @@ -198,9 +198,6 @@ class SharedProcessMain extends Disposable { const logService = this._register(new FollowerLogService(logLevelClient, multiplexLogger)); services.set(ILogService, logService); - // Log info - logService.info('sharedProcess is alive!'); - // Worker this.sharedProcessWorkerService = new SharedProcessWorkerService(logService); services.set(ISharedProcessWorkerService, this.sharedProcessWorkerService); diff --git a/src/vs/platform/request/browser/requestService.ts b/src/vs/platform/request/browser/requestService.ts index a37fc5cfc31..09c9baec136 100644 --- a/src/vs/platform/request/browser/requestService.ts +++ b/src/vs/platform/request/browser/requestService.ts @@ -25,7 +25,7 @@ export class RequestService implements IRequestService { } async request(options: IRequestOptions, token: CancellationToken): Promise { - this.logService.info('RequestService#request (browser) - begin', options.url); + this.logService.trace('RequestService#request (browser) - begin', options.url); if (!options.proxyAuthorization) { options.proxyAuthorization = this.configurationService.getValue('http.proxyAuthorization'); @@ -34,7 +34,7 @@ export class RequestService implements IRequestService { try { const res = await request(options, token); - this.logService.info('RequestService#request (browser) - success', options.url); + this.logService.trace('RequestService#request (browser) - success', options.url); return res; } catch (error) { diff --git a/src/vs/platform/request/node/requestService.ts b/src/vs/platform/request/node/requestService.ts index 5d8cbb73770..042ae6be1b5 100644 --- a/src/vs/platform/request/node/requestService.ts +++ b/src/vs/platform/request/node/requestService.ts @@ -62,7 +62,7 @@ export class RequestService extends Disposable implements IRequestService { } async request(options: NodeRequestOptions, token: CancellationToken): Promise { - this.logService.info('RequestService#request (node) - begin', options.url); + this.logService.trace('RequestService#request (node) - begin', options.url); const { proxyUrl, strictSSL } = this; @@ -95,11 +95,11 @@ export class RequestService extends Disposable implements IRequestService { try { const res = await this._request(options, token); - this.logService.info('RequestService#request (node) - success', options.url); + this.logService.trace('RequestService#request (node) - success', options.url); return res; } catch (error) { - this.logService.error('RequestService#request (node) - error', options.url, error); + this.logService.trace('RequestService#request (node) - error', options.url, error); throw error; } diff --git a/src/vs/platform/sharedProcess/electron-main/sharedProcess.ts b/src/vs/platform/sharedProcess/electron-main/sharedProcess.ts index f7046a4d756..83f76d7f402 100644 --- a/src/vs/platform/sharedProcess/electron-main/sharedProcess.ts +++ b/src/vs/platform/sharedProcess/electron-main/sharedProcess.ts @@ -60,7 +60,7 @@ export class SharedProcess extends Disposable implements ISharedProcess { } private async onWindowConnection(e: IpcMainEvent, nonce: string): Promise { - this.logService.trace('SharedProcess: on vscode:createSharedProcessMessageChannel'); + this.logService.info('SharedProcess: on vscode:createSharedProcessMessageChannel'); // release barrier if this is the first window connection if (!this.firstWindowConnectionBarrier.isOpen()) { @@ -175,7 +175,7 @@ export class SharedProcess extends Disposable implements ISharedProcess { // Overall signal that the shared process window was loaded and // all services within have been created. this._whenReady = new Promise(resolve => validatedIpcMain.once('vscode:shared-process->electron-main=init-done', () => { - this.logService.trace('SharedProcess: Overall ready'); + this.logService.info('SharedProcess: Overall ready'); resolve(); })); @@ -200,7 +200,7 @@ export class SharedProcess extends Disposable implements ISharedProcess { // Wait for window indicating that IPC connections are accepted await new Promise(resolve => validatedIpcMain.once('vscode:shared-process->electron-main=ipc-ready', () => { - this.logService.trace('SharedProcess: IPC ready'); + this.logService.info('SharedProcess: IPC ready'); resolve(); })); diff --git a/src/vs/workbench/services/sharedProcess/electron-sandbox/sharedProcessService.ts b/src/vs/workbench/services/sharedProcess/electron-sandbox/sharedProcessService.ts index 2806378bc82..2d2d4d50253 100644 --- a/src/vs/workbench/services/sharedProcess/electron-sandbox/sharedProcessService.ts +++ b/src/vs/workbench/services/sharedProcess/electron-sandbox/sharedProcessService.ts @@ -42,9 +42,10 @@ export class SharedProcessService extends Disposable implements ISharedProcessSe // Acquire a message port connected to the shared process mark('code/willConnectSharedProcess'); + this.logService.info('Renderer->SharedProcess#connect: before acquirePort'); const port = await acquirePort('vscode:createSharedProcessMessageChannel', 'vscode:createSharedProcessMessageChannelResult'); mark('code/didConnectSharedProcess'); - this.logService.trace('Renderer->SharedProcess#connect: connection established'); + this.logService.info('Renderer->SharedProcess#connect: connection established'); return this._register(new MessagePortClient(port, `window:${this.windowId}`)); } diff --git a/test/smoke/src/areas/extensions/extensions.test.ts b/test/smoke/src/areas/extensions/extensions.test.ts index 5bde2f96916..7a4875bcd7f 100644 --- a/test/smoke/src/areas/extensions/extensions.test.ts +++ b/test/smoke/src/areas/extensions/extensions.test.ts @@ -13,8 +13,6 @@ export function setup(logger: Logger) { installAllHandlers(logger); it('install and enable vscode-smoketest-check extension', async function () { - this.timeout(1000 * 60 * 5); - const app = this.app as Application; await app.workbench.extensions.openExtensionsViewlet(); diff --git a/test/smoke/src/areas/workbench/data-loss.test.ts b/test/smoke/src/areas/workbench/data-loss.test.ts index f116ec611f3..24939826c43 100644 --- a/test/smoke/src/areas/workbench/data-loss.test.ts +++ b/test/smoke/src/areas/workbench/data-loss.test.ts @@ -3,9 +3,9 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { dirname, join } from 'path'; +import { join } from 'path'; import { Application, ApplicationOptions, Logger, Quality } from '../../../../automation'; -import { createApp, timeout, installDiagnosticsHandler, installAppAfterHandler, getRandomUserDataDir } from '../../utils'; +import { createApp, timeout, installDiagnosticsHandler, installAppAfterHandler, getRandomUserDataDir, suiteLogsPath } from '../../utils'; export function setup(ensureStableCode: () => string | undefined, logger: Logger) { describe('Data Loss (insiders -> insiders)', () => { @@ -19,7 +19,7 @@ export function setup(ensureStableCode: () => string | undefined, logger: Logger it('verifies opened editors are restored', async function () { app = createApp({ ...this.defaultOptions, - logsPath: join(dirname(this.defaultOptions.logsPath), `test_verifies_opened_editors_are_restored`) + logsPath: suiteLogsPath(this.defaultOptions, 'test_verifies_opened_editors_are_restored') }); await app.start(); @@ -44,7 +44,7 @@ export function setup(ensureStableCode: () => string | undefined, logger: Logger it('verifies editors can save and restore', async function () { app = createApp({ ...this.defaultOptions, - logsPath: join(dirname(this.defaultOptions.logsPath), `test_verifies_editors_can_save_and_restore`) + logsPath: suiteLogsPath(this.defaultOptions, 'test_verifies_editors_can_save_and_restore') }); await app.start(); @@ -84,7 +84,7 @@ export function setup(ensureStableCode: () => string | undefined, logger: Logger async function testHotExit(title: string, restartDelay: number | undefined, autoSave: boolean | undefined) { app = createApp({ ...this.defaultOptions, - logsPath: join(dirname(this.defaultOptions.logsPath), title) + logsPath: suiteLogsPath(this.defaultOptions, title) }); await app.start(); @@ -152,7 +152,7 @@ export function setup(ensureStableCode: () => string | undefined, logger: Logger } const userDataDir = getRandomUserDataDir(this.defaultOptions); - const logsPath = join(dirname(this.defaultOptions.logsPath), `test_verifies_opened_editors_are_restored_from_stable`); + const logsPath = suiteLogsPath(this.defaultOptions, 'test_verifies_opened_editors_are_restored_from_stable'); const stableOptions: ApplicationOptions = Object.assign({}, this.defaultOptions); stableOptions.codePath = stableCodePath; @@ -204,12 +204,13 @@ export function setup(ensureStableCode: () => string | undefined, logger: Logger } const userDataDir = getRandomUserDataDir(this.defaultOptions); + const logsPath = suiteLogsPath(this.defaultOptions, title); const stableOptions: ApplicationOptions = Object.assign({}, this.defaultOptions); stableOptions.codePath = stableCodePath; stableOptions.userDataDir = userDataDir; stableOptions.quality = Quality.Stable; - stableOptions.logsPath = join(dirname(this.defaultOptions.logsPath), title); + stableOptions.logsPath = logsPath; stableApp = new Application(stableOptions); await stableApp.start(); @@ -238,7 +239,7 @@ export function setup(ensureStableCode: () => string | undefined, logger: Logger const insiderOptions: ApplicationOptions = Object.assign({}, this.defaultOptions); insiderOptions.userDataDir = userDataDir; - insiderOptions.logsPath = join(dirname(this.defaultOptions.logsPath), title); + insiderOptions.logsPath = logsPath; insidersApp = new Application(insiderOptions); await insidersApp.start(); diff --git a/test/smoke/src/areas/workbench/localization.test.ts b/test/smoke/src/areas/workbench/localization.test.ts index 7b0eaa1c525..afa4e9fced4 100644 --- a/test/smoke/src/areas/workbench/localization.test.ts +++ b/test/smoke/src/areas/workbench/localization.test.ts @@ -14,8 +14,6 @@ export function setup(logger: Logger) { installAllHandlers(logger); it('starts with "DE" locale and verifies title and viewlets text is in German', async function () { - this.timeout(1000 * 60 * 5); - const app = this.app as Application; await app.workbench.extensions.openExtensionsViewlet(); await app.workbench.extensions.installExtension('ms-ceintl.vscode-language-pack-de', false); diff --git a/test/smoke/src/utils.ts b/test/smoke/src/utils.ts index f190da0a715..1272924181b 100644 --- a/test/smoke/src/utils.ts +++ b/test/smoke/src/utils.ts @@ -87,14 +87,19 @@ export function installDiagnosticsHandler(logger: Logger, appFn?: () => Applicat }); } +let logsCounter = 1; + +export function suiteLogsPath(options: ApplicationOptions, suiteName: string): string { + return join(dirname(options.logsPath), `${logsCounter++}_suite_${suiteName.replace(/[^a-z0-9\-]/ig, '_')}`); +} + function installAppBeforeHandler(optionsTransform?: (opts: ApplicationOptions) => ApplicationOptions) { before(async function () { const suiteName = this.test?.parent?.title ?? 'unknown'; this.app = createApp({ ...this.defaultOptions, - // Set a suite specific logs path - logsPath: join(dirname(this.defaultOptions.logsPath), `suite_${suiteName.replace(/[^a-z0-9\-]/ig, '_')}`) + logsPath: suiteLogsPath(this.defaultOptions, suiteName) }, optionsTransform); await this.app.start(); });