UNPKG

1.39 kBPlain TextView Raw
1// TODO
2import * as chai from 'chai';
3import { expect } from 'chai';
4import chaiHttp = require('chai-http');
5import 'mocha';
6
7import * as bodyParser from 'body-parser';
8import * as express from 'express';
9
10import { metrics } from '../src';
11
12chai.use(chaiHttp);
13
14describe('API metrics', () => {
15 const app = metrics.collectAPIMetrics(express());
16 app
17 .use(bodyParser.json())
18 .post('/echo', (req: express.Request, res: express.Response) => {
19 res.send(req.body);
20 });
21 const server = app.listen(process.env.PORT || 3001);
22
23 const requester = chai.request(app).keepOpen();
24
25 beforeEach(() => {
26 metrics.reset();
27 });
28
29 after(() => {
30 metrics.clear();
31 server.close();
32 });
33
34 it('should report all metrics after 1 request', done => {
35 requester
36 .post('/echo')
37 .type('json')
38 .send({ hello: 'world' })
39 .end((err, res) => {
40 expect(err).to.be.null;
41 expect(res).to.have.status(200);
42 const output = metrics.output();
43 const metricsRegexps = [
44 /api_arrival_total{state="completed",statusCode="200"} 1/,
45 /api_bytes_read_bucket{le="\+Inf",state="completed",statusCode="200"} 1/,
46 /api_bytes_written_bucket{le="\+Inf",state="completed",statusCode="200"} 1/,
47 /api_latency_seconds_count{state="completed",statusCode="200"} 1/,
48 ];
49 metricsRegexps.forEach(re => {
50 expect(re.test(output)).to.be.true;
51 });
52 done();
53 });
54 });
55});