Bug 1288526 - New console frontend: Add test for performance of searching/clearing. r=bgrins
--- a/devtools/client/webconsole/new-console-output/test/utils/test_render_perf.html
+++ b/devtools/client/webconsole/new-console-output/test/utils/test_render_perf.html
@@ -11,23 +11,27 @@
<body>
<p>Test for render perf</p>
<div id="output"></div>
<script type="text/javascript;version=1.8">
const testPackets = [];
const numMessages = 1000;
for (let id = 0; id < numMessages; id++) {
+ let message = "Odd text";
+ if (id % 2 === 0) {
+ message = "Even text";
+ }
testPackets.push({
"from": "server1.conn4.child1/consoleActor2",
"type": "consoleAPICall",
"message": {
"arguments": [
"foobar",
- "test",
+ message,
id
],
"columnNumber": 1,
"counter": null,
"filename": "file:///test.html",
"functionName": "",
"groupName": "",
"level": "log",
@@ -36,24 +40,49 @@ for (let id = 0; id < numMessages; id++)
"styles": [],
"timeStamp": 1455064271115 + id,
"timer": null,
"workerType": "none",
"category": "webdev"
}
});
}
+
+function timeit(cb) {
+ // Return a Promise that resolves the number of seconds cb takes.
+ return new Promise(resolve => {
+ let start = performance.now();
+ cb();
+ let elapsed = performance.now() - start;
+ resolve(elapsed / 1000);
+ });
+}
+
window.onload = Task.async(function* () {
+ const { store } = browserRequire("devtools/client/webconsole/new-console-output/store");
+ const { messagesSearch, filtersClear } = browserRequire("devtools/client/webconsole/new-console-output/actions/messages");
const NewConsoleOutputWrapper = browserRequire("devtools/client/webconsole/new-console-output/new-console-output-wrapper");
const wrapper = new NewConsoleOutputWrapper(document.querySelector("#output"), {});
- let start = performance.now();
- testPackets.forEach((message) => {
- wrapper.dispatchMessageAdd(message);
+
+ let time = yield timeit(() => {
+ testPackets.forEach((message) => {
+ wrapper.dispatchMessageAdd(message);
+ });
});
- let elapsed = performance.now() - start;
- info("took " + elapsed / 1000 + " seconds");
+ info("took " + time + " seconds to render messages");
+
+ time = yield timeit(() => {
+ store.dispatch(messagesSearch("Odd text"));
+ });
+ info("took " + time + " seconds to search filter half the messages");
+
+ time = yield timeit(() => {
+ store.dispatch(filtersClear());
+ });
+ info("took " + time + " seconds to clear the filter");
+
ok(true, "Yay, it didn't time out!");
SimpleTest.finish();
});
</script>
</body>
</html>