Bug 830922 - Include version inside measurement payload. r=gps

This commit is contained in:
Richard Newman 2013-01-25 00:32:33 -08:00
parent c4754f0695
commit 07b6d16e13
9 changed files with 21 additions and 9 deletions

View File

@ -627,10 +627,12 @@ HealthReporter.prototype = Object.freeze({
};
for (let [measurementKey, measurement] of provider.measurements) {
let name = providerName + "." + measurement.name + "." + measurement.version;
let name = providerName + "." + measurement.name;
let serializer;
try {
// The measurement is responsible for returning a serializer which
// is aware of the measurement version.
serializer = measurement.serializer(measurement.SERIALIZE_JSON);
} catch (ex) {
this._log.warn("Error obtaining serializer for measurement: " + name +

View File

@ -394,7 +394,7 @@ CurrentSessionMeasurement.prototype = Object.freeze({
},
_serializeJSONSingular: function (data) {
let result = {};
let result = {"_v": this.version};
for (let [field, value] of data) {
result[field] = value[1];
@ -535,7 +535,9 @@ ActiveAddonsMeasurement.prototype = Object.freeze({
}
// Exceptions are caught in the caller.
return JSON.parse(data.get("addons")[1]);
let result = JSON.parse(data.get("addons")[1]);
result._v = this.version;
return result;
},
});

View File

@ -204,8 +204,10 @@ add_task(function test_json_payload_dummy_provider() {
print(payload);
let o = JSON.parse(payload);
let name = "DummyProvider.DummyMeasurement";
do_check_eq(Object.keys(o.data.last).length, 1);
do_check_true("DummyProvider.DummyMeasurement.1" in o.data.last);
do_check_true(name in o.data.last);
do_check_eq(o.data.last[name]._v, 1);
reporter._shutdown();
});

View File

@ -111,9 +111,10 @@ add_task(function test_collect() {
let serializer = active.serializer(active.SERIALIZE_JSON);
let serialized = serializer.singular(data.singular);
do_check_eq(typeof(serialized), "object");
do_check_eq(Object.keys(serialized).length, 2);
do_check_eq(Object.keys(serialized).length, 3); // Our two keys, plus _v.
do_check_true("addon0" in serialized);
do_check_true("addon1" in serialized);
do_check_eq(serialized._v, 1);
let counts = provider.getMeasurement("counts", 1);
data = yield counts.getValues();

View File

@ -34,6 +34,7 @@ add_task(function test_collect_smoketest() {
let serializer = m.serializer(m.SERIALIZE_JSON);
let d = serializer.singular(data.singular);
do_check_eq(d._v, 1);
do_check_eq(d.vendor, "Mozilla");
do_check_eq(d.name, "xpcshell");
do_check_eq(d.id, "xpcshell@tests.mozilla.org");

View File

@ -170,6 +170,7 @@ add_task(function test_serialization() {
let serializer = current.serializer(current.SERIALIZE_JSON);
let fields = serializer.singular(data.singular);
do_check_eq(fields._v, 2);
do_check_eq(fields.activeTicks, 0);
do_check_eq(fields.startDay, Metrics.dateToDays(recorder.startDate));
do_check_eq(fields.main, 500);

View File

@ -32,6 +32,7 @@ add_task(function test_collect_smoketest() {
let serializer = m.serializer(m.SERIALIZE_JSON);
let d = serializer.singular(data.singular);
do_check_eq(d._v, 1);
do_check_true(d.cpuCount > 0);
do_check_neq(d.name, null);

View File

@ -246,7 +246,7 @@ Measurement.prototype = Object.freeze({
},
_serializeJSONSingular: function (data) {
let result = {};
let result = {"_v": this.version};
for (let [field, data] of data) {
// There could be legacy fields in storage we no longer care about.
@ -278,7 +278,7 @@ Measurement.prototype = Object.freeze({
},
_serializeJSONDay: function (data) {
let result = {};
let result = {"_v": this.version};
for (let [field, data] of data) {
if (!this._fieldsByName.has(field)) {

View File

@ -256,15 +256,17 @@ add_task(function test_serialize_json_default() {
let serializer = m.serializer(m.SERIALIZE_JSON);
let formatted = serializer.singular(data.singular);
do_check_eq(Object.keys(formatted).length, 2);
do_check_eq(Object.keys(formatted).length, 3); // Our keys + _v.
do_check_true("last-numeric" in formatted);
do_check_true("last-text" in formatted);
do_check_eq(formatted["last-numeric"], 6);
do_check_eq(formatted["last-text"], "hello");
do_check_eq(formatted["_v"], 1);
formatted = serializer.daily(data.days.getDay(now));
do_check_eq(Object.keys(formatted).length, 5);
do_check_eq(Object.keys(formatted).length, 6); // Our keys + _v.
do_check_eq(formatted["daily-counter"], 2);
do_check_eq(formatted["_v"], 1);
do_check_true(Array.isArray(formatted["daily-discrete-numeric"]));
do_check_eq(formatted["daily-discrete-numeric"].length, 2);