diff -r 000000000000 -r 6474c204b198 services/metrics/modules-testing/mocks.jsm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/services/metrics/modules-testing/mocks.jsm Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,154 @@ +/* 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/. */ + +"use strict"; + +this.EXPORTED_SYMBOLS = [ + "DummyMeasurement", + "DummyProvider", + "DummyConstantProvider", + "DummyPullOnlyThrowsOnInitProvider", + "DummyThrowOnInitProvider", + "DummyThrowOnShutdownProvider", +]; + +const {utils: Cu} = Components; + +Cu.import("resource://gre/modules/Promise.jsm"); +Cu.import("resource://gre/modules/Metrics.jsm"); +Cu.import("resource://gre/modules/Task.jsm"); + +this.DummyMeasurement = function DummyMeasurement(name="DummyMeasurement") { + this.name = name; + + Metrics.Measurement.call(this); +} + +DummyMeasurement.prototype = { + __proto__: Metrics.Measurement.prototype, + + version: 1, + + fields: { + "daily-counter": {type: Metrics.Storage.FIELD_DAILY_COUNTER}, + "daily-discrete-numeric": {type: Metrics.Storage.FIELD_DAILY_DISCRETE_NUMERIC}, + "daily-discrete-text": {type: Metrics.Storage.FIELD_DAILY_DISCRETE_TEXT}, + "daily-last-numeric": {type: Metrics.Storage.FIELD_DAILY_LAST_NUMERIC}, + "daily-last-text": {type: Metrics.Storage.FIELD_DAILY_LAST_TEXT}, + "last-numeric": {type: Metrics.Storage.FIELD_LAST_NUMERIC}, + "last-text": {type: Metrics.Storage.FIELD_LAST_TEXT}, + }, +}; + + +this.DummyProvider = function DummyProvider(name="DummyProvider") { + Object.defineProperty(this, "name", { + value: name, + }); + + this.measurementTypes = [DummyMeasurement]; + + Metrics.Provider.call(this); + + this.constantMeasurementName = "DummyMeasurement"; + this.collectConstantCount = 0; + this.throwDuringCollectConstantData = null; + this.throwDuringConstantPopulate = null; + + this.collectDailyCount = 0; + + this.havePushedMeasurements = true; +} + +DummyProvider.prototype = { + __proto__: Metrics.Provider.prototype, + + name: "DummyProvider", + + collectConstantData: function () { + this.collectConstantCount++; + + if (this.throwDuringCollectConstantData) { + throw new Error(this.throwDuringCollectConstantData); + } + + return this.enqueueStorageOperation(function doStorage() { + if (this.throwDuringConstantPopulate) { + throw new Error(this.throwDuringConstantPopulate); + } + + let m = this.getMeasurement("DummyMeasurement", 1); + let now = new Date(); + m.incrementDailyCounter("daily-counter", now); + m.addDailyDiscreteNumeric("daily-discrete-numeric", 1, now); + m.addDailyDiscreteNumeric("daily-discrete-numeric", 2, now); + m.addDailyDiscreteText("daily-discrete-text", "foo", now); + m.addDailyDiscreteText("daily-discrete-text", "bar", now); + m.setDailyLastNumeric("daily-last-numeric", 3, now); + m.setDailyLastText("daily-last-text", "biz", now); + m.setLastNumeric("last-numeric", 4, now); + return m.setLastText("last-text", "bazfoo", now); + }.bind(this)); + }, + + collectDailyData: function () { + this.collectDailyCount++; + + return Promise.resolve(); + }, +}; + + +this.DummyConstantProvider = function () { + DummyProvider.call(this, this.name); +} + +DummyConstantProvider.prototype = { + __proto__: DummyProvider.prototype, + + name: "DummyConstantProvider", + + pullOnly: true, +}; + +this.DummyThrowOnInitProvider = function () { + DummyProvider.call(this, "DummyThrowOnInitProvider"); + + throw new Error("Dummy Error"); +}; + +this.DummyThrowOnInitProvider.prototype = { + __proto__: DummyProvider.prototype, + + name: "DummyThrowOnInitProvider", +}; + +this.DummyPullOnlyThrowsOnInitProvider = function () { + DummyConstantProvider.call(this); + + throw new Error("Dummy Error"); +}; + +this.DummyPullOnlyThrowsOnInitProvider.prototype = { + __proto__: DummyConstantProvider.prototype, + + name: "DummyPullOnlyThrowsOnInitProvider", +}; + +this.DummyThrowOnShutdownProvider = function () { + DummyProvider.call(this, "DummyThrowOnShutdownProvider"); +}; + +this.DummyThrowOnShutdownProvider.prototype = { + __proto__: DummyProvider.prototype, + + name: "DummyThrowOnShutdownProvider", + + pullOnly: true, + + onShutdown: function () { + throw new Error("Dummy shutdown error"); + }, +}; +