summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Trott <rtrott@gmail.com>2019-05-31 17:46:14 +0200
committerRich Trott <rtrott@gmail.com>2019-06-02 17:50:54 +0200
commite8f31191902a8304f77f7ed4377f10de91aca103 (patch)
tree86d9e96345f7fa1be3c49332a98bef7b99f87330
parent04053c4124b095bddd28e7b968761b51896a7d83 (diff)
downloadnode-new-e8f31191902a8304f77f7ed4377f10de91aca103.tar.gz
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 <cjihrig@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
-rw-r--r--test/parallel/test-worker-message-not-serializable.js17
-rw-r--r--test/parallel/test-worker-message-type-unknown.js25
2 files changed, 33 insertions, 9 deletions
diff --git a/test/parallel/test-worker-message-not-serializable.js b/test/parallel/test-worker-message-not-serializable.js
index 875cc1d58a..3753c7de6c 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 0000000000..32f6c2a32b
--- /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 });
+}