Skip to content

Commit

Permalink
assume onPort if -- node is set (#530)
Browse files Browse the repository at this point in the history
* assume onPort if -- node is set

* doc: onPort assumed to be true is node script is provided

* dropped support for node v14.x and v16.x

---------

Co-authored-by: Matteo Collina <[email protected]>
  • Loading branch information
karankraina and mcollina authored Oct 14, 2024
1 parent 5ef4545 commit 3167fab
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ Available options:
Start the command listed after -- on the command line. When it starts listening on a port,
start sending requests to that port. A URL is still required to send requests to
the correct path. The hostname can be omitted, `localhost` will be used by default.
If the command after -- is `node <script>`, this flag is optional and assumed to be `true`.
-m/--method METHOD
The HTTP method to use. default: 'GET'.
-t/--timeout NUM
Expand Down
5 changes: 5 additions & 0 deletions autocannon.js
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,11 @@ function parseArguments (argvs) {

argv.url = argv._.length > 1 ? argv._ : argv._[0]

// Assume onPort if `-- node` is provided
if (argv['--'][0] === 'node') {
argv.onPort = true
}

if (argv.onPort) {
argv.spawn = argv['--']
}
Expand Down
54 changes: 54 additions & 0 deletions test/onPort.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,57 @@ test('--on-port flag', { skip: !hasAsyncHooks() }, (t) => {
t.ok(regexp.test(line), 'line matches ' + regexp)
})
})

test('assume --on-port flag if -- node is set', { skip: !hasAsyncHooks() }, (t) => {
const lines = [
/Running 1s test @ .*$/,
/10 connections.*$/,
/$/,
/.*/,
/$/,
/Stat.*2\.5%.*50%.*97\.5%.*99%.*Avg.*Stdev.*Max.*$/,
/.*/,
/Latency.*$/,
/$/,
/.*/,
/Stat.*1%.*2\.5%.*50%.*97\.5%.*Avg.*Stdev.*Min.*$/,
/.*/,
/Req\/Sec.*$/,
/$/,
/Bytes\/Sec.*$/,
/.*/,
/$/,
/Req\/Bytes counts sampled once per second.*$/,
/# of samples: 10*$/,
/$/,
/.* requests in ([0-9]|\.)+s, .* read/
]

t.plan(lines.length * 2)

const child = spawn(process.execPath, [
path.join(__dirname, '..'),
'-c', '10',
'-d', '1',
'/',
'--', 'node', path.join(__dirname, './targetProcess')
], {
cwd: __dirname,
env: process.env,
stdio: ['ignore', 'pipe', 'pipe'],
detached: false
})

t.teardown(() => {
child.kill()
})

child
.stderr
.pipe(split())
.on('data', (line) => {
const regexp = lines.shift()
t.ok(regexp, 'we are expecting this line')
t.ok(regexp.test(line), 'line matches ' + regexp + `actual: ${line} expected: ${regexp}`)
})
})

0 comments on commit 3167fab

Please sign in to comment.