mirror of
https://github.com/roytam1/UXP.git
synced 2026-07-20 05:59:11 +00:00
108 lines
4.6 KiB
JavaScript
108 lines
4.6 KiB
JavaScript
|
|
Cu.import("resource://gre/modules/TelemetryController.jsm", this);
|
|
Cu.import("resource://gre/modules/TelemetrySession.jsm", this);
|
|
Cu.import("resource://gre/modules/PromiseUtils.jsm", this);
|
|
Cu.import("resource://testing-common/ContentTaskUtils.jsm", this);
|
|
|
|
const MESSAGE_TELEMETRY_PAYLOAD = "Telemetry:Payload";
|
|
const MESSAGE_TELEMETRY_GET_CHILD_PAYLOAD = "Telemetry:GetChildPayload";
|
|
const MESSAGE_CHILD_TEST_DONE = "ChildTest:Done";
|
|
|
|
const PLATFORM_VERSION = "1.9.2";
|
|
const APP_VERSION = "1";
|
|
const APP_ID = "xpcshell@tests.mozilla.org";
|
|
const APP_NAME = "XPCShell";
|
|
|
|
function run_child_test() {
|
|
// Setup histograms with some fixed values.
|
|
let flagHist = Telemetry.getHistogramById("TELEMETRY_TEST_FLAG");
|
|
flagHist.add(1);
|
|
let countHist = Telemetry.getHistogramById("TELEMETRY_TEST_COUNT");
|
|
Telemetry.setHistogramRecordingEnabled("TELEMETRY_TEST_COUNT", false);
|
|
countHist.add();
|
|
Telemetry.setHistogramRecordingEnabled("TELEMETRY_TEST_COUNT", true);
|
|
countHist.add();
|
|
countHist.add();
|
|
let categHist = Telemetry.getHistogramById("TELEMETRY_TEST_CATEGORICAL");
|
|
categHist.add("Label2");
|
|
categHist.add("Label3");
|
|
|
|
let flagKeyed = Telemetry.getKeyedHistogramById("TELEMETRY_TEST_KEYED_FLAG");
|
|
flagKeyed.add("a", 1);
|
|
flagKeyed.add("b", 1);
|
|
let countKeyed = Telemetry.getKeyedHistogramById("TELEMETRY_TEST_KEYED_COUNT");
|
|
Telemetry.setHistogramRecordingEnabled("TELEMETRY_TEST_KEYED_COUNT", false);
|
|
countKeyed.add("a");
|
|
countKeyed.add("b");
|
|
Telemetry.setHistogramRecordingEnabled("TELEMETRY_TEST_KEYED_COUNT", true);
|
|
countKeyed.add("a");
|
|
countKeyed.add("b");
|
|
countKeyed.add("b");
|
|
}
|
|
|
|
function check_histogram_values(payload) {
|
|
const hs = payload.histograms;
|
|
Assert.ok("TELEMETRY_TEST_COUNT" in hs, "Should have count test histogram.");
|
|
Assert.ok("TELEMETRY_TEST_FLAG" in hs, "Should have flag test histogram.");
|
|
Assert.ok("TELEMETRY_TEST_CATEGORICAL" in hs, "Should have categorical test histogram.");
|
|
Assert.equal(hs["TELEMETRY_TEST_COUNT"].sum, 2,
|
|
"Count test histogram should have the right value.");
|
|
Assert.equal(hs["TELEMETRY_TEST_FLAG"].sum, 1,
|
|
"Flag test histogram should have the right value.");
|
|
Assert.equal(hs["TELEMETRY_TEST_CATEGORICAL"].sum, 3,
|
|
"Categorical test histogram should have the right sum.");
|
|
|
|
const kh = payload.keyedHistograms;
|
|
Assert.ok("TELEMETRY_TEST_KEYED_COUNT" in kh, "Should have keyed count test histogram.");
|
|
Assert.ok("TELEMETRY_TEST_KEYED_FLAG" in kh, "Should have keyed flag test histogram.");
|
|
Assert.equal(kh["TELEMETRY_TEST_KEYED_COUNT"]["a"].sum, 1,
|
|
"Keyed count test histogram should have the right value.");
|
|
Assert.equal(kh["TELEMETRY_TEST_KEYED_COUNT"]["b"].sum, 2,
|
|
"Keyed count test histogram should have the right value.");
|
|
Assert.equal(kh["TELEMETRY_TEST_KEYED_FLAG"]["a"].sum, 1,
|
|
"Keyed flag test histogram should have the right value.");
|
|
Assert.equal(kh["TELEMETRY_TEST_KEYED_FLAG"]["b"].sum, 1,
|
|
"Keyed flag test histogram should have the right value.");
|
|
}
|
|
|
|
add_task(function*() {
|
|
if (!runningInParent) {
|
|
TelemetryController.testSetupContent();
|
|
run_child_test();
|
|
dump("... done with child test\n");
|
|
do_send_remote_message(MESSAGE_CHILD_TEST_DONE);
|
|
return;
|
|
}
|
|
|
|
// Setup.
|
|
do_get_profile(true);
|
|
loadAddonManager(APP_ID, APP_NAME, APP_VERSION, PLATFORM_VERSION);
|
|
Services.prefs.setBoolPref(PREF_TELEMETRY_ENABLED, true);
|
|
yield TelemetryController.testSetup();
|
|
if (runningInParent) {
|
|
// Make sure we don't generate unexpected pings due to pref changes.
|
|
yield setEmptyPrefWatchlist();
|
|
}
|
|
|
|
// Run test in child, don't wait for it to finish.
|
|
run_test_in_child("test_ChildHistograms.js");
|
|
yield do_await_remote_message(MESSAGE_CHILD_TEST_DONE);
|
|
|
|
yield ContentTaskUtils.waitForCondition(() => {
|
|
let payload = TelemetrySession.getPayload("test-ping");
|
|
return payload &&
|
|
"processes" in payload &&
|
|
"content" in payload.processes &&
|
|
"histograms" in payload.processes.content &&
|
|
"TELEMETRY_TEST_COUNT" in payload.processes.content.histograms;
|
|
});
|
|
const payload = TelemetrySession.getPayload("test-ping");
|
|
Assert.ok("processes" in payload, "Should have processes section");
|
|
Assert.ok("content" in payload.processes, "Should have child process section");
|
|
Assert.ok("histograms" in payload.processes.content, "Child process section should have histograms.");
|
|
Assert.ok("keyedHistograms" in payload.processes.content, "Child process section should have keyed histograms.");
|
|
check_histogram_values(payload.processes.content);
|
|
|
|
do_test_finished();
|
|
});
|