Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
// Network throttling integration test.
"use strict";
requestLongerTimeout(2);
add_task(async function () {
await throttleTest({ throttle: true, addLatency: true });
await throttleTest({ throttle: true, addLatency: false });
await throttleTest({ throttle: false, addLatency: false });
});
async function throttleTest(options) {
const { throttle, addLatency } = options;
const { monitor } = await initNetMonitor(SIMPLE_URL, { requestCount: 1 });
const { store, windowRequire, connector } = monitor.panelWin;
const { ACTIVITY_TYPE } = windowRequire(
"devtools/client/netmonitor/src/constants"
);
const { updateNetworkThrottling, triggerActivity } = connector;
const { getSortedRequests } = windowRequire(
"devtools/client/netmonitor/src/selectors/index"
);
info(`Starting test... (throttle = ${throttle}, addLatency = ${addLatency})`);
// When throttling, must be smaller than the length of the content
// of SIMPLE_URL in bytes.
const size = throttle ? 200 : 0;
const latency = addLatency ? 100 : 0;
const throttleProfile = {
latency,
download: size,
upload: 10000,
};
info("sending throttle request");
await updateNetworkThrottling(true, throttleProfile);
const wait = waitForNetworkEvents(monitor, 1);
await triggerActivity(ACTIVITY_TYPE.RELOAD.WITH_CACHE_DISABLED);
await wait;
await waitForRequestData(store, ["eventTimings"]);
const requestItem = getSortedRequests(store.getState())[0];
const reportedOneSecond = requestItem.eventTimings.timings.receive > 1000;
if (throttle) {
ok(reportedOneSecond, "download reported as taking more than one second");
} else {
ok(!reportedOneSecond, "download reported as taking less than one second");
}
await teardown(monitor);
}