Add close() to IPerformanceLogger

Summary:
To represent a final state where a logger should no longer be used

Changelog: [Internal] - To represent a final state where a logger should no longer be used

Reviewed By: rubennorte

Differential Revision: D23845307

fbshipit-source-id: 4b2bfda4f7425ba6bc8e5e1233d9baea60dd8667
This commit is contained in:
Luna Wei
2020-09-23 15:49:38 -07:00
committed by Facebook GitHub Bot
parent 6d355c0abd
commit aebb97b9c6
2 changed files with 81 additions and 0 deletions
@@ -28,6 +28,40 @@ describe('PerformanceLogger', () => {
beforeEach(() => {
GlobalPerformanceLogger.clear();
});
describe('close() ', () => {
let perfLogger;
beforeEach(() => {
perfLogger = createPerformanceLogger();
});
it('does not markPoint', () => {
perfLogger.close();
perfLogger.markPoint(POINT, POINT_TIMESTAMP);
expect(perfLogger.getPoints()).toEqual({});
});
it('does not startTimespan', () => {
perfLogger.close();
perfLogger.startTimespan(TIMESPAN_1);
expect(perfLogger.getTimespans()).toEqual({});
});
it('does not setExtra', () => {
perfLogger.close();
perfLogger.setExtra('extra', 'an extra value');
expect(perfLogger.getTimespans()).toEqual({});
});
it('does not stopTimespan', () => {
perfLogger.startTimespan(TIMESPAN_1);
perfLogger.close();
let timespan = perfLogger.getTimespans()[TIMESPAN_1];
expect(timespan.endTime).toBeUndefined();
expect(timespan.totalTime).toBeUndefined();
perfLogger.stopTimespan(TIMESPAN_1);
timespan = perfLogger.getTimespans()[TIMESPAN_1];
expect(timespan.endTime).toBeUndefined();
expect(timespan.totalTime).toBeUndefined();
});
});
it('starts & stops a timespan', () => {
let perfLogger = createPerformanceLogger();
@@ -39,12 +39,14 @@ export interface IPerformanceLogger {
): void;
clear(): void;
clearCompleted(): void;
close(): void;
currentTimestamp(): number;
getExtras(): {[key: string]: ExtraValue, ...};
getPoints(): {[key: string]: number, ...};
getPointExtras(): {[key: string]: Extras, ...};
getTimespans(): {[key: string]: Timespan, ...};
hasTimespan(key: string): boolean;
isClosed(): boolean;
logEverything(): void;
markPoint(key: string, timestamp?: number, extras?: Extras): void;
removeExtra(key: string): ExtraValue | void;
@@ -62,6 +64,7 @@ class PerformanceLogger implements IPerformanceLogger {
_extras: {[key: string]: ExtraValue} = {};
_points: {[key: string]: number} = {};
_pointExtras: {[key: string]: Extras, ...} = {};
_closed: boolean = false;
addTimespan(
key: string,
@@ -70,6 +73,12 @@ class PerformanceLogger implements IPerformanceLogger {
startExtras?: Extras,
endExtras?: Extras,
) {
if (this._closed) {
if (PRINT_TO_CONSOLE && __DEV__) {
infoLog('PerformanceLogger: addTimespan - has closed ignoring: ', key);
}
return;
}
if (this._timespans[key]) {
if (PRINT_TO_CONSOLE && __DEV__) {
infoLog(
@@ -111,6 +120,10 @@ class PerformanceLogger implements IPerformanceLogger {
}
}
close() {
this._closed = true;
}
currentTimestamp() {
return performanceNow();
}
@@ -135,6 +148,10 @@ class PerformanceLogger implements IPerformanceLogger {
return !!this._timespans[key];
}
isClosed() {
return this._closed;
}
logEverything() {
if (PRINT_TO_CONSOLE) {
// log timespans
@@ -155,6 +172,12 @@ class PerformanceLogger implements IPerformanceLogger {
}
markPoint(key: string, timestamp?: number, extras?: Extras) {
if (this._closed) {
if (PRINT_TO_CONSOLE && __DEV__) {
infoLog('PerformanceLogger: markPoint - has closed ignoring: ', key);
}
return;
}
if (this._points[key]) {
if (PRINT_TO_CONSOLE && __DEV__) {
infoLog(
@@ -177,6 +200,13 @@ class PerformanceLogger implements IPerformanceLogger {
}
setExtra(key: string, value: ExtraValue) {
if (this._closed) {
if (PRINT_TO_CONSOLE && __DEV__) {
infoLog('PerformanceLogger: setExtra - has closed ignoring: ', key);
}
return;
}
if (this._extras.hasOwnProperty(key)) {
if (PRINT_TO_CONSOLE && __DEV__) {
infoLog(
@@ -190,6 +220,16 @@ class PerformanceLogger implements IPerformanceLogger {
}
startTimespan(key: string, extras?: Extras) {
if (this._closed) {
if (PRINT_TO_CONSOLE && __DEV__) {
infoLog(
'PerformanceLogger: startTimespan - has closed ignoring: ',
key,
);
}
return;
}
if (this._timespans[key]) {
if (PRINT_TO_CONSOLE && __DEV__) {
infoLog(
@@ -211,6 +251,13 @@ class PerformanceLogger implements IPerformanceLogger {
}
stopTimespan(key: string, extras?: Extras) {
if (this._closed) {
if (PRINT_TO_CONSOLE && __DEV__) {
infoLog('PerformanceLogger: stopTimespan - has closed ignoring: ', key);
}
return;
}
const timespan = this._timespans[key];
if (!timespan || timespan.startTime == null) {
if (PRINT_TO_CONSOLE && __DEV__) {