From d1e3724b5d5e37084349a30ebd1009607900c1ab Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Wed, 13 Feb 2019 22:01:55 +0100 Subject: [PATCH] test,worker: add more tests for worker.ref()/.unref() PR-URL: https://github.com/nodejs/node/pull/26083 Reviewed-By: Richard Lau Reviewed-By: James M Snell Reviewed-By: Colin Ihrig --- test/parallel/test-worker-ref-onexit.js | 10 +++++++++ test/parallel/test-worker-ref.js | 29 +++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 test/parallel/test-worker-ref-onexit.js create mode 100644 test/parallel/test-worker-ref.js diff --git a/test/parallel/test-worker-ref-onexit.js b/test/parallel/test-worker-ref-onexit.js new file mode 100644 index 00000000000000..0250c592ce91ae --- /dev/null +++ b/test/parallel/test-worker-ref-onexit.js @@ -0,0 +1,10 @@ +'use strict'; +const common = require('../common'); +const { Worker } = require('worker_threads'); + +// Check that worker.unref() makes the 'exit' event not be emitted, if it is +// the only thing we would otherwise be waiting for. + +const w = new Worker('', { eval: true }); +w.unref(); +w.on('exit', common.mustNotCall()); diff --git a/test/parallel/test-worker-ref.js b/test/parallel/test-worker-ref.js new file mode 100644 index 00000000000000..645fc0fbad8e37 --- /dev/null +++ b/test/parallel/test-worker-ref.js @@ -0,0 +1,29 @@ +'use strict'; +const common = require('../common'); +const { Worker } = require('worker_threads'); + +// Test that calling worker.unref() leads to 'beforeExit' being emitted, and +// that we can resurrect the worker using worker.ref() from there. + +const w = new Worker(` +const { parentPort } = require('worker_threads'); +parentPort.once('message', (msg) => { + parentPort.postMessage(msg); +}); +`, { eval: true }); + +process.once('beforeExit', common.mustCall(() => { + console.log('beforeExit'); + w.ref(); + w.postMessage({ hello: 'world' }); +})); + +w.once('message', common.mustCall((msg) => { + console.log('message', msg); +})); + +w.on('exit', common.mustCall(() => { + console.log('exit'); +})); + +w.unref();