From 792335f712373199107ebe886559a3f32d930bd0 Mon Sep 17 00:00:00 2001 From: Jeremiah Senkpiel Date: Wed, 6 Jun 2018 17:41:32 -0400 Subject: [PATCH] test: add workerdata-sharedarraybuffer test This functionality works but was previously untested. PR-URL: https://github.com/nodejs/node/pull/21180 Reviewed-By: Anna Henningsen Reviewed-By: Minwoo Jung Reviewed-By: Benjamin Gruenbaum Reviewed-By: Colin Ihrig Reviewed-By: Trivikram Kamat Reviewed-By: James M Snell --- ...est-worker-workerdata-sharedarraybuffer.js | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 test/parallel/test-worker-workerdata-sharedarraybuffer.js diff --git a/test/parallel/test-worker-workerdata-sharedarraybuffer.js b/test/parallel/test-worker-workerdata-sharedarraybuffer.js new file mode 100644 index 00000000000000..09de361236cf67 --- /dev/null +++ b/test/parallel/test-worker-workerdata-sharedarraybuffer.js @@ -0,0 +1,32 @@ +// Flags: --expose-gc --experimental-worker +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const { Worker } = require('worker_threads'); + +{ + const sharedArrayBuffer = new SharedArrayBuffer(12); + const local = Buffer.from(sharedArrayBuffer); + + const w = new Worker(` + const { parentPort, workerData } = require('worker_threads'); + const local = Buffer.from(workerData.sharedArrayBuffer); + + parentPort.on('message', () => { + local.write('world!', 6); + parentPort.postMessage('written!'); + }); + `, { + eval: true, + workerData: { sharedArrayBuffer } + }); + w.on('message', common.mustCall(() => { + assert.strictEqual(local.toString(), 'Hello world!'); + global.gc(); + w.terminate(); + })); + w.postMessage({}); + // This would be a race condition if the memory regions were overlapping + local.write('Hello '); +}