1'use strict'; 2// Flags: --expose-internals 3 4require('../common'); 5const { 6 Worker, 7 getEnvironmentData, 8 setEnvironmentData, 9 threadId, 10} = require('worker_threads'); 11 12const { assignEnvironmentData } = require('internal/worker'); 13 14const { 15 deepStrictEqual, 16 strictEqual, 17} = require('assert'); 18 19if (!process.env.HAS_STARTED_WORKER) { 20 process.env.HAS_STARTED_WORKER = 1; 21 setEnvironmentData('foo', 'bar'); 22 setEnvironmentData('hello', { value: 'world' }); 23 setEnvironmentData(1, 2); 24 strictEqual(getEnvironmentData(1), 2); 25 setEnvironmentData(1); // Delete it, key won't show up in the worker. 26 new Worker(__filename); 27 setEnvironmentData('hello'); // Delete it. Has no impact on the worker. 28} else { 29 strictEqual(getEnvironmentData('foo'), 'bar'); 30 deepStrictEqual(getEnvironmentData('hello'), { value: 'world' }); 31 strictEqual(getEnvironmentData(1), undefined); 32 assignEnvironmentData(undefined); // It won't setup any key. 33 strictEqual(getEnvironmentData(undefined), undefined); 34 35 // Recurse to make sure the environment data is inherited 36 if (threadId <= 2) 37 new Worker(__filename); 38} 39