diff options
author | Eugene Ostroukhov <eostroukhov@chromium.org> | 2018-04-24 11:16:55 -0700 |
---|---|---|
committer | Eugene Ostroukhov <eostroukhov@google.com> | 2018-04-26 12:48:48 -0700 |
commit | 13001035340d6d3fb173fef4a1db42ba70f61720 (patch) | |
tree | 7333699fc80f90725a00b229dccc5bf718cfea78 /test/parallel/test-inspector-multisession-js.js | |
parent | 5c57cea8049bad5939807e6b849ee303ec8e1526 (diff) | |
download | android-node-v8-13001035340d6d3fb173fef4a1db42ba70f61720.tar.gz android-node-v8-13001035340d6d3fb173fef4a1db42ba70f61720.tar.bz2 android-node-v8-13001035340d6d3fb173fef4a1db42ba70f61720.zip |
inspector: allow concurrent inspector sessions
This change enables concurrent inspector sessions, through WebSocket
interface as well as JS interface, in any combination.
PR-URL: https://github.com/nodejs/node/pull/20137
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Diffstat (limited to 'test/parallel/test-inspector-multisession-js.js')
-rw-r--r-- | test/parallel/test-inspector-multisession-js.js | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/test/parallel/test-inspector-multisession-js.js b/test/parallel/test-inspector-multisession-js.js new file mode 100644 index 0000000000..58533f4cd6 --- /dev/null +++ b/test/parallel/test-inspector-multisession-js.js @@ -0,0 +1,59 @@ +'use strict'; +const common = require('../common'); + +common.skipIfInspectorDisabled(); + +const assert = require('assert'); +const { Session } = require('inspector'); +const path = require('path'); + +function debugged() { + return 42; +} + +async function test() { + const session1 = new Session(); + const session2 = new Session(); + + session1.connect(); + session2.connect(); + + let session1Paused = false; + let session2Paused = false; + + session1.on('Debugger.paused', () => session1Paused = true); + session2.on('Debugger.paused', () => session2Paused = true); + + console.log('Connected'); + + session1.post('Debugger.enable'); + session2.post('Debugger.enable'); + console.log('Debugger was enabled'); + + await new Promise((resolve, reject) => { + session1.post('Debugger.setBreakpointByUrl', { + 'lineNumber': 9, + 'url': path.resolve(__dirname, __filename), + 'columnNumber': 0, + 'condition': '' + }, (error, result) => { + return error ? reject(error) : resolve(result); + }); + }); + console.log('Breakpoint was set'); + + debugged(); + + // Both sessions will receive the paused event + assert(session1Paused); + assert(session2Paused); + console.log('Breakpoint was hit'); + + session1.disconnect(); + session2.disconnect(); + console.log('Sessions were disconnected'); +} + +common.crashOnUnhandledRejection(); + +test(); |