Bug 1394804 - Restart firefox between each DAMP runs and record a "cold-load" run for the inspector. r=bgrins,jmaher draft
authorAlexandre Poirot <poirot.alex@gmail.com>
Wed, 20 Sep 2017 11:05:37 +0200
changeset 667561 e2f153c418417f3b41f9c96d3c9a0451ccd2d1f0
parent 667560 020849f9abb7a93e8e36f68628c3ace6484708e0
child 667562 e9875cae4f0e24d793ff92c1222f870b6d48db48
push id80756
push userbmo:poirot.alex@gmail.com
push dateWed, 20 Sep 2017 09:16:28 +0000
reviewersbgrins, jmaher
bugs1394804
milestone57.0a1
Bug 1394804 - Restart firefox between each DAMP runs and record a "cold-load" run for the inspector. r=bgrins,jmaher MozReview-Commit-ID: 8Ss2W9DuPTp
testing/talos/talos/test.py
testing/talos/talos/tests/devtools/addon/content/damp.js
--- a/testing/talos/talos/test.py
+++ b/testing/talos/talos/test.py
@@ -407,18 +407,19 @@ class cart(PageloaderTest):
 class damp(PageloaderTest):
     """
     Devtools At Maximum Performance
     Tests the speed of DevTools toolbox open, close, and page reload
     for each tool, across a very simple and very complicated page.
     """
     tpmanifest = '${talos}/tests/devtools/damp.manifest'
     extensions = '${talos}/tests/devtools/addon/devtools-signed.xpi'
+    cycles = 5
     tpcycles = 1
-    tppagecycles = 25
+    tppagecycles = 5
     tploadnocache = True
     tpmozafterpaint = False
     gecko_profile_interval = 10
     gecko_profile_entries = 1000000
     win_counters = w7_counters = linux_counters = mac_counters = None
     filters = filter.ignore_first.prepare(1) + filter.median.prepare()
     preferences = {'devtools.memory.enabled': True,
                    'addon.test.damp.webserver': '${webserver}'}
--- a/testing/talos/talos/tests/devtools/addon/content/damp.js
+++ b/testing/talos/talos/tests/devtools/addon/content/damp.js
@@ -274,93 +274,99 @@ Damp.prototype = {
     this._results.push({
       name: label + ".takeCensus",
       value: end - start
     });
 
     return Promise.resolve();
   },
 
-  _getToolLoadingTests(url, label) {
+  async openToolboxAndLog(name, tool) {
+    let {time, toolbox} = await this.openToolbox(tool);
+    this._results.push({name: name + ".open.DAMP", value: time });
+    return toolbox;
+  },
 
-    let openToolboxAndLog = Task.async(function* (name, tool) {
-      let {time, toolbox} = yield this.openToolbox(tool);
-      this._results.push({name: name + ".open.DAMP", value: time });
-      return toolbox;
-    }.bind(this));
+  async closeToolboxAndLog(name) {
+    let {time} = await this.closeToolbox();
+    this._results.push({name: name + ".close.DAMP", value: time });
+  },
 
-    let closeToolboxAndLog = Task.async(function* (name) {
-      let {time} = yield this.closeToolbox();
-      this._results.push({name: name + ".close.DAMP", value: time });
-    }.bind(this));
+  async reloadPageAndLog(name) {
+    let {time} = await this.reloadPage();
+    this._results.push({name: name + ".reload.DAMP", value: time });
+  },
 
-    let reloadPageAndLog = Task.async(function* (name) {
-      let {time} = yield this.reloadPage();
-      this._results.push({name: name + ".reload.DAMP", value: time });
-    }.bind(this));
+  async _coldInspectorOpen(url) {
+    await this.testSetup(url);
+    await this.openToolboxAndLog("cold.inspector", "inspector");
+    await this.closeToolbox();
+    await this.testTeardown();
+  },
 
+  _getToolLoadingTests(url, label) {
     let subtests = {
-      webconsoleOpen: Task.async(function* () {
+      inspectorOpen: Task.async(function* () {
         yield this.testSetup(url);
-        yield openToolboxAndLog(label + ".webconsole", "webconsole");
-        yield reloadPageAndLog(label + ".webconsole");
-        yield closeToolboxAndLog(label + ".webconsole");
+        yield this.openToolboxAndLog(label + ".inspector", "inspector");
+        yield this.reloadPageAndLog(label + ".inspector");
+        yield this.closeToolboxAndLog(label + ".inspector");
         yield this.testTeardown();
       }),
 
-      inspectorOpen: Task.async(function* () {
+      webconsoleOpen: Task.async(function* () {
         yield this.testSetup(url);
-        yield openToolboxAndLog(label + ".inspector", "inspector");
-        yield reloadPageAndLog(label + ".inspector");
-        yield closeToolboxAndLog(label + ".inspector");
+        yield this.openToolboxAndLog(label + ".webconsole", "webconsole");
+        yield this.reloadPageAndLog(label + ".webconsole");
+        yield this.closeToolboxAndLog(label + ".webconsole");
         yield this.testTeardown();
       }),
 
       debuggerOpen: Task.async(function* () {
         yield this.testSetup(url);
-        yield openToolboxAndLog(label + ".jsdebugger", "jsdebugger");
-        yield reloadPageAndLog(label + ".jsdebugger");
-        yield closeToolboxAndLog(label + ".jsdebugger");
+        yield this.openToolboxAndLog(label + ".jsdebugger", "jsdebugger");
+        yield this.reloadPageAndLog(label + ".jsdebugger");
+        yield this.closeToolboxAndLog(label + ".jsdebugger");
         yield this.testTeardown();
       }),
 
       styleEditorOpen: Task.async(function* () {
         yield this.testSetup(url);
-        yield openToolboxAndLog(label + ".styleeditor", "styleeditor");
-        yield reloadPageAndLog(label + ".styleeditor");
-        yield closeToolboxAndLog(label + ".styleeditor");
+        yield this.openToolboxAndLog(label + ".styleeditor", "styleeditor");
+        yield this.reloadPageAndLog(label + ".styleeditor");
+        yield this.closeToolboxAndLog(label + ".styleeditor");
         yield this.testTeardown();
       }),
 
       performanceOpen: Task.async(function* () {
         yield this.testSetup(url);
-        yield openToolboxAndLog(label + ".performance", "performance");
-        yield reloadPageAndLog(label + ".performance");
-        yield closeToolboxAndLog(label + ".performance");
+        yield this.openToolboxAndLog(label + ".performance", "performance");
+        yield this.reloadPageAndLog(label + ".performance");
+        yield this.closeToolboxAndLog(label + ".performance");
         yield this.testTeardown();
       }),
 
       netmonitorOpen: Task.async(function* () {
         yield this.testSetup(url);
-        const toolbox = yield openToolboxAndLog(label + ".netmonitor", "netmonitor");
+        const toolbox = yield this.openToolboxAndLog(label + ".netmonitor", "netmonitor");
         const requestsDone = this.waitForNetworkRequests(label + ".netmonitor", toolbox);
-        yield reloadPageAndLog(label + ".netmonitor");
+        yield this.reloadPageAndLog(label + ".netmonitor");
         yield requestsDone;
-        yield closeToolboxAndLog(label + ".netmonitor");
+        yield this.closeToolboxAndLog(label + ".netmonitor");
         yield this.testTeardown();
       }),
 
       saveAndReadHeapSnapshot: Task.async(function* () {
         yield this.testSetup(url);
-        yield openToolboxAndLog(label + ".memory", "memory");
-        yield reloadPageAndLog(label + ".memory");
+        yield this.openToolboxAndLog(label + ".memory", "memory");
+        yield this.reloadPageAndLog(label + ".memory");
         yield this.saveHeapSnapshot(label);
         yield this.readHeapSnapshot(label);
         yield this.takeCensus(label);
-        yield closeToolboxAndLog(label + ".memory");
+        yield this.closeToolboxAndLog(label + ".memory");
         yield this.testTeardown();
       }),
     };
 
     // Construct the sequence array: config.repeat times config.subtests
     let config = this._config;
     let sequenceArray = [];
     for (var i in config.subtests) {
@@ -526,16 +532,26 @@ Damp.prototype = {
     var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
     this._win = wm.getMostRecentWindow("navigator:browser");
     this._dampTab = this._win.gBrowser.selectedTab;
     this._win.gBrowser.selectedBrowser.focus(); // Unfocus the URL bar to avoid caret blink
 
     TalosParentProfiler.resume("DAMP - start");
 
     let tests = [];
+
+    if (config.subtests.indexOf("inspectorOpen") > -1) {
+      // Run cold test only once
+      let topWindow = getMostRecentBrowserWindow();
+      if (!topWindow.coldRunDAMP) {
+        topWindow.coldRunDAMP = true;
+        tests = tests.concat(this._coldInspectorOpen);
+      }
+    }
+
     tests = tests.concat(this._getToolLoadingTests(SIMPLE_URL, "simple"));
     tests = tests.concat(this._getToolLoadingTests(COMPLICATED_URL, "complicated"));
 
     if (config.subtests.indexOf("consoleBulkLogging") > -1) {
       tests = tests.concat(this._consoleBulkLoggingTest);
     }
     if (config.subtests.indexOf("consoleStreamLogging") > -1) {
       tests = tests.concat(this._consoleStreamLoggingTest);