monotonic time

This commit is contained in:
Yury Semikhatsky 2024-05-13 16:30:07 -07:00
parent 7e96709ca0
commit 79796dda15
5 changed files with 15 additions and 12 deletions

View file

@ -105,7 +105,7 @@ export class Tracing extends SdkObject implements InstrumentationListener, Snaps
options: {},
platform: process.platform,
wallTime: 0,
monotonicTimeOffset: 0,
monotonicTime: 0,
sdkLanguage: context.attribution.playwright.options.sdkLanguage,
testIdAttributeName
};

View file

@ -56,7 +56,7 @@ export class TestTracing {
options: {},
platform: process.platform,
wallTime: Date.now(),
monotonicTimeOffset: Date.now() - monotonicTime(),
monotonicTime: monotonicTime(),
sdkLanguage: 'javascript',
};
this._appendTraceEvent(this._contextCreatedEvent);

View file

@ -26,8 +26,7 @@ export type ContextEntry = {
browserName: string;
channel?: string;
platform?: string;
wallTime?: number;
monotonicTimeOffset: number;
wallTime: number;
sdkLanguage?: Language;
testIdAttributeName?: string;
title?: string;
@ -59,7 +58,7 @@ export function createEmptyContext(): ContextEntry {
origin: 'testRunner',
traceUrl: '',
startTime: Number.MAX_SAFE_INTEGER,
monotonicTimeOffset: 0,
wallTime: Number.MAX_SAFE_INTEGER,
endTime: 0,
browserName: '',
options: {

View file

@ -78,6 +78,7 @@ export class TraceModernizer {
contextEntry.title = event.title;
contextEntry.platform = event.platform;
contextEntry.wallTime = event.wallTime;
contextEntry.startTime = event.monotonicTime;
contextEntry.sdkLanguage = event.sdkLanguage;
contextEntry.options = event.options;
contextEntry.testIdAttributeName = event.testIdAttributeName;
@ -176,11 +177,13 @@ export class TraceModernizer {
}
private _modernize(event: any): trace.TraceEvent[] {
if (this._version === undefined)
// In trace 6->7 we also need to modernize context-options event.
let version = this._version || event.version;
if (version === undefined)
return [event];
const lastVersion: trace.VERSION = 7;
let events = [event];
for (let version = this._version; version < lastVersion; ++version)
for (; version < lastVersion; ++version)
events = (this as any)[`_modernize_${version}_to_${version + 1}`].call(this, events);
return events;
}
@ -375,18 +378,19 @@ export class TraceModernizer {
options: {},
platform: process.platform,
wallTime: 0,
monotonicTimeOffset: 0,
monotonicTime: 0,
sdkLanguage: 'javascript',
};
result.push(event);
}
for (const event of events) {
if (event.type === 'context-options') {
result.push({ ...event, monotonicTimeOffset: 0, origin: 'library' });
result.push({ ...event, monotonicTime: 0, origin: 'library' });
continue;
}
if (!this._contextEntry.monotonicTimeOffset && event.type === 'before')
this._contextEntry.monotonicTimeOffset = event.wallTime - event.startTime;
// Take wall time from the first event.
if (!this._contextEntry.wallTime && event.type === 'before')
this._contextEntry.wallTime = event.wallTime;
result.push(event);
}
return result;

View file

@ -38,7 +38,7 @@ export type ContextCreatedTraceEvent = {
channel?: string,
platform: string,
wallTime: number,
monotonicTimeOffset: number,
monotonicTime: number,
title?: string,
options: BrowserContextEventOptions,
sdkLanguage?: Language,