browser/metro/base/tests/mochiperf/browser_msgmgr_01.js

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

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 });

mercurial