| OLD | NEW |
| 1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 print('Checks that async stacks works good with different limits'); | 5 print('Checks that async stacks works good with different limits'); |
| 6 | 6 |
| 7 InspectorTest.addScript(` | 7 InspectorTest.addScript(` |
| 8 var resolveTest; | 8 var resolveTest; |
| 9 | 9 |
| 10 function foo1() { | 10 function foo1() { |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 resolve2(); | 35 resolve2(); |
| 36 return Promise.all([p3, p4]); | 36 return Promise.all([p3, p4]); |
| 37 } | 37 } |
| 38 | 38 |
| 39 function twoSetTimeout() { | 39 function twoSetTimeout() { |
| 40 setTimeout(foo1, 0); | 40 setTimeout(foo1, 0); |
| 41 setTimeout(foo2, 0); | 41 setTimeout(foo2, 0); |
| 42 return new Promise(resolve => resolveTest = resolve); | 42 return new Promise(resolve => resolveTest = resolve); |
| 43 } | 43 } |
| 44 | 44 |
| 45 function threeSetTimeout() { | |
| 46 setTimeout(foo1, 0); | |
| 47 setTimeout(foo2, 0); | |
| 48 return new Promise(resolve => resolveTest = resolve); | |
| 49 } | |
| 50 | |
| 51 function twentySetTimeout() { | 45 function twentySetTimeout() { |
| 52 var resolve1; | 46 var resolve1; |
| 53 var p1 = new Promise(resolve => resolve1 = resolve); | 47 var p1 = new Promise(resolve => resolve1 = resolve); |
| 54 for (var i = 1; i <= 19; ++i) | 48 for (var i = 1; i <= 19; ++i) |
| 55 setTimeout('(function foo' + i + '(){debugger;})()',0); | 49 setTimeout('(function foo' + i + '(){debugger;})()',0); |
| 56 setTimeout(resolve1, 0); | 50 setTimeout(resolve1, 0); |
| 57 return p1; | 51 return p1; |
| 58 } | 52 } |
| 59 | 53 |
| 60 //# sourceURL=test.js`, 7, 26); | 54 //# sourceURL=test.js`, 7, 26); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 78 function testZeroLimit(next) { | 72 function testZeroLimit(next) { |
| 79 Protocol.Runtime.evaluate({ | 73 Protocol.Runtime.evaluate({ |
| 80 expression: 'setMaxAsyncTaskStacks(0)//# sourceURL=expr.js'}) | 74 expression: 'setMaxAsyncTaskStacks(0)//# sourceURL=expr.js'}) |
| 81 .then(() => Protocol.Runtime.evaluate({ | 75 .then(() => Protocol.Runtime.evaluate({ |
| 82 expression: 'promise()//# sourceURL=expr.js', awaitPromise: true | 76 expression: 'promise()//# sourceURL=expr.js', awaitPromise: true |
| 83 })) | 77 })) |
| 84 .then(() => cancelAllAsyncTasks()) | 78 .then(() => cancelAllAsyncTasks()) |
| 85 .then(next); | 79 .then(next); |
| 86 }, | 80 }, |
| 87 | 81 |
| 88 function testOneLimit(next) { | 82 function testTwoLimit(next) { |
| 89 Protocol.Runtime.evaluate({ | 83 // we need one stack for parent task and one for next task. |
| 90 expression: 'setMaxAsyncTaskStacks(1)//# sourceURL=expr.js'}) | 84 Protocol.Runtime |
| 91 .then(() => Protocol.Runtime.evaluate({ | 85 .evaluate({expression: 'setMaxAsyncTaskStacks(2)//# sourceURL=expr.js'}) |
| 92 expression: 'promise()//# sourceURL=expr.js', awaitPromise: true | 86 .then(() => Protocol.Runtime.evaluate({ |
| 93 })) | 87 expression: 'promise()//# sourceURL=expr.js', |
| 94 .then(() => cancelAllAsyncTasks()) | 88 awaitPromise: true |
| 95 .then(next); | 89 })) |
| 90 .then(() => cancelAllAsyncTasks()) |
| 91 .then(next); |
| 96 }, | 92 }, |
| 97 | 93 |
| 98 function testOneLimitTwoPromises(next) { | 94 function testOneLimitTwoPromises(next) { |
| 99 // Should be no async stacks because when first microtask is finished | 95 // Should be no async stacks because when first microtask is finished |
| 100 // it will resolve and schedule p3 - will remove async stack for scheduled | 96 // it will resolve and schedule p3 - will remove async stack for scheduled |
| 101 // p2. | 97 // p2. |
| 102 Protocol.Runtime.evaluate({ | 98 Protocol.Runtime.evaluate({ |
| 103 expression: 'setMaxAsyncTaskStacks(1)//# sourceURL=expr.js'}) | 99 expression: 'setMaxAsyncTaskStacks(1)//# sourceURL=expr.js'}) |
| 104 .then(() => Protocol.Runtime.evaluate({ | 100 .then(() => Protocol.Runtime.evaluate({ |
| 105 expression: 'twoPromises()//# sourceURL=expr.js', awaitPromise: true | 101 expression: 'twoPromises()//# sourceURL=expr.js', awaitPromise: true |
| 106 })) | 102 })) |
| 107 .then(() => cancelAllAsyncTasks()) | 103 .then(() => cancelAllAsyncTasks()) |
| 108 .then(next); | 104 .then(next); |
| 109 }, | 105 }, |
| 110 | 106 |
| 111 function testTwoLimitTwoPromises(next) { | 107 function testFourLimitTwoPromises(next) { |
| 108 Protocol.Runtime |
| 109 .evaluate({expression: 'setMaxAsyncTaskStacks(4)//# sourceURL=expr.js'}) |
| 110 .then(() => Protocol.Runtime.evaluate({ |
| 111 expression: 'twoPromises()//# sourceURL=expr.js', |
| 112 awaitPromise: true |
| 113 })) |
| 114 .then(() => cancelAllAsyncTasks()) |
| 115 .then(next); |
| 116 }, |
| 117 |
| 118 function testSixLimitTwoPromises(next) { |
| 119 Protocol.Runtime |
| 120 .evaluate({expression: 'setMaxAsyncTaskStacks(6)//# sourceURL=expr.js'}) |
| 121 .then(() => Protocol.Runtime.evaluate({ |
| 122 expression: 'twoPromises()//# sourceURL=expr.js', |
| 123 awaitPromise: true |
| 124 })) |
| 125 .then(() => cancelAllAsyncTasks()) |
| 126 .then(next); |
| 127 }, |
| 128 |
| 129 function testTwoLimitTwoSetTimeouts(next) { |
| 112 Protocol.Runtime.evaluate({ | 130 Protocol.Runtime.evaluate({ |
| 113 expression: 'setMaxAsyncTaskStacks(2)//# sourceURL=expr.js'}) | 131 expression: 'setMaxAsyncTaskStacks(2)//# sourceURL=expr.js'}) |
| 114 .then(() => Protocol.Runtime.evaluate({ | 132 .then(() => Protocol.Runtime.evaluate({ |
| 115 expression: 'twoPromises()//# sourceURL=expr.js', awaitPromise: true | |
| 116 })) | |
| 117 .then(() => cancelAllAsyncTasks()) | |
| 118 .then(next); | |
| 119 }, | |
| 120 | |
| 121 function testOneLimitTwoSetTimeouts(next) { | |
| 122 Protocol.Runtime.evaluate({ | |
| 123 expression: 'setMaxAsyncTaskStacks(1)//# sourceURL=expr.js'}) | |
| 124 .then(() => Protocol.Runtime.evaluate({ | |
| 125 expression: 'twoSetTimeout()//# sourceURL=expr.js', awaitPromise: true | 133 expression: 'twoSetTimeout()//# sourceURL=expr.js', awaitPromise: true |
| 126 })) | 134 })) |
| 127 .then(() => cancelAllAsyncTasks()) | 135 .then(() => cancelAllAsyncTasks()) |
| 128 .then(next); | 136 .then(next); |
| 129 }, | 137 }, |
| 130 | 138 |
| 131 function testTwoLimitTwoSetTimeouts(next) { | 139 function testThreeLimitTwoSetTimeouts(next) { |
| 132 Protocol.Runtime.evaluate({ | 140 Protocol.Runtime.evaluate({ |
| 133 expression: 'setMaxAsyncTaskStacks(2)//# sourceURL=expr.js'}) | 141 expression: 'setMaxAsyncTaskStacks(3)//# sourceURL=expr.js'}) |
| 134 .then(() => Protocol.Runtime.evaluate({ | 142 .then(() => Protocol.Runtime.evaluate({ |
| 135 expression: 'twoSetTimeout()//# sourceURL=expr.js', awaitPromise: true | 143 expression: 'twoSetTimeout()//# sourceURL=expr.js', awaitPromise: true |
| 136 })) | 144 })) |
| 137 .then(() => cancelAllAsyncTasks()) | 145 .then(() => cancelAllAsyncTasks()) |
| 138 .then(next); | 146 .then(next); |
| 139 }, | 147 }, |
| 140 | 148 |
| 141 function testTenLimitTwentySetTimeouts(next) { | 149 function testTenLimitTwentySetTimeouts(next) { |
| 142 Protocol.Runtime.evaluate({ | 150 Protocol.Runtime.evaluate({ |
| 143 expression: 'setMaxAsyncTaskStacks(10)//# sourceURL=expr.js'}) | 151 expression: 'setMaxAsyncTaskStacks(10)//# sourceURL=expr.js'}) |
| 144 .then(() => Protocol.Runtime.evaluate({ | 152 .then(() => Protocol.Runtime.evaluate({ |
| 145 expression: 'twentySetTimeout()//# sourceURL=expr.js', | 153 expression: 'twentySetTimeout()//# sourceURL=expr.js', |
| 146 awaitPromise: true | 154 awaitPromise: true |
| 147 })) | 155 })) |
| 148 .then(() => cancelAllAsyncTasks()) | 156 .then(() => cancelAllAsyncTasks()) |
| 149 .then(next); | 157 .then(next); |
| 150 } | 158 } |
| 151 ]); | 159 ]); |
| 152 | 160 |
| 153 function cancelAllAsyncTasks() { | 161 function cancelAllAsyncTasks() { |
| 154 return Protocol.Debugger.setAsyncCallStackDepth({ maxDepth: 0 }) | 162 return Protocol.Debugger.setAsyncCallStackDepth({ maxDepth: 0 }) |
| 155 .then(() => Protocol.Debugger.setAsyncCallStackDepth({ maxDepth: 128 })); | 163 .then(() => Protocol.Debugger.setAsyncCallStackDepth({ maxDepth: 128 })); |
| 156 } | 164 } |
| OLD | NEW |