UNPKG

loadtest

Version:

Run load tests for your web application. Mostly ab-compatible interface, with an option to force requests per second. Includes an API for automated load testing.

106 lines (84 loc) 3.12 kB
# `statusCallback` In-depth examples for the `statusCallback` API parameter. ## `options.statusCallback(error, result)` This function, if present, is invoked after every request is finished. It uses the old-style convention `(error, result)`: the `error` is only present if the request fails, while the `result` is always present and contains info about the request. **Warning**: The format for `statusCallback` has changed in version 7+. The third parameter `latency` has been removed due to performance reasons. **Warning**: The format for `statusCallback` has changed in version 2.0.0 onwards. It used to be `statusCallback(latency, result, error)`, it has been changed to conform to the usual Node.js standard. ### `result` format The `result` parameter has the following attributes, always present: * `host`: the host where the request was sent. * `path`: the URL path to send the request. * `method: HTTP method used. * `statusCode: HTTP status code, 200 is OK. * `body: content received from the server. * `headers: sent by the server. * `requestElapsed`: time in milliseconds it took to complete this individual request. * `requestIndex`: 0-based index of this particular request in the sequence of all requests to be made. * `instanceIndex`: the `loadtest(...)` instance index. This is useful if you call `loadtest()` more than once. ### Example Result A sample result might look like this: ```javascript { host: 'localhost', path: '/', method: 'GET', statusCode: 200, body: '<html><body>hi</body></html>', headers: [...], requestElapsed: 248, requestIndex: 8748, instanceIndex: 5, } ``` ## Full example A full example of how to use the `statusCallback` follows: ```javascript import {loadTest} from 'loadtest' function statusCallback(error, result, latency) { console.log('Current latency %j, result %j, error %j', latency, result, error) console.log('----') console.log('Request elapsed milliseconds: ', result.requestElapsed) console.log('Request index: ', result.requestIndex) console.log('Request loadtest() instance index: ', result.instanceIndex) } const options = { url: 'http://localhost:8000', maxRequests: 1000, statusCallback: statusCallback } loadTest(options, function(error) { if (error) { return console.error('Got an error: %s', error) } console.log('Tests run successfully') }) ``` ### Adding Request Data In some situations request data needs to be available in the statusCallBack. This data can be assigned to `request.labels` in the requestGenerator: ```javascript const options = { // ... requestGenerator: (params, options, client, callback) => { // ... const randomInputData = Math.random().toString().substr(2, 8); const message = JSON.stringify({ randomInputData }) const request = client(options, callback); request.labels = randomInputData; request.write(message); return request; } }; ``` Then in statusCallBack the labels can be accessed through `result.labels`: ```javascript function statusCallback(error, result, latency) { console.log(result.labels); } ```