summaryrefslogtreecommitdiff
path: root/test/node-api/test_worker_terminate
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2019-02-17 23:45:14 +0100
committerAnna Henningsen <anna@addaleax.net>2019-02-22 21:42:09 +0100
commit8ebd339031cf9826629ad780dd35fee130e95985 (patch)
tree6a8a1b59040f55404e3cb3e3cf2860bd4879bd40 /test/node-api/test_worker_terminate
parent455b927be0111a6aa8f1e30ae5b21659afeba40d (diff)
downloadandroid-node-v8-8ebd339031cf9826629ad780dd35fee130e95985.tar.gz
android-node-v8-8ebd339031cf9826629ad780dd35fee130e95985.tar.bz2
android-node-v8-8ebd339031cf9826629ad780dd35fee130e95985.zip
worker: improve integration with native addons
Allow loading add-ons from multiple Node.js instances if they are declared context-aware; in particular, this applies to N-API addons. Also, plug a memory leak that occurred when registering N-API addons. Refs: https://github.com/nodejs/node/pull/23319 PR-URL: https://github.com/nodejs/node/pull/26175 Fixes: https://github.com/nodejs/node/issues/21481 Fixes: https://github.com/nodejs/node/issues/21783 Fixes: https://github.com/nodejs/node/issues/25662 Fixes: https://github.com/nodejs/node/issues/20239 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Diffstat (limited to 'test/node-api/test_worker_terminate')
-rw-r--r--test/node-api/test_worker_terminate/test.js5
-rw-r--r--test/node-api/test_worker_terminate/test_worker_terminate.c2
2 files changed, 7 insertions, 0 deletions
diff --git a/test/node-api/test_worker_terminate/test.js b/test/node-api/test_worker_terminate/test.js
index 2bfaab8e8e..7c7224c073 100644
--- a/test/node-api/test_worker_terminate/test.js
+++ b/test/node-api/test_worker_terminate/test.js
@@ -4,6 +4,11 @@ const assert = require('assert');
const { Worker, isMainThread, workerData } = require('worker_threads');
if (isMainThread) {
+ // Load the addon in the main thread first.
+ // This checks that N-API addons can be loaded from multiple contexts
+ // when they are not loaded through NAPI_MODULE().
+ require(`./build/${common.buildType}/test_worker_terminate`);
+
const counter = new Int32Array(new SharedArrayBuffer(4));
const worker = new Worker(__filename, { workerData: { counter } });
worker.on('exit', common.mustCall(() => {
diff --git a/test/node-api/test_worker_terminate/test_worker_terminate.c b/test/node-api/test_worker_terminate/test_worker_terminate.c
index a88d936293..517cae4203 100644
--- a/test/node-api/test_worker_terminate/test_worker_terminate.c
+++ b/test/node-api/test_worker_terminate/test_worker_terminate.c
@@ -36,4 +36,6 @@ napi_value Init(napi_env env, napi_value exports) {
return exports;
}
+// Do not start using NAPI_MODULE_INIT() here, so that we can test
+// compatibility of Workers with NAPI_MODULE().
NAPI_MODULE(NODE_GYP_MODULE_NAME, Init)