summaryrefslogtreecommitdiff
path: root/test/parallel/test-worker-sharedarraybuffer-from-worker-thread.js
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2019-10-20 14:29:02 +0200
committerRich Trott <rtrott@gmail.com>2019-10-22 13:36:08 -0500
commit4201cdde89af76d80ec794e82ee0b1c47c107299 (patch)
treec9241a71ebb96692a54b1ee701e47f240bb170df /test/parallel/test-worker-sharedarraybuffer-from-worker-thread.js
parent42bf0c8df2094813e0d86af9eddf374fc9bdadc4 (diff)
downloadandroid-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.js33
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]));
+ }));
+}