60 lines
1.8 KiB
JavaScript
60 lines
1.8 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
// 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);
|
|
}
|