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.
|
// expected.
|
||||||
|
|
||||||
const common = require('../common');
|
const common = require('../common');
|
||||||
common.skipIfWorker();
|
|
||||||
|
|
||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
|
|
||||||
const { Worker, isMainThread } = require('worker_threads');
|
const { Worker } = require('worker_threads');
|
||||||
if (isMainThread) {
|
|
||||||
const worker = new Worker(__filename);
|
const worker = new Worker(`
|
||||||
worker.on('error', common.mustCall((e) => {
|
|
||||||
assert.strictEqual(e.code, 'ERR_WORKER_UNSERIALIZABLE_ERROR');
|
|
||||||
}));
|
|
||||||
} else {
|
|
||||||
const { internalBinding } = require('internal/test/binding');
|
const { internalBinding } = require('internal/test/binding');
|
||||||
const { getEnvMessagePort } = internalBinding('worker');
|
const { getEnvMessagePort } = internalBinding('worker');
|
||||||
const { messageTypes } = require('internal/worker/io');
|
const { messageTypes } = require('internal/worker/io');
|
||||||
const messagePort = getEnvMessagePort();
|
const messagePort = getEnvMessagePort();
|
||||||
messagePort.postMessage({ type: messageTypes.COULD_NOT_SERIALIZE_ERROR });
|
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