Skip to content

Commit b08c313

Browse files
committed
adding test + fix spelling mistake
1 parent 41da576 commit b08c313

File tree

5 files changed

+46
-19
lines changed

5 files changed

+46
-19
lines changed

lib/express.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
const metrics = require('./metrics')
22

3-
function middleware (request, response, done) {
3+
function middleware(request, response, done) {
44
var start = process.hrtime()
55

6-
response.on('finish', function () {
6+
response.on('finish', function() {
77
metrics.observe(request.method, request.path, response.statusCode, start)
88
})
99

1010
return done()
1111
};
1212

13-
function instrument (server, options) {
13+
function instrument(server, options) {
1414
server.use(middleware)
15-
let mertricsEndpointServer = options.metricsServer || server;
16-
mertricsEndpointServer.get(options.url, (req, res) => {
15+
let metricsEndpointServer = options.metricsServer || server;
16+
metricsEndpointServer.get(options.url, (req, res) => {
1717
res.header('content-type', 'text/plain; charset=utf-8')
1818
return res.send(metrics.summary())
1919
})
2020
}
2121

22-
function instrumentable (server) {
22+
function instrumentable(server) {
2323
return server && server.defaultConfiguration && server.use
2424
}
2525

lib/http.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const defaults = require('./defaults')
22
const metrics = require('./metrics')
33

4-
function sendMetrics (request, response) {
4+
function sendMetrics(request, response) {
55
response.writeHead(200, {
66
'Content-Type': 'text/plain; charset=utf-8'
77
})
@@ -10,16 +10,16 @@ function sendMetrics (request, response) {
1010
response.end()
1111
}
1212

13-
function observeMetrics (request, response) {
13+
function observeMetrics(request, response) {
1414
var start = process.hrtime()
1515
response.on('finish', () => {
1616
metrics.observe(request.method, request.url, response.statusCode, start)
1717
})
1818
}
1919

20-
function instrument (server, options) {
21-
let mertricsEndpointServer = options.metricsServer || server;
22-
mertricsEndpointServer.on('request', (request, response) => {
20+
function instrument(server, options) {
21+
let metricsEndpointServer = options.metricsServer || server;
22+
metricsEndpointServer.on('request', (request, response) => {
2323
if (request.url === options.url) {
2424
sendMetrics(request, response)
2525
} else {
@@ -28,7 +28,7 @@ function instrument (server, options) {
2828
})
2929
}
3030

31-
function instrumentable (server) {
31+
function instrumentable(server) {
3232
return server
3333
}
3434

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "epimetheus",
3-
"version": "1.0.56",
3+
"version": "0.0.1",
44
"description": "node middleware to automatically instrument node applications for consumption by prometheus",
55
"main": "index.js",
66
"scripts": {

test/assert-expectations.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const request = require('request')
22
const should = require('chai').should()
33

4-
module.exports = function (options) {
4+
module.exports = function(options) {
55
it('should return 200 for /', (done) => {
66
request('http://localhost:3000/', (e, r, b) => {
77
r.statusCode.should.equal(200)
@@ -17,7 +17,8 @@ module.exports = function (options) {
1717
})
1818

1919
it('should return 200 for ' + options.url, (done) => {
20-
request('http://localhost:3000' + options.url, (e, r, b) => {
20+
let metricsPort = options.metricsServer ? 3001 : 3000;
21+
request('http://localhost:' + metricsPort + options.url, (e, r, b) => {
2122
r.statusCode.should.equal(200)
2223
should.exist(r.headers['content-type'])
2324
r.headers['content-type'].should.equal('text/plain; charset=utf-8')
@@ -29,4 +30,13 @@ module.exports = function (options) {
2930
return done(e)
3031
})
3132
})
33+
34+
if (options.metricsServer) {
35+
it('should return 404 for /metrics on 3000', (done) => {
36+
request('http://localhost:3000/metrics', (e, r, b) => {
37+
r.statusCode.should.equal(404)
38+
return done(e)
39+
});
40+
});
41+
}
3242
}

test/express.js

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ const epithemeus = require('../index')
44
const assertExpectations = require('./assert-expectations')
55
const assert = require('chai').assert
66
const libExpress = require('../lib/express')
7+
const request = require('request')
8+
const should = require('chai').should()
79

8-
function setup (options) {
10+
function setup(options) {
911
return describe('express ' + options.url, () => {
1012
before((done) => {
1113
const app = express()
@@ -16,7 +18,13 @@ function setup (options) {
1618
app.get('/resource/:id', (req, res) => {
1719
res.send()
1820
})
19-
this.server = app.listen(3000, done)
21+
this.server = app.listen(3000, () => {
22+
if (options.metricsServer) {
23+
options.metricsServer.listen(3001, done);
24+
} else {
25+
done()
26+
}
27+
});
2028
})
2129

2230
after((done) => {
@@ -32,11 +40,18 @@ setup({
3240
url: '/xxx'
3341
})
3442

43+
setup({
44+
url: '/metrics',
45+
metricsServer: express()
46+
})
47+
3548
describe('express should check "instrumentablity" properly', () => {
3649
it('should return true when express conditions are correct', () => {
3750
// Arrange
3851
const server = () => {}
39-
server.defaultConfiguration = { sample: true }
52+
server.defaultConfiguration = {
53+
sample: true
54+
}
4055
server.use = () => {}
4156

4257
// Act
@@ -69,7 +84,9 @@ describe('express should check "instrumentablity" properly', () => {
6984
it('should return false when server does not have a use function', () => {
7085
// Arrange
7186
const server = () => {}
72-
server.defaultConfiguration = { sample: true }
87+
server.defaultConfiguration = {
88+
sample: true
89+
}
7390

7491
// Act
7592
const actual = libExpress.instrumentable(server)

0 commit comments

Comments
 (0)