summaryrefslogtreecommitdiff
path: root/test/parallel/test-inspector-multisession-js.js
diff options
context:
space:
mode:
authorEugene Ostroukhov <eostroukhov@chromium.org>2018-04-24 11:16:55 -0700
committerEugene Ostroukhov <eostroukhov@google.com>2018-04-26 12:48:48 -0700
commit13001035340d6d3fb173fef4a1db42ba70f61720 (patch)
tree7333699fc80f90725a00b229dccc5bf718cfea78 /test/parallel/test-inspector-multisession-js.js
parent5c57cea8049bad5939807e6b849ee303ec8e1526 (diff)
downloadandroid-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.js59
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();