Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* 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";
const { HttpServer } = ChromeUtils.importESModule(
);
const lazy = {};
ChromeUtils.defineESModuleGetters(lazy, {
DAPTelemetrySender: "resource://gre/modules/DAPTelemetrySender.sys.mjs",
});
const BinaryInputStream = Components.Constructor(
"@mozilla.org/binaryinputstream;1",
"nsIBinaryInputStream",
"setInputStream"
);
const PREF_LEADER = "toolkit.telemetry.dap.leader.url";
const PREF_HELPER = "toolkit.telemetry.dap.helper.url";
const PREF_DATAUPLOAD = "datareporting.healthreport.uploadEnabled";
let server;
let server_addr;
let server_requests = [];
const task = {
id: "QjMD4n8l_MHBoLrbCfLTFi8hC264fC59SKHPviPF0q8",
vdaf: "sum",
bits: 8,
time_precision: 300,
};
const task_report_size = 886;
function uploadHandler(request, response) {
Assert.equal(
request.getHeader("Content-Type"),
"application/dap-report",
"Wrong Content-Type header."
);
let body = new BinaryInputStream(request.bodyInputStream);
server_requests.push(body.available());
response.setStatusLine(request.httpVersion, 200);
}
add_setup(async function () {
do_get_profile();
server = new HttpServer();
server.registerPrefixHandler("/leader_endpoint/tasks/", uploadHandler);
server.start(-1);
const i = server.identity;
server_addr = i.primaryScheme + "://" + i.primaryHost + ":" + i.primaryPort;
Services.prefs.setStringPref(PREF_LEADER, server_addr + "/leader_endpoint");
Services.prefs.setStringPref(PREF_HELPER, server_addr + "/helper_endpoint");
registerCleanupFunction(() => {
Services.prefs.clearUserPref(PREF_LEADER);
Services.prefs.clearUserPref(PREF_HELPER);
return new Promise(resolve => {
server.stop(resolve);
});
});
});
add_task(async function testTelemetryToggle() {
server_requests = [];
await lazy.DAPTelemetrySender.sendDAPMeasurement(task, 3, { timeout: 5000 });
Assert.deepEqual(
server_requests,
[task_report_size],
"Telemetry enabled works."
);
server_requests = [];
Services.prefs.setBoolPref(PREF_DATAUPLOAD, false);
await lazy.DAPTelemetrySender.sendDAPMeasurement(task, 3, { timeout: 5000 });
Assert.deepEqual(server_requests, [], "Telemetry disabled blocks sending.");
server_requests = [];
Services.prefs.clearUserPref(PREF_DATAUPLOAD);
await lazy.DAPTelemetrySender.sendDAPMeasurement(task, 3, { timeout: 5000 });
Assert.deepEqual(
server_requests,
[task_report_size],
"Telemetry re-enabled works."
);
});