gecko/testing/marionette/marionette-perf.js
2012-06-10 19:44:50 -04:00

84 lines
2.3 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
function MarionettePerfData() {
this.perfData = {};
}
MarionettePerfData.prototype = {
/**
* Add performance data.
*
* Datapoints within a testSuite get rolled up into
* one value in Datazilla. You can then drill down to
* individual (testName,data) pairs
*
* If the testSuite and testName exist, the data will
* be added to this dataset.
*
* @param testSuite String
* name of the test suite
* @param testName String
* name of the test
* @param object data
* data value to store
*/
addPerfData: function Marionette__addPerfData(testSuite, testName, data) {
if (this.perfData[testSuite]) {
if (this.perfData[testSuite][testName]) {
this.perfData[testSuite][testName].push(data);
}
else {
this.perfData[testSuite][testName.toString()] = [data];
}
}
else {
this.perfData[testSuite] = {}
this.perfData[testSuite][testName.toString()] = [data];
}
},
/**
* Join another set of performance data this this set.
* Used by the actor to join data gathered from the listener
* @param object data
* The performance data to join
*/
appendPerfData: function Marionette__appendPerfData(data) {
for (var suite in data) {
if (data.hasOwnProperty(suite)) {
if (this.perfData[suite]) {
for (var test in data[suite]) {
if (this.perfData[suite][test]) {
this.perfData[suite][test] = this.perfData[suite][test].concat(data[suite][test]);
}
else {
this.perfData[suite][test] = data[suite][test];
}
}
}
else {
this.perfData[suite] = data[suite];
}
}
}
},
/**
* Retrieve the performance data
*
* @return object
* Returns a list of test names to metric value
*/
getPerfData: function Marionette__getPerfData() {
return this.perfData;
},
/**
* Clears the current performance data
*/
clearPerfData: function Marionette_clearPerfData() {
this.perfData = {};
},
}