Skip to content

Commit b94ba40

Browse files
yungstersFacebook Github Bot 6
authored andcommitted
Relay: Print Estimated Request Size
Reviewed By: kassens Differential Revision: D3754378 fbshipit-source-id: c1142245888b7e511740ea42ccf8f12cd499cd3b
1 parent a5355ba commit b94ba40

File tree

1 file changed

+36
-7
lines changed

1 file changed

+36
-7
lines changed

src/tools/RelayNetworkDebug.js

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ const Relay = require('RelayPublic');
1919
import type RelayQueryRequest from 'RelayQueryRequest';
2020

2121
const performanceNow = require('performanceNow');
22+
const xhrSimpleDataSerializer = require('xhrSimpleDataSerializer');
2223

2324
export type RelayNetworkDebuggable = {
2425
name: string,
@@ -51,13 +52,17 @@ class RelayNetworkDebugger {
5152
const id = this._queryID++;
5253
const timerName = `[${id}] Request Duration`;
5354

54-
/* eslint-disable no-console */
55-
console.timeStamp && console.timeStamp(`START: [${id}] ${type}: ${name} →`);
55+
/* eslint-disable no-console-disallow */
56+
console.timeStamp && console.timeStamp(
57+
`START: [${id}] ${type}: ${name} \u2192`
58+
);
5659
console.time && console.time(timerName);
5760

5861
const onSettled = (error, response) => {
5962
const time = (performanceNow() - this._initTime) / 1000;
60-
console.timeStamp && console.timeStamp(`← END: [${id}] ${type}: ${name}`);
63+
console.timeStamp && console.timeStamp(
64+
`\u2190 END: [${id}] ${type}: ${name}`
65+
);
6166
const groupName = `%c[${id}] ${type}: ${name} @ ${time}s`;
6267
console.groupCollapsed ?
6368
console.groupCollapsed(
@@ -69,7 +74,7 @@ class RelayNetworkDebugger {
6974
logResult(error, response);
7075
console.groupEnd && console.groupEnd();
7176
};
72-
/* eslint-enable no-console */
77+
/* eslint-enable no-console-disallow */
7378

7479
promise.then(
7580
response => onSettled(null, response),
@@ -87,21 +92,45 @@ function createDebuggableFromRequest(
8792
type,
8893
promise: request.getPromise(),
8994
logResult(error, response) {
90-
/* eslint-disable no-console */
95+
/* eslint-disable no-console-disallow */
96+
console.debug(
97+
'Request Size (Estimate): %s',
98+
formatSize(
99+
xhrSimpleDataSerializer({
100+
q: request.getQueryString(),
101+
query_params: request.getVariables(),
102+
}).length
103+
)
104+
);
105+
91106
console.debug && console.debug(
92107
'%c%s\n',
93108
'font-size:10px; color:#333; font-family:mplus-2m-regular,menlo,' +
94109
'monospaced;',
95110
request.getQueryString()
96111
);
97-
console.log('Request variables\n', request.getVariables());
112+
113+
114+
console.log('Request Variables\n', request.getVariables());
98115
error && console.error(error);
99116
response && console.log(response);
100-
/* eslint-enable no-console */
117+
/* eslint-enable no-console-disallow */
101118
},
102119
};
103120
}
104121

122+
const ALL_UNITS = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
123+
function formatSize(bytes: number): string {
124+
const sign = bytes < 0 ? -1 : 1;
125+
bytes = Math.abs(bytes);
126+
let i = 0;
127+
while (bytes >= Math.pow(1024, i + 1) && i < ALL_UNITS.length) {
128+
i++;
129+
}
130+
const value = sign * bytes * 1.0 / Math.pow(1024, i);
131+
return Number(value.toFixed(2)) + ALL_UNITS[i];
132+
}
133+
105134
let networkDebugger: ?RelayNetworkDebugger;
106135

107136
const RelayNetworkDebug = {

0 commit comments

Comments
 (0)