diff options
author | Anna Henningsen <anna@addaleax.net> | 2019-10-20 14:29:02 +0200 |
---|---|---|
committer | Rich Trott <rtrott@gmail.com> | 2019-10-22 13:36:08 -0500 |
commit | 4201cdde89af76d80ec794e82ee0b1c47c107299 (patch) | |
tree | c9241a71ebb96692a54b1ee701e47f240bb170df /test/parallel/test-worker-sharedarraybuffer-from-worker-thread.js | |
parent | 42bf0c8df2094813e0d86af9eddf374fc9bdadc4 (diff) | |
download | android-node-v8-4201cdde89af76d80ec794e82ee0b1c47c107299.tar.gz android-node-v8-4201cdde89af76d80ec794e82ee0b1c47c107299.tar.bz2 android-node-v8-4201cdde89af76d80ec794e82ee0b1c47c107299.zip |
test: expand Worker test for non-shared ArrayBuffer
This test would be broken by V8 7.9 due to the changed `ArrayBuffer`
backing store management (the same way that V8 7.8 broke this for
`SharedArrayBuffer`s). While working on a solution, it would be
good to already have this test in Node.js to avoid unnecessary
accidental breakage.
Refs: https://github.com/nodejs/node-v8/issues/115
PR-URL: https://github.com/nodejs/node/pull/30044
Reviewed-By: Yongsheng Zhang <zyszys98@gmail.com>
Reviewed-By: Michaƫl Zasso <targos@protonmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Diffstat (limited to 'test/parallel/test-worker-sharedarraybuffer-from-worker-thread.js')
-rw-r--r-- | test/parallel/test-worker-sharedarraybuffer-from-worker-thread.js | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/test/parallel/test-worker-sharedarraybuffer-from-worker-thread.js b/test/parallel/test-worker-sharedarraybuffer-from-worker-thread.js index 56dfe2ec41..ce8410f6dd 100644 --- a/test/parallel/test-worker-sharedarraybuffer-from-worker-thread.js +++ b/test/parallel/test-worker-sharedarraybuffer-from-worker-thread.js @@ -5,19 +5,24 @@ const assert = require('assert'); const { Worker } = require('worker_threads'); // Regression test for https://github.com/nodejs/node/issues/28777 -// Make sure that SharedArrayBuffers created in Worker threads are accessible -// after the creating thread ended. +// Make sure that SharedArrayBuffers and transferred ArrayBuffers created in +// Worker threads are accessible after the creating thread ended. -const w = new Worker(` -const { parentPort } = require('worker_threads'); -const sharedArrayBuffer = new SharedArrayBuffer(4); -parentPort.postMessage(sharedArrayBuffer); -`, { eval: true }); +for (const ctor of ['ArrayBuffer', 'SharedArrayBuffer']) { + const w = new Worker(` + const { parentPort } = require('worker_threads'); + const arrayBuffer = new ${ctor}(4); + parentPort.postMessage( + arrayBuffer, + '${ctor}' === 'SharedArrayBuffer' ? [] : [arrayBuffer]); + `, { eval: true }); -let sharedArrayBuffer; -w.once('message', common.mustCall((message) => sharedArrayBuffer = message)); -w.once('exit', common.mustCall(() => { - const uint8array = new Uint8Array(sharedArrayBuffer); - uint8array[0] = 42; - assert.deepStrictEqual(uint8array, new Uint8Array([42, 0, 0, 0])); -})); + let arrayBuffer; + w.once('message', common.mustCall((message) => arrayBuffer = message)); + w.once('exit', common.mustCall(() => { + assert.strictEqual(arrayBuffer.constructor.name, ctor); + const uint8array = new Uint8Array(arrayBuffer); + uint8array[0] = 42; + assert.deepStrictEqual(uint8array, new Uint8Array([42, 0, 0, 0])); + })); +} |