DefinitelyTyped/types/statsd-client/statsd-client-tests.ts
2017-11-28 17:48:14 -08:00

84 lines
2.8 KiB
TypeScript

import SDC = require("statsd-client");
let sdc = new SDC( { host: 'statsd.example.com' });
const timer = new Date();
sdc.increment('some.counter'); // Increment by one.
sdc.gauge('some.gauge', 10); // Set gauge to 10
sdc.timing('some.timer', timer); // Calculates time diff
sdc.close(); // Optional - stop NOW
// Initialization
sdc = new SDC({host: 'statsd.example.com', port: 8124, debug: true, tags: {foo: 'bar'}});
// Counting stuff
sdc.increment('systemname.subsystem.value'); // Increment by one
sdc.decrement('systemname.subsystem.value', -10); // Decrement by 10
sdc.counter('systemname.subsystem.value', 100); // Increment by 100
sdc.increment('systemname.subsystem.value.tagged', 1, {biz: 'baz'}); // Increment tagged metric by one
sdc.decrement('systemname.subsystem.value.tagged', -10, {biz: 'baz'}); // Decrement tagged metric by 10
sdc.counter('systemname.subsystem.value.tagged', 100, {biz: 'baz'}); // Increment tagged metric by 100
// Gauges
sdc.gauge('what.you.gauge', 100);
sdc.gaugeDelta('what.you.gauge', 20); // Will now count 120
sdc.gaugeDelta('what.you.gauge', -70); // Will now count 50
sdc.gauge('what.you.gauge', 10); // Will now count 10
sdc.gauge('what.you.gauge.tagged', 100, {biz: 'baz'});
sdc.gaugeDelta('what.you.gauge.tagged', 20, {biz: 'baz'}); // Will now count 120
sdc.gaugeDelta('what.you.gauge.tagged', -70, {biz: 'baz'}); // Will now count 50
sdc.gauge('what.you.gauge.tagged', 10, {biz: 'baz'}); // Will now count 10
// Set
sdc.set('your.set', 200);
sdc.set('your.set.tagged', 200, {biz: 'baz'});
// Timeouts
let start = new Date();
setTimeout(function () {
sdc.timing('random.timeout', start);
}, 100 * Math.random());
setTimeout(function () {
sdc.timing('random.timeout.tagged', start, {biz: 'baz'});
}, 100 * Math.random());
// Histogram
sdc.histogram('histogram.stuff', 40);
sdc.histogram('histogram.stuff', 44, {biz: 'baz'});
// Raw string output
sdc.raw('my.metric:123|g');
// Internal tags formatting
sdc.formatTags({biz: 'baz'});
// Stopping gracefully
start = new Date();
setTimeout(function () {
sdc.timing('random.timeout', start); // 2 - implicitly re-creates socket.
sdc.close(); // 3 - Closes socket after last use.
}, 100 * Math.random());
sdc.close(); // 1 - Closes socket early.
// Prefix magic
// Create generic client
sdc = new SDC({host: 'statsd.example.com', prefix: 'systemname'});
sdc.increment('foo'); // Increments 'systemname.foo'
// ... do great stuff ...
// Subsystem A
const sdcA = sdc.getChildClient('a');
sdcA.increment('foo'); // Increments 'systemname.a.foo'
// Subsystem B
const sdcB = sdc.getChildClient('b');
sdcB.increment('foo'); // Increments 'systemname.b.foo'
// Express middleware helper
sdc.helpers.getExpressMiddleware('express.metrics', {timeByUrl: true}); // Returns an express handler