UNPKG

nsolid-manager

Version:

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

111 lines (90 loc) 2.64 kB
/** * All-in-one start script, starts everything you need to try N|Solid Console. * * 1. Start service dependencies e.g. etcd, nsolid-proxy * 2. Start the collector (starts an HTTP server) * 3. Simulate some Applications with real Processes * */ 'use strict' require('./polyfill') var spawn = require('child_process').spawn var split = require('split') var createDebug = require('debug') var utils = require('./utils') var which = require('npm-which')(process.cwd()) var config = require('../src/collect/config') const argv = config(process.argv, ` Boots everything you need to try N|Solid Console. Usage: $0 [options]`.trim()) // Override `debug`'s default so buffers become strings createDebug.coerce = function coerce (val) { if (val instanceof Error) return val.stack || val.message return val.toString() } function debugWrap (proc, logger) { proc.stdout .pipe(process.stdout) proc.stderr .pipe(split()) .on('data', logger) utils.killOnExit(proc, {killAll: true}) return proc } process .on('uncaughtException', onError) .on('unhandledRejection', onError) function onError (err) { if (err) throw err } var consoleEnv = Object.assign({}, process.env) if (argv['include-nsolid-console']) { Object.assign(consoleEnv, { NSOLID_APPNAME: 'N|Solid', NSOLID_SOCKET: ':0', NSOLID_HUB: '127.0.0.1:4001', NSOLID_TAGS: 'DC' }) } debugWrap(spawn('etcd', ['--cors=*'], {}), createDebug('etcd')) var pathToProxy = which.sync('nsolid-proxy') debugWrap(spawn(pathToProxy, { cwd: process.cwd(), env: consoleEnv }), createDebug('nsolid-proxy')) debugWrap(spawn('node', [ 'bin/nsolid-console.js', '--port', argv.port, '--interval', 1000 ].concat(process.argv.slice(2)), { env: Object.assign({}, process.env, consoleEnv, { NODE_ENV: process.env.NODE_ENV || 'development' }) }), createDebug('nsolid-console')) debugWrap(spawn('nsolid', [ 'bin/simulate.js', 'test/simulator/scenarios/noop.js@15' ], { env: Object.assign({ NSOLID_APPNAME: 'Shark Attack', NSOLID_TAGS: 'DC, us-east-1, Grey Shark' }, process.env) }), createDebug('scenario:SharkAttack')) debugWrap(spawn('nsolid', [ 'bin/simulate.js', 'test/simulator/scenarios/noop.js@5' ], { env: Object.assign({ NSOLID_APPNAME: 'Shark Attack', NSOLID_TAGS: 'us-west-1, White Shark' }, process.env) }), createDebug('scenario:SharkAttack')) debugWrap(spawn('nsolid', [ 'bin/simulate.js', 'test/simulator/scenarios/leaky-http.js@10' ], { env: Object.assign({ NSOLID_APPNAME: 'Beeeeeeeees', NSOLID_TAGS: 'us-east-1, Big Bees' }, process.env) }), createDebug('scenario:Beeeeeeeees'))