UNPKG

nsolid-manager

Version:

A manager that sets up and runs N|Solid for you

58 lines (46 loc) 1.43 kB
/** * Spawn a number of processes for simulation during development & testing. * * Use special @n suffix to spawn n processes * * Example: Run two instances of the noop scenario * * ``` * > NSOLID_APPNAME=monkey node bin/simulate.js test/simulator/scenarios/noop.js@2 * ``` * */ 'use strict' require('./polyfill') var path = require('path') var spawn = require('child_process').spawn var yargs = require('yargs') var utils = require('./utils') process.env.NSOLID_SOCKET = process.env.NSOLID_SOCKET || ':0' process.env.NSOLID_HUB = process.env.NSOLID_HUB || '127.0.0.1:4001' process.env.NSOLID_APPNAME = process.env.NSOLID_APPNAME || 'default-nsolid-scenario' var argv = yargs .usage(`Spawn a number of processes for simulation during development & testing. Use special @n suffix after filename to spawn n processes. Usage: node bin/simulate.js <file.js>[@n] `.trim()) .demand(1) .help('h') .alias('h', 'help') .argv argv._.forEach(function (arg) { var parts = arg.split('@') var script = path.resolve(process.cwd(), parts[0]) var count = parseInt(parts[1], 10) for (var i = 0; i < count; i++) { console.error('spawning %s (%s/%s)', path.basename(script), i, count - 1) const proc = spawn('nsolid', [script, '-i', i, '-c', count], { env: process.env, stdio: 'inherit' }) utils.killOnExit(proc, {killAll: false}) proc.once('error', err => { throw err }) } })