Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- "use strict";
- var dgram = require('dgram');
- var assert = require('assert');
- var net = require('net');
- var StatsD = require('../').StatsD;
- /**
- * Since sampling uses random, we need to patch Math.random() to always give
- * a consistent result
- */
- Math.random = function () {
- return 0.42;
- };
- function createTCPServer(onListening) {
- var server = net.createServer(function (socket) {
- socket.setEncoding('ascii');
- socket.on('data', function (data) {
- var metrics;
- if (data) {
- metrics = data.split('\n').filter(function (part) {
- return part !== '';
- });
- server.emit('metrics', metrics);
- }
- });
- });
- server.on('listening', function () {
- onListening(server.address());
- });
- server.listen(0, '127.0.0.1');
- return server;
- }
- function createUDPServer(onListening){
- var server = dgram.createSocket("udp4");
- server.on('message', function(message){
- var metrics = message.toString();
- server.emit('metrics', metrics);
- });
- server.on('listening', function(){
- onListening(server.address());
- });
- server.bind(0, '127.0.0.1');
- return server;
- }
- describe('StatsD', function () {
- var server;
- var statsd;
- afterEach(function () {
- // Remove it from the namespace to not fail other tests
- delete global.statsd;
- statsd = null;
- });
- describe('#globalTags TCP', function () {
- it('should not add global tags if they are not specified', function (done) {
- server = createTCPServer(function (address) {
- statsd = new StatsD({
- host: address.address,
- port: address.port,
- protocol: 'tcp'
- });
- statsd.increment('test');
- });
- server.on('metrics', function (metrics) {
- assert.equal(metrics, 'test:1|c');
- server.close();
- done();
- });
- });
- it('should add global tags if they are specified', function (done) {
- server = createTCPServer(function (address) {
- statsd = new StatsD({
- host: address.address,
- port: address.port,
- global_tags: ['gtag'],
- protocol: 'tcp'
- });
- statsd.increment('test');
- });
- server.on('metrics', function (metrics) {
- assert.equal(metrics, 'test:1|c|#gtag');
- server.close();
- done();
- });
- });
- it('should combine global tags and metric tags', function (done) {
- server = createTCPServer(function (address) {
- statsd = new StatsD({
- host: address.address,
- port: address.port,
- global_tags: ['gtag'],
- protocol: 'tcp'
- });
- statsd.increment('test', 1337, ['foo']);
- });
- server.on('metrics', function (metrics) {
- assert.equal(metrics, 'test:1337|c|#gtag,foo');
- server.close();
- done();
- });
- });
- });
- describe('#globalTags UDP', function () {
- it('should not add global tags if they are not specified', function (done) {
- server = createUDPServer(function (address) {
- console.log(address);
- statsd = new StatsD({
- host: address.address,
- port: address.port,
- });
- statsd.increment('test');
- });
- server.on('metrics', function (metrics) {
- assert.equal(metrics, 'test:1|c');
- server.close();
- done();
- });
- });
- it('should add global tags if they are specified', function (done) {
- server = createUDPServer(function (address) {
- statsd = new StatsD({
- host: address.address,
- port: address.port,
- global_tags: ['gtag'],
- });
- statsd.increment('test');
- });
- server.on('metrics', function (metrics) {
- assert.equal(metrics, 'test:1|c|#gtag');
- server.close();
- done();
- });
- });
- it('should combine global tags and metric tags', function (done) {
- server = createUDPServer(function (address) {
- statsd = new StatsD({
- host: address.address,
- port: address.port,
- global_tags: ['gtag'],
- });
- statsd.increment('test', 1337, ['foo']);
- });
- server.on('metrics', function (metrics) {
- assert.equal(metrics, 'test:1337|c|#gtag,foo');
- server.close();
- done();
- });
- });
- });
- }.bind(null, StatsD));
Add Comment
Please, Sign In to add comment