Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2020-01-16 20:19:10 +0300
committerAnna Henningsen <anna@addaleax.net>2020-01-22 01:51:38 +0300
commit2606e1ed25b63694adccf7756d10ef51722a14ce (patch)
tree3e32900b9902e57c5162e046db7719822284c3a7 /test/report
parent880b47d35316f1a646a21e3b86e7a32eee048d6e (diff)
report: add support for Workers
Include a report for each sub-Worker of the current Node.js instance. This adds a feature that is necessary for eventually making the report feature stable, as was discussed during the last collaborator summit. Refs: https://github.com/openjs-foundation/summit/pull/240 PR-URL: https://github.com/nodejs/node/pull/31386 Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com>
Diffstat (limited to 'test/report')
-rw-r--r--test/report/test-report-worker.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/test/report/test-report-worker.js b/test/report/test-report-worker.js
new file mode 100644
index 00000000000..a34c05f0843
--- /dev/null
+++ b/test/report/test-report-worker.js
@@ -0,0 +1,50 @@
+// Flags: --experimental-report
+'use strict';
+const common = require('../common');
+common.skipIfReportDisabled();
+const assert = require('assert');
+const { Worker } = require('worker_threads');
+const { once } = require('events');
+const helper = require('../common/report');
+
+async function basic() {
+ // Test that the report includes basic information about Worker threads.
+
+ const w = new Worker(`
+ const { parentPort } = require('worker_threads');
+ parentPort.once('message', () => {
+ /* Wait for message to stop the Worker */
+ });
+ `, { eval: true });
+
+ await once(w, 'online');
+
+ const report = process.report.getReport();
+ helper.validateContent(report);
+ assert.strictEqual(report.workers.length, 1);
+ helper.validateContent(report.workers[0]);
+
+ w.postMessage({});
+
+ await once(w, 'exit');
+}
+
+async function interruptingJS() {
+ // Test that the report also works when Worker threads are busy in JS land.
+
+ const w = new Worker('while (true);', { eval: true });
+
+ await once(w, 'online');
+
+ const report = process.report.getReport();
+ helper.validateContent(report);
+ assert.strictEqual(report.workers.length, 1);
+ helper.validateContent(report.workers[0]);
+
+ await w.terminate();
+}
+
+(async function() {
+ await basic();
+ await interruptingJS();
+})().then(common.mustCall());