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>
This commit is contained in:
parent
04053c4124
commit
e8f3119190
@ -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');
|
||||
}));
|
||||
|
25
test/parallel/test-worker-message-type-unknown.js
Normal file
25
test/parallel/test-worker-message-type-unknown.js
Normal file
@ -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 });
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user