Skip to content

Commit aebb97b

Browse files
Luna Weifacebook-github-bot
authored andcommitted
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
1 parent 6d355c0 commit aebb97b

File tree

2 files changed

+81
-0
lines changed

2 files changed

+81
-0
lines changed

Libraries/Utilities/__tests__/PerformanceLogger-test.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,40 @@ describe('PerformanceLogger', () => {
2828
beforeEach(() => {
2929
GlobalPerformanceLogger.clear();
3030
});
31+
describe('close() ', () => {
32+
let perfLogger;
33+
beforeEach(() => {
34+
perfLogger = createPerformanceLogger();
35+
});
36+
37+
it('does not markPoint', () => {
38+
perfLogger.close();
39+
perfLogger.markPoint(POINT, POINT_TIMESTAMP);
40+
expect(perfLogger.getPoints()).toEqual({});
41+
});
42+
it('does not startTimespan', () => {
43+
perfLogger.close();
44+
perfLogger.startTimespan(TIMESPAN_1);
45+
expect(perfLogger.getTimespans()).toEqual({});
46+
});
47+
it('does not setExtra', () => {
48+
perfLogger.close();
49+
perfLogger.setExtra('extra', 'an extra value');
50+
expect(perfLogger.getTimespans()).toEqual({});
51+
});
52+
53+
it('does not stopTimespan', () => {
54+
perfLogger.startTimespan(TIMESPAN_1);
55+
perfLogger.close();
56+
let timespan = perfLogger.getTimespans()[TIMESPAN_1];
57+
expect(timespan.endTime).toBeUndefined();
58+
expect(timespan.totalTime).toBeUndefined();
59+
perfLogger.stopTimespan(TIMESPAN_1);
60+
timespan = perfLogger.getTimespans()[TIMESPAN_1];
61+
expect(timespan.endTime).toBeUndefined();
62+
expect(timespan.totalTime).toBeUndefined();
63+
});
64+
});
3165

3266
it('starts & stops a timespan', () => {
3367
let perfLogger = createPerformanceLogger();

Libraries/Utilities/createPerformanceLogger.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,14 @@ export interface IPerformanceLogger {
3939
): void;
4040
clear(): void;
4141
clearCompleted(): void;
42+
close(): void;
4243
currentTimestamp(): number;
4344
getExtras(): {[key: string]: ExtraValue, ...};
4445
getPoints(): {[key: string]: number, ...};
4546
getPointExtras(): {[key: string]: Extras, ...};
4647
getTimespans(): {[key: string]: Timespan, ...};
4748
hasTimespan(key: string): boolean;
49+
isClosed(): boolean;
4850
logEverything(): void;
4951
markPoint(key: string, timestamp?: number, extras?: Extras): void;
5052
removeExtra(key: string): ExtraValue | void;
@@ -62,6 +64,7 @@ class PerformanceLogger implements IPerformanceLogger {
6264
_extras: {[key: string]: ExtraValue} = {};
6365
_points: {[key: string]: number} = {};
6466
_pointExtras: {[key: string]: Extras, ...} = {};
67+
_closed: boolean = false;
6568

6669
addTimespan(
6770
key: string,
@@ -70,6 +73,12 @@ class PerformanceLogger implements IPerformanceLogger {
7073
startExtras?: Extras,
7174
endExtras?: Extras,
7275
) {
76+
if (this._closed) {
77+
if (PRINT_TO_CONSOLE && __DEV__) {
78+
infoLog('PerformanceLogger: addTimespan - has closed ignoring: ', key);
79+
}
80+
return;
81+
}
7382
if (this._timespans[key]) {
7483
if (PRINT_TO_CONSOLE && __DEV__) {
7584
infoLog(
@@ -111,6 +120,10 @@ class PerformanceLogger implements IPerformanceLogger {
111120
}
112121
}
113122

123+
close() {
124+
this._closed = true;
125+
}
126+
114127
currentTimestamp() {
115128
return performanceNow();
116129
}
@@ -135,6 +148,10 @@ class PerformanceLogger implements IPerformanceLogger {
135148
return !!this._timespans[key];
136149
}
137150

151+
isClosed() {
152+
return this._closed;
153+
}
154+
138155
logEverything() {
139156
if (PRINT_TO_CONSOLE) {
140157
// log timespans
@@ -155,6 +172,12 @@ class PerformanceLogger implements IPerformanceLogger {
155172
}
156173

157174
markPoint(key: string, timestamp?: number, extras?: Extras) {
175+
if (this._closed) {
176+
if (PRINT_TO_CONSOLE && __DEV__) {
177+
infoLog('PerformanceLogger: markPoint - has closed ignoring: ', key);
178+
}
179+
return;
180+
}
158181
if (this._points[key]) {
159182
if (PRINT_TO_CONSOLE && __DEV__) {
160183
infoLog(
@@ -177,6 +200,13 @@ class PerformanceLogger implements IPerformanceLogger {
177200
}
178201

179202
setExtra(key: string, value: ExtraValue) {
203+
if (this._closed) {
204+
if (PRINT_TO_CONSOLE && __DEV__) {
205+
infoLog('PerformanceLogger: setExtra - has closed ignoring: ', key);
206+
}
207+
return;
208+
}
209+
180210
if (this._extras.hasOwnProperty(key)) {
181211
if (PRINT_TO_CONSOLE && __DEV__) {
182212
infoLog(
@@ -190,6 +220,16 @@ class PerformanceLogger implements IPerformanceLogger {
190220
}
191221

192222
startTimespan(key: string, extras?: Extras) {
223+
if (this._closed) {
224+
if (PRINT_TO_CONSOLE && __DEV__) {
225+
infoLog(
226+
'PerformanceLogger: startTimespan - has closed ignoring: ',
227+
key,
228+
);
229+
}
230+
return;
231+
}
232+
193233
if (this._timespans[key]) {
194234
if (PRINT_TO_CONSOLE && __DEV__) {
195235
infoLog(
@@ -211,6 +251,13 @@ class PerformanceLogger implements IPerformanceLogger {
211251
}
212252

213253
stopTimespan(key: string, extras?: Extras) {
254+
if (this._closed) {
255+
if (PRINT_TO_CONSOLE && __DEV__) {
256+
infoLog('PerformanceLogger: stopTimespan - has closed ignoring: ', key);
257+
}
258+
return;
259+
}
260+
214261
const timespan = this._timespans[key];
215262
if (!timespan || timespan.startTime == null) {
216263
if (PRINT_TO_CONSOLE && __DEV__) {

0 commit comments

Comments
 (0)