From 6a5ce36fb8af710abd9143448755475510d494fb Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Fri, 31 May 2019 17:46:14 +0200 Subject: [PATCH] test: handle unknown message type in worker threads Check that main thread handles an unknown message type from a worker thread as expected. PR-URL: https://github.com/nodejs/node/pull/27995 Reviewed-By: Colin Ihrig Reviewed-By: Luigi Pinca --- .../test-worker-message-not-serializable.js | 17 ++++++------- .../test-worker-message-type-unknown.js | 25 +++++++++++++++++++ 2 files changed, 33 insertions(+), 9 deletions(-) create mode 100644 test/parallel/test-worker-message-type-unknown.js diff --git a/test/parallel/test-worker-message-not-serializable.js b/test/parallel/test-worker-message-not-serializable.js index 875cc1d58a148a..3753c7de6cbdf9 100644 --- a/test/parallel/test-worker-message-not-serializable.js +++ b/test/parallel/test-worker-message-not-serializable.js @@ -6,20 +6,19 @@ // expected. const common = require('../common'); -common.skipIfWorker(); const assert = require('assert'); -const { Worker, isMainThread } = require('worker_threads'); -if (isMainThread) { - const worker = new Worker(__filename); - worker.on('error', common.mustCall((e) => { - assert.strictEqual(e.code, 'ERR_WORKER_UNSERIALIZABLE_ERROR'); - })); -} else { +const { Worker } = require('worker_threads'); + +const worker = new Worker(` const { internalBinding } = require('internal/test/binding'); const { getEnvMessagePort } = internalBinding('worker'); const { messageTypes } = require('internal/worker/io'); const messagePort = getEnvMessagePort(); messagePort.postMessage({ type: messageTypes.COULD_NOT_SERIALIZE_ERROR }); -} +`, { eval: true }); + +worker.on('error', common.mustCall((e) => { + assert.strictEqual(e.code, 'ERR_WORKER_UNSERIALIZABLE_ERROR'); +})); diff --git a/test/parallel/test-worker-message-type-unknown.js b/test/parallel/test-worker-message-type-unknown.js new file mode 100644 index 00000000000000..32f6c2a32bd6b4 --- /dev/null +++ b/test/parallel/test-worker-message-type-unknown.js @@ -0,0 +1,25 @@ +'use strict'; + +// Check that main thread handles an unknown message type from a worker thread +// as expected. + +require('../common'); + +const assert = require('assert'); +const { spawnSync } = require('child_process'); + +const { Worker } = require('worker_threads'); +if (process.argv[2] !== 'spawned') { + const result = spawnSync(process.execPath, + [ '--expose-internals', __filename, 'spawned'], + { encoding: 'utf8' }); + assert.ok(result.stderr.includes('Unknown worker message type FHQWHGADS'), + `Expected error not found in: ${result.stderr}`); +} else { + new Worker(` + const { internalBinding } = require('internal/test/binding'); + const { getEnvMessagePort } = internalBinding('worker'); + const messagePort = getEnvMessagePort(); + messagePort.postMessage({ type: 'FHQWHGADS' }); + `, { eval: true }); +}