forked from mirrors/gecko-dev
57 lines
1.3 KiB
JavaScript
57 lines
1.3 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
/**
|
|
* Test the eventLoopLag actor.
|
|
*/
|
|
|
|
"use strict";
|
|
|
|
function run_test() {
|
|
let {EventLoopLagFront} = require("devtools/shared/fronts/eventlooplag");
|
|
|
|
DebuggerServer.init();
|
|
DebuggerServer.addBrowserActors();
|
|
|
|
// As seen in EventTracer.cpp
|
|
let threshold = 20;
|
|
let interval = 10;
|
|
|
|
let front;
|
|
let client = new DebuggerClient(DebuggerServer.connectPipe());
|
|
|
|
// Start tracking event loop lags.
|
|
client.connect().then(function () {
|
|
client.listTabs(function (resp) {
|
|
front = new EventLoopLagFront(client, resp);
|
|
front.start().then(success => {
|
|
do_check_true(success);
|
|
front.once("event-loop-lag", gotLagEvent);
|
|
do_execute_soon(lag);
|
|
});
|
|
});
|
|
});
|
|
|
|
// Force a lag
|
|
function lag() {
|
|
let start = new Date();
|
|
let duration = threshold + interval + 1;
|
|
while (true) {
|
|
if (((new Date()) - start) > duration) {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Got a lag event. The test will time out if the actor
|
|
// fails to detect the lag.
|
|
function gotLagEvent(time) {
|
|
do_print("lag: " + time);
|
|
do_check_true(time >= threshold);
|
|
front.stop().then(() => {
|
|
finishClient(client);
|
|
});
|
|
}
|
|
|
|
do_test_pending();
|
|
}
|