UNPKG

realm-object-server

Version:

Realm Object Server

103 lines 5.14 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const dgram = require("dgram"); const chai_1 = require("chai"); const shared_1 = require("../shared"); const StatsdReceiver_1 = require("./StatsdReceiver"); const Statsd_1 = require("./Statsd"); describe("StatsdReceiver", () => { let socket; const logger = new shared_1.ConsoleLogger("warn"); const send = (message) => { return new Promise((resolve, reject) => { const client = dgram.createSocket("udp4"); const address = socket.address(); if (typeof address !== "object") { throw new Error("Expected socket addresses to be objects"); } client.send(message, address.port, address.address, (err) => { client.close(); if (err) { reject(err); } else { resolve(); } }); }); }; const sendAndCheck = (receiver, message, check) => { return new Promise((resolve, reject) => { receiver.once("metric", (metric) => { try { check(metric); } catch (err) { reject(err); } resolve(); }); send(message).catch(reject); }); }; afterEach(() => { if (socket) { socket.close(); socket = undefined; } }); it("can start", () => __awaiter(this, void 0, void 0, function* () { const receiver = new StatsdReceiver_1.StatsdReceiver({ logger }); socket = yield receiver.start(); })); it("can receive a simple counter metric", () => __awaiter(this, void 0, void 0, function* () { const receiver = new StatsdReceiver_1.StatsdReceiver({ logger }); socket = yield receiver.start(); yield sendAndCheck(receiver, "a.simple.metric:10|c", (metric) => { chai_1.expect(metric).to.have.all.keys("name", "labels", "stats"); chai_1.expect(metric.name).to.equal("a.simple.metric"); chai_1.expect(metric.labels).to.be.an("object").empty; chai_1.expect(metric.stats).to.be.an("array").with.length(1); chai_1.expect(metric.stats[0]).to.be.an("object").with.all.keys("type", "value"); chai_1.expect(metric.stats[0].type).to.equal(Statsd_1.MetricType.Counter); chai_1.expect(metric.stats[0].value).to.equal("10"); }); })); it("can receive a counter metric with multiple stats", () => __awaiter(this, void 0, void 0, function* () { const receiver = new StatsdReceiver_1.StatsdReceiver({ logger }); socket = yield receiver.start(); yield sendAndCheck(receiver, "a.metric.with.multiple.stats:10|c:+13|g:1337|ms", (metric) => { chai_1.expect(metric.name).to.equal("a.metric.with.multiple.stats"); chai_1.expect(metric.stats).to.be.an("array").with.length(3); chai_1.expect(metric.labels).to.be.an("object").empty; chai_1.expect(metric.stats[0].type).to.equal(Statsd_1.MetricType.Counter); chai_1.expect(metric.stats[0].value).to.equal("10"); chai_1.expect(metric.stats[1].type).to.equal(Statsd_1.MetricType.Gauge); chai_1.expect(metric.stats[1].value).to.equal("+13"); chai_1.expect(metric.stats[2].type).to.equal(Statsd_1.MetricType.Histogram); chai_1.expect(metric.stats[2].value).to.equal("1337"); }); })); it("can receive a metric with multiple labels", () => __awaiter(this, void 0, void 0, function* () { const receiver = new StatsdReceiver_1.StatsdReceiver({ logger }); socket = yield receiver.start(); yield sendAndCheck(receiver, "my.wonderful.metric.name,label1=testing,label2=labels:10|c", (metric) => { chai_1.expect(metric.name).to.equal("my.wonderful.metric.name"); chai_1.expect(metric.labels).to.be.an("object").with.all.keys("label1", "label2"); chai_1.expect(metric.labels.label1).to.equal("testing"); chai_1.expect(metric.labels.label2).to.equal("labels"); chai_1.expect(metric.stats).to.be.an("array").with.length(1); chai_1.expect(metric.stats[0].type).to.equal(Statsd_1.MetricType.Counter); chai_1.expect(metric.stats[0].value).to.equal("10"); }); })); }); //# sourceMappingURL=StatsdReceiver.spec.js.map