nsolid-manager
Version:
A manager that sets up and runs N|Solid for you
58 lines (46 loc) • 1.43 kB
JavaScript
/**
* 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
* ```
*
*/
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
})
}
})