Skip to content

Commit

Permalink
added hdr-histogram-percentiles-obj and moved 'sent' to 'requests' ob…
Browse files Browse the repository at this point in the history
…ject
  • Loading branch information
GlenTiki committed Jul 21, 2016
1 parent d5fc3c6 commit 645eed1
Show file tree
Hide file tree
Showing 6 changed files with 14 additions and 48 deletions.
13 changes: 0 additions & 13 deletions lib/percentiles.js

This file was deleted.

2 changes: 1 addition & 1 deletion lib/progressTracker.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ const chalk = require('chalk')
const prettyBytes = require('pretty-bytes')
const xtend = require('xtend')
const format = require('./format')
const percentiles = require('./percentiles')
const percentiles = require('hdr-histogram-percentiles-obj').percentiles
const defaults = {
// use stderr as its progressBar's default
outputStream: process.stderr,
Expand Down
30 changes: 4 additions & 26 deletions lib/run.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@ const URL = require('url')
const Histogram = require('native-hdr-histogram')
const timestring = require('timestring')
const Client = require('./httpClient')
const percentiles = require('./percentiles')
const xtend = require('xtend')
const histUtil = require('hdr-histogram-percentiles-obj')
const histAsObj = histUtil.histAsObj
const addPercentiles = histUtil.addPercentiles

const defaultOptions = {
headers: {},
Expand Down Expand Up @@ -163,7 +165,6 @@ function run (opts, cb) {
requests: histAsObj(requests, totalCompletedRequests),
latency: addPercentiles(latencies, histAsObj(latencies)),
throughput: histAsObj(throughput, totalBytes),
sent: totalRequests,
errors: errors,
timeouts: timeouts,
duration: Math.round((Date.now() - startTime) / 1000),
Expand All @@ -173,6 +174,7 @@ function run (opts, cb) {
pipelining: opts.pipelining,
'non2xx': statusCodes[0] + statusCodes[2] + statusCodes[3] + statusCodes[4]
}
result.requests.sent = totalRequests
statusCodes.forEach((code, index) => { result[(index + 1) + 'xx'] = code })
tracker.emit('done', result)

Expand Down Expand Up @@ -239,30 +241,6 @@ function run (opts, cb) {
return tracker
} // run

function histAsObj (hist, total) {
const result = {
average: Math.ceil(hist.mean() * 100) / 100,
stddev: Math.ceil(hist.stddev() * 100) / 100,
min: hist.min(),
max: hist.max()
}

if (typeof total === 'number') {
result.total = total
}

return result
}

function addPercentiles (hist, result) {
percentiles.forEach((perc) => {
const key = ('p' + perc).replace('.', '')
result[key] = hist.percentile(perc)
})

return result
}

function noop () {}

module.exports = run
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
"dependencies": {
"chalk": "^1.1.3",
"deep-extend": "^0.4.1",
"hdr-histogram-percentiles-obj": "^1.1.0",
"http-parser-js": "^0.4.2",
"minimist": "^1.2.0",
"native-hdr-histogram": "^0.3.0",
Expand Down
8 changes: 4 additions & 4 deletions test/run.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ test('run', (t) => {
t.ok(result.requests.min, 'requests.min exists')
t.ok(result.requests.max, 'requests.max exists')
t.ok(result.requests.total >= result.requests.average * 2 / 100 * 95, 'requests.total exists')
t.ok(result.sent, 'sent exists')
t.ok(result.sent >= result.requests.total, 'total requests made should be more than or equal to completed requests total')
t.ok(result.requests.sent, 'sent exists')
t.ok(result.requests.sent >= result.requests.total, 'total requests made should be more than or equal to completed requests total')

t.ok(result.throughput, 'throughput exists')
t.ok(result.throughput.average, 'throughput.average exists')
Expand Down Expand Up @@ -82,8 +82,8 @@ test('tracker.stop()', (t) => {
t.ok(result.requests.min, 'requests.min exists')
t.ok(result.requests.max, 'requests.max exists')
t.ok(result.requests.total >= result.requests.average * 2 / 100 * 95, 'requests.total exists')
t.ok(result.sent, 'sent exists')
t.ok(result.sent >= result.requests.total, 'total requests made should be more than or equal to completed requests total')
t.ok(result.requests.sent, 'sent exists')
t.ok(result.requests.sent >= result.requests.total, 'total requests made should be more than or equal to completed requests total')

t.ok(result.throughput, 'throughput exists')
t.ok(result.throughput.average, 'throughput.average exists')
Expand Down
8 changes: 4 additions & 4 deletions test/runAmount.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ test('run should only send the expected number of requests', (t) => {
}, (err, res) => {
t.error(err)
t.equal(res.requests.total + res.timeouts, 50146, 'results should match the amount')
t.equal(res.sent, 50146, 'totalRequests should match the amount')
t.equal(res.requests.sent, 50146, 'totalRequests should match the amount')
done = true
})

Expand All @@ -34,7 +34,7 @@ test('run should only send the expected number of requests', (t) => {
}, (err, res) => {
t.error(err)
t.equal(res.requests.total, 20, 'results should match max connection requests * connections')
t.equal(res.sent, 20, 'totalRequests should match the expected amount')
t.equal(res.requests.sent, 20, 'totalRequests should match the expected amount')
})

run({
Expand All @@ -44,7 +44,7 @@ test('run should only send the expected number of requests', (t) => {
}, (err, res) => {
t.error(err)
t.equal(res.requests.total, 10, 'results should match max overall requests')
t.equal(res.sent, 10, 'totalRequests should match the expected amount')
t.equal(res.requests.sent, 10, 'totalRequests should match the expected amount')
})
})

Expand All @@ -60,7 +60,7 @@ test('should shutdown after all amounts timeout', (t) => {
t.error(err)
t.equal(res.errors, 10)
t.equal(res.timeouts, 10)
t.equal(res.sent, 10, 'totalRequests should match the expected amount')
t.equal(res.requests.sent, 10, 'totalRequests should match the expected amount')
t.equal(res.requests.total, 0, 'total completed requests should be 0')
})
})

0 comments on commit 645eed1

Please sign in to comment.