const { fork } = require('node:child_process') const { join } = require('node:path') const { EXIT } = require('./consts') const CLI = require('./cli') const help_message = "Start the server configured for stress testing." const cli = CLI({ grammar: [ [["--help"], "Show this help message"], ], }) const help = (exit_code) => { console.log("Usage: lamassu-server-stress-testing server ARGS...") console.log(help_message) cli.help() return exit_code } const start_server = (args) => new Promise((resolve, reject) => { const lamassu_server = join(__dirname, "../../bin/lamassu-server") const ls = fork(lamassu_server, args, { cwd: process.cwd(), encoding: 'utf8', env: { LAMASSU_STRESS_TESTING: "YES" }, }) ls.on('error', (error) => { console.log(error) resolve(EXIT.EXCEPTION) }) ls.on('exit', (code, signal) => { console.error("lamassu-server code:", code) console.error("lamassu-server signal:", signal) resolve(typeof(code) === 'number' ? code : EXIT.EXCEPTION) }) }) const run = async (args) => { const [err, options, positional] = cli.parse(args) if (err) { console.error(err) return help(EXIT.BADARGS) } if (options.help) return help(EXIT.OK) return await start_server(positional) } module.exports = { help_message, run, }