@tlrg/middleware-js
Version:
Node module for sharing common middlewares.
75 lines (58 loc) • 1.89 kB
JavaScript
require('chai').should();
var dgram = require('dgram');
var udpServer = dgram.createSocket('udp4');
var express = require('express');
var request = require('request');
var StatsdClient = require('statsd-client');
var hostname = require('os').hostname();
var metrics = new StatsdClient({
host: 'localhost',
port: 8326,
prefix: hostname + '.moonstick.'
});
var hostname = require('os').hostname();
var requestStats = require('../lib/middlewares/requestStats');
describe('Request Stats', function () {
var udpLog = [];
var app, server;
before(function (done) {
udpServer.once('listening', function () {
// var address = udpServer.address();
done();
});
udpServer.bind(8326, 'localhost');
});
beforeEach(function () {
udpLog = [];
app = express();
app.set('metrics', metrics);
app.use(requestStats);
app.get('/', function (req, res) {
res.status(200).send('sup');
});
server = app.listen(4391);
});
afterEach(function () {
server.close();
});
it('should emit all stats over udp', function (done) {
var expectedMessages = [
hostname + '.moonstick.active_requests:1|c',
hostname + '.moonstick.requests_handled:1|c',
hostname + '.moonstick.active_requests:-1|c',
hostname + '.moonstick.requestTime:1|ms'
];
udpServer.on('message', function (msg) {
// Set all timers to 1
msg = msg.toString().replace(/:[0-9\.]+\|ms/, ':1|ms');
var msgs = msg.split('\n');
msgs.should.deep.equal(expectedMessages);
done();
});
request.get('http://localhost:4391/', function (err) {
if (err) {
return done(err);
}
});
});
});