1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/toolkit/devtools/server/tests/unit/test_eventlooplag_actor.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,59 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + http://creativecommons.org/publicdomain/zero/1.0/ */ 1.6 + 1.7 +/** 1.8 + * Test the eventLoopLag actor. 1.9 + */ 1.10 + 1.11 +"use strict"; 1.12 + 1.13 +function run_test() 1.14 +{ 1.15 + let {EventLoopLagFront} = devtools.require("devtools/server/actors/eventlooplag"); 1.16 + 1.17 + DebuggerServer.init(function () { return true; }); 1.18 + DebuggerServer.addBrowserActors(); 1.19 + 1.20 + // As seen in EventTracer.cpp 1.21 + let threshold = 20; 1.22 + let interval = 10; 1.23 + 1.24 + 1.25 + let front; 1.26 + let client = new DebuggerClient(DebuggerServer.connectPipe()); 1.27 + 1.28 + // Start tracking event loop lags. 1.29 + client.connect(function () { 1.30 + client.listTabs(function(resp) { 1.31 + front = new EventLoopLagFront(client, resp); 1.32 + front.start().then(success => { 1.33 + do_check_true(success); 1.34 + front.once("event-loop-lag", gotLagEvent); 1.35 + do_execute_soon(lag); 1.36 + }); 1.37 + }); 1.38 + }); 1.39 + 1.40 + // Force a lag 1.41 + function lag() { 1.42 + let start = new Date(); 1.43 + let duration = threshold + interval + 1; 1.44 + while (true) { 1.45 + if (((new Date()) - start) > duration) { 1.46 + break; 1.47 + } 1.48 + } 1.49 + } 1.50 + 1.51 + // Got a lag event. The test will time out if the actor 1.52 + // fails to detect the lag. 1.53 + function gotLagEvent(time) { 1.54 + do_print("lag: " + time); 1.55 + do_check_true(time >= threshold); 1.56 + front.stop().then(() => { 1.57 + finishClient(client); 1.58 + }); 1.59 + } 1.60 + 1.61 + do_test_pending(); 1.62 +}