node/test/addons/uv-thread-name/test.js

37 lines
1.2 KiB
JavaScript

'use strict';
const common = require('../../common');
if (common.isAIX || common.isIBMi) {
// see: https://github.com/libuv/libuv/pull/4599#issuecomment-2498376606
common.skip('AIX, IBM i do not support get/set thread name');
}
const assert = require('node:assert');
const { parentPort, Worker, isMainThread } = require('node:worker_threads');
const bindingPath = require.resolve(`./build/${common.buildType}/binding`);
const binding = require(bindingPath);
if (isMainThread) {
assert.strictEqual(binding.getThreadName(), 'MainThread');
const worker = new Worker(__filename);
worker.on('message', common.mustCall((data) => {
assert.strictEqual(data, 'WorkerThread');
}));
worker.on('error', common.mustNotCall());
worker.on('exit', common.mustCall((code) => {
assert.strictEqual(code, 0);
}));
const namedWorker = new Worker(__filename, { name: 'NamedThread' });
namedWorker.on('message', common.mustCall((data) => {
assert.strictEqual(data, 'NamedThread');
}));
namedWorker.on('error', common.mustNotCall());
namedWorker.on('exit', common.mustCall((code) => {
assert.strictEqual(code, 0);
}));
} else {
parentPort.postMessage(binding.getThreadName());
}