| @ -0,0 +1,83 @@ | |||
| var assert = require("assert"); | |||
| var client = require("../../lib/client"); | |||
| var extend = require("extend"); | |||
| var metric = require("../../lib/api/metric"); | |||
| var sinon = require("sinon"); | |||
| describe("api/metrics", function(){ | |||
| var stub_request; | |||
| beforeEach(function(){ | |||
| // Setup `client.request` as a stub | |||
| stub_request = sinon.stub(client, "request"); | |||
| }); | |||
| afterEach(function(){ | |||
| // Reset the original `client.request` | |||
| stub_request.restore(); | |||
| stub_request = null; | |||
| }); | |||
| describe("#send", function(){ | |||
| it("should make a valid api call", function(){ | |||
| // Make our api call | |||
| var now = parseInt(new Date().getTime() / 1000); | |||
| metric.send("metric.send", [now, 500]); | |||
| // Assert we properly called `client.request` | |||
| assert(stub_request.calledOnce); | |||
| var call_args = stub_request.getCall(0).args; | |||
| // Method and endpoint are correct | |||
| assert.equal(call_args[0], "POST"); | |||
| assert.equal(call_args[1], "/series"); | |||
| // Properly formatted body | |||
| // { body: series: [ {metric: "metric.send", host: undefined, tags: undefined, metric_type: undefined} ] } | |||
| // DEV: host/tags/metric_type are optional and should be undefined for this case | |||
| var data = call_args[2]; | |||
| assert(data.hasOwnProperty("body")); | |||
| assert(data.body.hasOwnProperty("series")); | |||
| // Assert we have only 1 series | |||
| // series = [ {metric: "", ...}, ... ] | |||
| var series = data.body.series; | |||
| assert(Array.isArray(series)); | |||
| assert.equal(series.length, 1); | |||
| // Assert the first series is properly formatted | |||
| // first_series = {metric: "", points: [], ...} | |||
| var first_series = series[0] | |||
| assert.equal(first_series.metric, "metric.send"); | |||
| assert(Array.isArray(first_series.points)); | |||
| assert.deepEqual(first_series.points, [[now, 500]]); | |||
| // These keys are optional and should be set, but undefined | |||
| assert(first_series.hasOwnProperty("host")); | |||
| assert.equal(first_series.host, undefined); | |||
| assert(first_series.hasOwnProperty("tags")); | |||
| assert.equal(first_series.tags, undefined); | |||
| assert(first_series.hasOwnProperty("metric_type")); | |||
| assert.equal(first_series.metric_type, undefined); | |||
| }); | |||
| it("should properly normalize values to points", function(){ | |||
| // Make our api call | |||
| metric.send("metrics.send.normalize", 500); | |||
| // Assert we called `client.request` with the correct `points` | |||
| assert(stub_request.calledOnce); | |||
| var call_args = stub_request.getCall(0).args; | |||
| // { body: series: [ {points: [], }, ] } | |||
| var body = call_args[2].body; | |||
| assert.equal(body.series.length, 1); | |||
| // points = [ [<timestamp>, 500] ] | |||
| var points = body.series[0].points; | |||
| assert(Array.isArray(points)); | |||
| assert.equal(points.length, 1); | |||
| // point = [<timestamp>, 500] | |||
| var point = points[0]; | |||
| assert(Array.isArray(point)); | |||
| assert.equal(point.length, 2); | |||
| assert.equal(point[1], 500); | |||
| }); | |||
| }); | |||
| }); | |||