Index: test/inspector/debugger/set-async-call-stack-depth.js |
diff --git a/test/inspector/debugger/set-async-call-stack-depth.js b/test/inspector/debugger/set-async-call-stack-depth.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..444c10591a32a4ed1f2c7e0f70c3f2fd3cdaf5f2 |
--- /dev/null |
+++ b/test/inspector/debugger/set-async-call-stack-depth.js |
@@ -0,0 +1,77 @@ |
+// Copyright 2017 the V8 project authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+InspectorTest.log('Checks that we report not more then maxDepth call chains.'); |
+ |
+InspectorTest.addScript(` |
+function promisesChain(num) { |
+ var p = Promise.resolve(); |
+ for (var i = 0; i < num - 1; ++i) { |
+ p = p.then(() => 42); |
+ } |
+ return p; |
+} |
+`); |
+ |
+Protocol.Debugger.enable(); |
+InspectorTest.runAsyncTestSuite([ |
+ async function testPaused() { |
+ let callback = '() => { debugger; }'; |
+ startTest({ generated: 8, limit: 16, callback}); |
+ dumpCaptured((await Protocol.Debugger.oncePaused()).params.asyncStackTrace); |
+ await Protocol.Debugger.resume(); |
+ |
+ startTest({ generated: 8, limit: 8, callback}); |
+ dumpCaptured((await Protocol.Debugger.oncePaused()).params.asyncStackTrace); |
+ await Protocol.Debugger.resume(); |
+ |
+ startTest({ generated: 8, limit: 7, callback}); |
+ dumpCaptured((await Protocol.Debugger.oncePaused()).params.asyncStackTrace); |
+ await Protocol.Debugger.resume(); |
+ |
+ startTest({ generated: 8, limit: 0, callback}); |
+ dumpCaptured((await Protocol.Debugger.oncePaused()).params.asyncStackTrace); |
+ await Protocol.Debugger.resume(); |
+ }, |
+ |
+ async function testConsoleTrace() { |
+ await Protocol.Runtime.enable(); |
+ let callback = '() => { console.trace(42); }'; |
+ startTest({ generated: 8, limit: 16, callback}); |
+ let msg = await Protocol.Runtime.onceConsoleAPICalled(); |
+ dumpCaptured(msg.params.stackTrace.parent); |
+ |
+ startTest({ generated: 8, limit: 8, callback}); |
+ msg = await Protocol.Runtime.onceConsoleAPICalled(); |
+ dumpCaptured(msg.params.stackTrace.parent); |
+ |
+ startTest({ generated: 8, limit: 7, callback}); |
+ msg = await Protocol.Runtime.onceConsoleAPICalled(); |
+ dumpCaptured(msg.params.stackTrace.parent); |
+ |
+ startTest({ generated: 8, limit: 0, callback}); |
+ msg = await Protocol.Runtime.onceConsoleAPICalled(); |
+ dumpCaptured(msg.params.stackTrace.parent); |
+ |
+ await Protocol.Runtime.disable(); |
+ } |
+]); |
+ |
+function startTest(params) { |
+ InspectorTest.log('Actual call chain length: ' + params.generated); |
+ InspectorTest.log('setAsyncCallStackDepth(maxDepth): ' + params.limit); |
+ |
+ Protocol.Debugger.setAsyncCallStackDepth({maxDepth: params.limit}); |
+ Protocol.Runtime.evaluate({expression: |
+ `promisesChain(${params.generated}).then(${params.callback})`}); |
+} |
+ |
+function dumpCaptured(stack) { |
+ let count = 0; |
+ while (stack) { |
+ ++count; |
+ stack = stack.parent; |
+ } |
+ InspectorTest.log('reported: ' + count + '\n'); |
+} |