mirror of
https://github.com/zebrajr/node.git
synced 2025-12-06 12:20:27 +01:00
test: add regression test for C++-created Buffer transfer
Add a test for a regression that occurs when transferring some `Buffer` objects that were created from C++ to a parent thread. Fixes: https://github.com/nodejs/node/issues/34126 PR-URL: https://github.com/nodejs/node/pull/34140 Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
This commit is contained in:
parent
6bc871f470
commit
cb67be7f67
30
test/parallel/test-worker-crypto-sign-transfer-result.js
Normal file
30
test/parallel/test-worker-crypto-sign-transfer-result.js
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
'use strict';
|
||||
const common = require('../common');
|
||||
if (!common.hasCrypto)
|
||||
common.skip('missing crypto');
|
||||
|
||||
const assert = require('assert');
|
||||
const { Worker } = require('worker_threads');
|
||||
const fixturesPath = require.resolve('../common/fixtures');
|
||||
|
||||
// Test that transferring the result of e.g. crypto.sign() from Worker to parent
|
||||
// thread does not crash
|
||||
|
||||
const w = new Worker(`
|
||||
const { parentPort } = require('worker_threads');
|
||||
const crypto = require('crypto');
|
||||
const assert = require('assert');
|
||||
const fixtures = require(${JSON.stringify(fixturesPath)});
|
||||
|
||||
const keyPem = fixtures.readKey('rsa_private.pem');
|
||||
|
||||
const buf = crypto.sign('sha256', Buffer.from('hello'), keyPem);
|
||||
assert.notStrictEqual(buf.byteLength, 0);
|
||||
parentPort.postMessage(buf, [buf.buffer]);
|
||||
assert.strictEqual(buf.byteLength, 0);
|
||||
`, { eval: true });
|
||||
|
||||
w.on('message', common.mustCall((buf) => {
|
||||
assert.notStrictEqual(buf.byteLength, 0);
|
||||
}));
|
||||
w.on('exit', common.mustCall());
|
||||
Loading…
Reference in New Issue
Block a user