Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
4 "use strict";
6 function test() {
7 runTests();
8 }
10 var EchoServer = {
11 _deferred: null,
12 _stopwatch: null,
13 _browser: null,
15 timeAsyncMessage: function timeAsyncMessage(aJson) {
16 if (this._stopwatch == null) {
17 this._stopwatch = new StopWatch(false);
18 }
19 this._deferred = Promise.defer();
20 messageManager.addMessageListener("Test:EchoResponse", this);
21 this._stopwatch.start();
22 this._browser.messageManager.sendAsyncMessage("Test:EchoRequest", aJson);
23 return this._deferred.promise;
24 },
26 receiveMessage: function receiveMessage(aMessage) {
27 let json = aMessage.json;
28 switch (aMessage.name) {
29 case "Test:EchoResponse":
30 let msec = this._stopwatch.stop();
31 messageManager.removeMessageListener("Test:EchoResponse", this);
32 this._deferred.resolve(msec);
33 break;
34 }
35 },
36 };
39 gTests.push({
40 desc: "msg manager 1",
41 run: function run() {
42 yield addTab("about:blank");
43 yield hideContextUI();
45 let browser = Browser.selectedTab.browser;
46 EchoServer._browser = browser;
48 browser.messageManager.loadFrameScript(chromeRoot + "msgmanagerecho.js", true);
50 yield waitForMs(1000);
52 let openDataSet = new Array();
54 for (let idx = 0; idx < 100; idx++) {
55 let msec = yield EchoServer.timeAsyncMessage({});
56 openDataSet.push(msec);
57 }
59 PerfTest.declareTest("A4354ACB-34DE-4796-914F-FD01EF298B1D",
60 "msg manager 01", "platform", "",
61 "Measures the time it takes to send/recv 100 message manager messages with an empty payload. " +
62 "Browser displays about:blank during the test.");
63 let result = PerfTest.computeAverage(openDataSet, { stripOutliers: false });
64 PerfTest.declareNumericalResult(result, "msec");
65 }
66 });
68 gTests.push({
69 desc: "msg manager 1",
70 run: function run() {
71 yield addTab("about:blank");
72 yield hideContextUI();
74 let browser = Browser.selectedTab.browser;
75 EchoServer._browser = browser;
77 browser.messageManager.loadFrameScript(chromeRoot + "msgmanagerecho.js", true);
79 let ds = {};
81 for (let i = 0; i < 100; i++) {
82 ds["i" + i] = { idx: i };
83 let table = ds["i" + i];
84 for (let j = 0; j < 100; j++) {
85 table["j" + i] = { rnd: Math.random() };
86 }
87 }
89 yield waitForMs(1000);
91 let openDataSet = new Array();
93 for (let idx = 0; idx < 100; idx++) {
94 let msec = yield EchoServer.timeAsyncMessage(ds);
95 openDataSet.push(msec);
96 }
98 PerfTest.declareTest("B4354ACB-34DE-4796-914F-FD01EF298B1D",
99 "msg manager 02", "platform", "",
100 "Measures the time it takes to send/recv 100 message manager messages with a heavy payload. " +
101 "Browser displays about:blank during the test.");
102 let result = PerfTest.computeAverage(openDataSet, { stripOutliers: false });
103 PerfTest.declareNumericalResult(result, "msec");
104 }
105 });
107 gTests.push({
108 desc: "msg manager 3",
109 run: function run() {
110 yield addTab(chromeRoot + "res/ripples.html");
111 yield hideContextUI();
113 let browser = Browser.selectedTab.browser;
114 EchoServer._browser = browser;
116 browser.messageManager.loadFrameScript(chromeRoot + "msgmanagerecho.js", true);
118 let ds = {};
120 for (let i = 0; i < 100; i++) {
121 ds["i" + i] = { idx: i };
122 let table = ds["i" + i];
123 for (let j = 0; j < 100; j++) {
124 table["j" + i] = { rnd: Math.random() };
125 }
126 }
128 yield waitForMs(1000);
130 let openDataSet = new Array();
132 for (let idx = 0; idx < 100; idx++) {
133 let msec = yield EchoServer.timeAsyncMessage(ds);
134 openDataSet.push(msec);
135 }
137 PerfTest.declareTest("C4354ACB-34DE-4796-914F-FD01EF298B1D",
138 "msg manager 03", "platform", "",
139 "Measures the time it takes to send/recv 100 message manager messages with a heavy payload. " +
140 "Browser displays ripples during the test.");
141 let result = PerfTest.computeAverage(openDataSet, { stripOutliers: false });
142 PerfTest.declareNumericalResult(result, "msec");
143 }
144 });