summaryrefslogtreecommitdiffstats
path: root/devtools/server/tests/unit/test_eventlooplag_actor.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/server/tests/unit/test_eventlooplag_actor.js')
-rw-r--r--devtools/server/tests/unit/test_eventlooplag_actor.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/devtools/server/tests/unit/test_eventlooplag_actor.js b/devtools/server/tests/unit/test_eventlooplag_actor.js
new file mode 100644
index 000000000..d2acdd8f8
--- /dev/null
+++ b/devtools/server/tests/unit/test_eventlooplag_actor.js
@@ -0,0 +1,59 @@
+/* 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();
+}