Bug 1394804 - Restart firefox between each DAMP runs and record a "cold-load" run for the inspector. r=bgrins,jmaher
MozReview-Commit-ID: 8Ss2W9DuPTp
--- 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);