michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: "use strict"; michael@0: michael@0: function test() { michael@0: runTests(); michael@0: } michael@0: michael@0: var EchoServer = { michael@0: _deferred: null, michael@0: _stopwatch: null, michael@0: _browser: null, michael@0: michael@0: timeAsyncMessage: function timeAsyncMessage(aJson) { michael@0: if (this._stopwatch == null) { michael@0: this._stopwatch = new StopWatch(false); michael@0: } michael@0: this._deferred = Promise.defer(); michael@0: messageManager.addMessageListener("Test:EchoResponse", this); michael@0: this._stopwatch.start(); michael@0: this._browser.messageManager.sendAsyncMessage("Test:EchoRequest", aJson); michael@0: return this._deferred.promise; michael@0: }, michael@0: michael@0: receiveMessage: function receiveMessage(aMessage) { michael@0: let json = aMessage.json; michael@0: switch (aMessage.name) { michael@0: case "Test:EchoResponse": michael@0: let msec = this._stopwatch.stop(); michael@0: messageManager.removeMessageListener("Test:EchoResponse", this); michael@0: this._deferred.resolve(msec); michael@0: break; michael@0: } michael@0: }, michael@0: }; michael@0: michael@0: michael@0: gTests.push({ michael@0: desc: "msg manager 1", michael@0: run: function run() { michael@0: yield addTab("about:blank"); michael@0: yield hideContextUI(); michael@0: michael@0: let browser = Browser.selectedTab.browser; michael@0: EchoServer._browser = browser; michael@0: michael@0: browser.messageManager.loadFrameScript(chromeRoot + "msgmanagerecho.js", true); michael@0: michael@0: yield waitForMs(1000); michael@0: michael@0: let openDataSet = new Array(); michael@0: michael@0: for (let idx = 0; idx < 100; idx++) { michael@0: let msec = yield EchoServer.timeAsyncMessage({}); michael@0: openDataSet.push(msec); michael@0: } michael@0: michael@0: PerfTest.declareTest("A4354ACB-34DE-4796-914F-FD01EF298B1D", michael@0: "msg manager 01", "platform", "", michael@0: "Measures the time it takes to send/recv 100 message manager messages with an empty payload. " + michael@0: "Browser displays about:blank during the test."); michael@0: let result = PerfTest.computeAverage(openDataSet, { stripOutliers: false }); michael@0: PerfTest.declareNumericalResult(result, "msec"); michael@0: } michael@0: }); michael@0: michael@0: gTests.push({ michael@0: desc: "msg manager 1", michael@0: run: function run() { michael@0: yield addTab("about:blank"); michael@0: yield hideContextUI(); michael@0: michael@0: let browser = Browser.selectedTab.browser; michael@0: EchoServer._browser = browser; michael@0: michael@0: browser.messageManager.loadFrameScript(chromeRoot + "msgmanagerecho.js", true); michael@0: michael@0: let ds = {}; michael@0: michael@0: for (let i = 0; i < 100; i++) { michael@0: ds["i" + i] = { idx: i }; michael@0: let table = ds["i" + i]; michael@0: for (let j = 0; j < 100; j++) { michael@0: table["j" + i] = { rnd: Math.random() }; michael@0: } michael@0: } michael@0: michael@0: yield waitForMs(1000); michael@0: michael@0: let openDataSet = new Array(); michael@0: michael@0: for (let idx = 0; idx < 100; idx++) { michael@0: let msec = yield EchoServer.timeAsyncMessage(ds); michael@0: openDataSet.push(msec); michael@0: } michael@0: michael@0: PerfTest.declareTest("B4354ACB-34DE-4796-914F-FD01EF298B1D", michael@0: "msg manager 02", "platform", "", michael@0: "Measures the time it takes to send/recv 100 message manager messages with a heavy payload. " + michael@0: "Browser displays about:blank during the test."); michael@0: let result = PerfTest.computeAverage(openDataSet, { stripOutliers: false }); michael@0: PerfTest.declareNumericalResult(result, "msec"); michael@0: } michael@0: }); michael@0: michael@0: gTests.push({ michael@0: desc: "msg manager 3", michael@0: run: function run() { michael@0: yield addTab(chromeRoot + "res/ripples.html"); michael@0: yield hideContextUI(); michael@0: michael@0: let browser = Browser.selectedTab.browser; michael@0: EchoServer._browser = browser; michael@0: michael@0: browser.messageManager.loadFrameScript(chromeRoot + "msgmanagerecho.js", true); michael@0: michael@0: let ds = {}; michael@0: michael@0: for (let i = 0; i < 100; i++) { michael@0: ds["i" + i] = { idx: i }; michael@0: let table = ds["i" + i]; michael@0: for (let j = 0; j < 100; j++) { michael@0: table["j" + i] = { rnd: Math.random() }; michael@0: } michael@0: } michael@0: michael@0: yield waitForMs(1000); michael@0: michael@0: let openDataSet = new Array(); michael@0: michael@0: for (let idx = 0; idx < 100; idx++) { michael@0: let msec = yield EchoServer.timeAsyncMessage(ds); michael@0: openDataSet.push(msec); michael@0: } michael@0: michael@0: PerfTest.declareTest("C4354ACB-34DE-4796-914F-FD01EF298B1D", michael@0: "msg manager 03", "platform", "", michael@0: "Measures the time it takes to send/recv 100 message manager messages with a heavy payload. " + michael@0: "Browser displays ripples during the test."); michael@0: let result = PerfTest.computeAverage(openDataSet, { stripOutliers: false }); michael@0: PerfTest.declareNumericalResult(result, "msec"); michael@0: } michael@0: });