1// Copyright Joyent, Inc. and other Node contributors. 2// 3// Permission is hereby granted, free of charge, to any person obtaining a 4// copy of this software and associated documentation files (the 5// "Software"), to deal in the Software without restriction, including 6// without limitation the rights to use, copy, modify, merge, publish, 7// distribute, sublicense, and/or sell copies of the Software, and to permit 8// persons to whom the Software is furnished to do so, subject to the 9// following conditions: 10// 11// The above copyright notice and this permission notice shall be included 12// in all copies or substantial portions of the Software. 13// 14// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 15// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN 17// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 19// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 20// USE OR OTHER DEALINGS IN THE SOFTWARE. 21 22'use strict'; 23require('../common'); 24 25// This test checks that arguments provided to cluster.fork() will create 26// new environment variables and override existing environment variables 27// in the created worker process. 28 29const assert = require('assert'); 30const cluster = require('cluster'); 31 32if (cluster.isWorker) { 33 const result = cluster.worker.send({ 34 prop: process.env.cluster_test_prop, 35 overwrite: process.env.cluster_test_overwrite 36 }); 37 38 assert.strictEqual(result, true); 39} else if (cluster.isPrimary) { 40 41 const checks = { 42 using: false, 43 overwrite: false 44 }; 45 46 // To check that the cluster extend on the process.env we will overwrite a 47 // property 48 process.env.cluster_test_overwrite = 'old'; 49 50 // Fork worker 51 const worker = cluster.fork({ 52 'cluster_test_prop': 'custom', 53 'cluster_test_overwrite': 'new' 54 }); 55 56 // Checks worker env 57 worker.on('message', function(data) { 58 checks.using = (data.prop === 'custom'); 59 checks.overwrite = (data.overwrite === 'new'); 60 process.exit(0); 61 }); 62 63 process.once('exit', function() { 64 assert.ok(checks.using, 'The worker did not receive the correct env.'); 65 assert.ok( 66 checks.overwrite, 67 'The custom environment did not overwrite the existing environment.'); 68 }); 69 70} 71