Test custom metrics

👵 fully programmable stress testing framework


Test custom metrics

Table of Contents

During the test function, you can report custom timer metrics using this.start(name) and this.end(name). In cases where you may have multiple asynchronous tasks that you would like to report on, you can use custom metrics to time only portions of your tests. Here is an example:

var async = require('async');

module.exports = {
    test: function(done) {
        var that = this;

        async.parallel([
            function (next) {
                that.start('one');

                setTimeout(function() {
                    that.end('one');
                    next();
                }, 10);
            },
            function (next) {
                that.start('two');

                setTimeout(function() {
                    that.end('two');
                    next();
                }, 20);
            }
        ], function() {
            setTimeout(done, 5);
        });
    }
};

You can also report any arbitrary custom numeric metrics manually:

function rnd(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

module.exports = {
    test: function(done) {
        var that = this;

        that.metric('one', rnd(5, 10));
        that.metric('two', rnd(300, 500));
        that.metric('three', rnd(30, 100));

        that.start('four');

        setTimeout(function() {
            that.end('four');
            done();
        }, rnd(1, 5));
    }
};

Sample output from this would look like this:

Summary:    duration  rate     concurrent  total
            30ms      null     1           4

Latencies:  mean      50       95          99       max
fullTest    3.843ms   3.937ms  5.862ms     5.862ms  5.862ms
four        3.491ms   3.322ms  5.833ms     5.833ms  5.833ms
one         7.250     6.500    10.000      10.000   10.000
two         428.500   418.500  490.000     490.000  490.000
three       77.750    85.500   93.000      93.000   93.000