fune/toolkit/components/extensions/test/xpcshell/test_ext_background_telemetry.js
Luca Greco 88b7be38f8 Bug 1483002 - Added WEBEXT probes keyed by addon id. r=janerik,mixedpuppy
This patch contains a set of changes needed to add WEBEXT telemetry probes keyed by addon id.

The telemetry probes keyed by addon id has been added as separate telemetry histograms
named after the related generic WEBEXT probe with the additional "_BY_ADDONID" suffix.

A set of small helper methods have been defined in a new ExtensionTelemetry object, exported
by the ExtensionUtils.jsm.

Differential Revision: https://phabricator.services.mozilla.com/D4437

--HG--
extra : moz-landing-system : lando
2018-09-05 20:16:35 +00:00

79 lines
2.4 KiB
JavaScript

/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set sts=2 sw=2 et tw=80: */
"use strict";
const HISTOGRAM = "WEBEXT_BACKGROUND_PAGE_LOAD_MS";
const HISTOGRAM_KEYED = "WEBEXT_BACKGROUND_PAGE_LOAD_MS_BY_ADDONID";
add_task(async function test_telemetry() {
let extension1 = ExtensionTestUtils.loadExtension({
background() {
browser.test.sendMessage("loaded");
},
});
let extension2 = ExtensionTestUtils.loadExtension({
background() {
browser.test.sendMessage("loaded");
},
});
clearHistograms();
assertHistogramEmpty(HISTOGRAM);
assertKeyedHistogramEmpty(HISTOGRAM_KEYED);
await extension1.startup();
await extension1.awaitMessage("loaded");
const processSnapshot = (snapshot) => {
return snapshot.sum > 0;
};
const processKeyedSnapshot = (snapshot) => {
let res = {};
for (let key of Object.keys(snapshot)) {
res[key] = snapshot[key].sum > 0;
}
return res;
};
assertHistogramSnapshot(HISTOGRAM, {processSnapshot, expectedValue: true},
`Data recorded for first extension for histogram: ${HISTOGRAM}.`);
assertHistogramSnapshot(HISTOGRAM_KEYED, {
keyed: true,
processSnapshot: processKeyedSnapshot,
expectedValue: {
[extension1.extension.id]: true,
},
}, `Data recorded for first extension for histogram ${HISTOGRAM_KEYED}`);
let histogram = Services.telemetry.getHistogramById(HISTOGRAM);
let histogramKeyed = Services.telemetry.getKeyedHistogramById(HISTOGRAM_KEYED);
let histogramSum = histogram.snapshot().sum;
let histogramSumExt1 = histogramKeyed.snapshot()[extension1.extension.id].sum;
await extension2.startup();
await extension2.awaitMessage("loaded");
assertHistogramSnapshot(HISTOGRAM, {
processSnapshot: (snapshot) => snapshot.sum > histogramSum,
expectedValue: true,
}, `Data recorded for second extension for histogram: ${HISTOGRAM}.`);
assertHistogramSnapshot(HISTOGRAM_KEYED, {
keyed: true,
processSnapshot: processKeyedSnapshot,
expectedValue: {
[extension1.extension.id]: true,
[extension2.extension.id]: true,
},
}, `Data recorded for second extension for histogram ${HISTOGRAM_KEYED}`);
equal(histogramKeyed.snapshot()[extension1.extension.id].sum, histogramSumExt1,
`Data recorder for first extension is unchanged on the keyed histogram ${HISTOGRAM_KEYED}`);
await extension1.unload();
await extension2.unload();
});