Skip to content

Commit e0a5c37

Browse files
committed
removing hook for express v5 router
1 parent d4b6895 commit e0a5c37

File tree

3 files changed

+41
-37
lines changed

3 files changed

+41
-37
lines changed

packages/datadog-instrumentations/src/express.js

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -60,23 +60,12 @@ function wrapResponseRender (render) {
6060
addHook({ name: 'express', versions: ['>=4'] }, express => {
6161
shimmer.wrap(express.application, 'handle', wrapHandle)
6262

63-
shimmer.wrap(express.response, 'json', wrapResponseJson)
64-
shimmer.wrap(express.response, 'jsonp', wrapResponseJson)
65-
shimmer.wrap(express.response, 'render', wrapResponseRender)
66-
67-
return express
68-
})
69-
70-
addHook({ name: 'express', versions: ['4'] }, express => {
7163
shimmer.wrap(express.Router, 'use', wrapRouterMethod)
7264
shimmer.wrap(express.Router, 'route', wrapRouterMethod)
7365

74-
return express
75-
})
76-
77-
addHook({ name: 'express', versions: ['>=5.0.0'] }, express => {
78-
shimmer.wrap(express.Router.prototype, 'use', wrapRouterMethod)
79-
shimmer.wrap(express.Router.prototype, 'route', wrapRouterMethod)
66+
shimmer.wrap(express.response, 'json', wrapResponseJson)
67+
shimmer.wrap(express.response, 'jsonp', wrapResponseJson)
68+
shimmer.wrap(express.response, 'render', wrapResponseRender)
8069

8170
return express
8271
})

packages/datadog-plugin-express/test/index.spec.js

Lines changed: 33 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ describe('Plugin', () => {
2828

2929
describe('without http', () => {
3030
before(() => {
31-
return agent.load('express', { client: false })
31+
return agent.load(['express', 'router'], [{ client: false }, {}])
3232
})
3333

3434
after(() => {
@@ -82,7 +82,7 @@ describe('Plugin', () => {
8282

8383
describe('without configuration', () => {
8484
before(() => {
85-
return agent.load(['express', 'http'], [{}, { client: false }])
85+
return agent.load(['express', 'http', 'router'], [{}, { client: false }, {}])
8686
})
8787

8888
after(() => {
@@ -218,6 +218,9 @@ describe('Plugin', () => {
218218
const spans = sort(traces[0])
219219
const isExpress4 = semver.intersects(version, '<5.0.0')
220220
let index = 0
221+
const whichMiddleware = semver.intersects(version, '<5.0.0')
222+
? 'express'
223+
: 'router'
221224

222225
const rootSpan = spans[index++]
223226
expect(rootSpan).to.have.property('resource', 'GET /app/user/:id')
@@ -239,31 +242,31 @@ describe('Plugin', () => {
239242
}
240243

241244
expect(spans[index]).to.have.property('resource', 'named')
242-
expect(spans[index]).to.have.property('name', 'express.middleware')
245+
expect(spans[index]).to.have.property('name', `${whichMiddleware}.middleware`)
243246
expect(spans[index].parent_id.toString()).to.equal(rootSpan.span_id.toString())
244-
expect(spans[index].meta).to.have.property('component', 'express')
247+
expect(spans[index].meta).to.have.property('component', whichMiddleware)
245248
index++
246249

247250
expect(spans[index]).to.have.property('resource', 'router')
248-
expect(spans[index]).to.have.property('name', 'express.middleware')
251+
expect(spans[index]).to.have.property('name', `${whichMiddleware}.middleware`)
249252
expect(spans[index].parent_id.toString()).to.equal(rootSpan.span_id.toString())
250-
expect(spans[index].meta).to.have.property('component', 'express')
253+
expect(spans[index].meta).to.have.property('component', whichMiddleware)
251254
index++
252255

253256
if (isExpress4) {
254257
expect(spans[index].resource).to.match(/^bound\s.*$/)
255258
} else {
256259
expect(spans[index]).to.have.property('resource', 'handle')
257260
}
258-
expect(spans[index]).to.have.property('name', 'express.middleware')
261+
expect(spans[index]).to.have.property('name', `${whichMiddleware}.middleware`)
259262
expect(spans[index].parent_id.toString()).to.equal(spans[index - 1].span_id.toString())
260-
expect(spans[index].meta).to.have.property('component', 'express')
263+
expect(spans[index].meta).to.have.property('component', whichMiddleware)
261264
index++
262265

263266
expect(spans[index]).to.have.property('resource', '<anonymous>')
264-
expect(spans[index]).to.have.property('name', 'express.middleware')
267+
expect(spans[index]).to.have.property('name', `${whichMiddleware}.middleware`)
265268
expect(spans[index].parent_id.toString()).to.equal(spans[index - 1].span_id.toString())
266-
expect(spans[index].meta).to.have.property('component', 'express')
269+
expect(spans[index].meta).to.have.property('component', whichMiddleware)
267270

268271
expect(index).to.equal(spans.length - 1)
269272
})
@@ -302,13 +305,16 @@ describe('Plugin', () => {
302305
const spans = sort(traces[0])
303306

304307
const breakingSpanIndex = semver.intersects(version, '<5.0.0') ? 3 : 1
308+
const whichMiddleware = semver.intersects(version, '<5.0.0')
309+
? 'express'
310+
: 'router'
305311

306312
expect(spans[0]).to.have.property('resource', 'GET /user/:id')
307313
expect(spans[0]).to.have.property('name', 'express.request')
308314
expect(spans[0].meta).to.have.property('component', 'express')
309315
expect(spans[breakingSpanIndex]).to.have.property('resource', 'breaking')
310-
expect(spans[breakingSpanIndex]).to.have.property('name', 'express.middleware')
311-
expect(spans[breakingSpanIndex].meta).to.have.property('component', 'express')
316+
expect(spans[breakingSpanIndex]).to.have.property('name', `${whichMiddleware}.middleware`)
317+
expect(spans[breakingSpanIndex].meta).to.have.property('component', whichMiddleware)
312318
})
313319
.then(done)
314320
.catch(done)
@@ -347,12 +353,15 @@ describe('Plugin', () => {
347353
.assertSomeTraces(traces => {
348354
const spans = sort(traces[0])
349355
const errorSpanIndex = semver.intersects(version, '<5.0.0') ? 4 : 2
356+
const whichMiddleware = semver.intersects(version, '<5.0.0')
357+
? 'express'
358+
: 'router'
350359

351360
expect(spans[0]).to.have.property('name', 'express.request')
352-
expect(spans[errorSpanIndex]).to.have.property('name', 'express.middleware')
361+
expect(spans[errorSpanIndex]).to.have.property('name', `${whichMiddleware}.middleware`)
353362
expect(spans[errorSpanIndex].meta).to.have.property(ERROR_TYPE, error.name)
354363
expect(spans[0].meta).to.have.property('component', 'express')
355-
expect(spans[errorSpanIndex].meta).to.have.property('component', 'express')
364+
expect(spans[errorSpanIndex].meta).to.have.property('component', whichMiddleware)
356365
})
357366
.then(done)
358367
.catch(done)
@@ -1164,6 +1173,9 @@ describe('Plugin', () => {
11641173
.assertSomeTraces(traces => {
11651174
const spans = sort(traces[0])
11661175
const secondErrorIndex = spans.length - 2
1176+
const whichMiddleware = semver.intersects(version, '<5.0.0')
1177+
? 'express'
1178+
: 'router'
11671179

11681180
expect(spans[0]).to.have.property('error', 1)
11691181
expect(spans[0].meta).to.have.property(ERROR_TYPE, error.name)
@@ -1174,7 +1186,7 @@ describe('Plugin', () => {
11741186
expect(spans[secondErrorIndex].meta).to.have.property(ERROR_TYPE, error.name)
11751187
expect(spans[secondErrorIndex].meta).to.have.property(ERROR_MESSAGE, error.message)
11761188
expect(spans[secondErrorIndex].meta).to.have.property(ERROR_STACK, error.stack)
1177-
expect(spans[secondErrorIndex].meta).to.have.property('component', 'express')
1189+
expect(spans[secondErrorIndex].meta).to.have.property('component', whichMiddleware)
11781190
})
11791191
.then(done)
11801192
.catch(done)
@@ -1436,12 +1448,12 @@ describe('Plugin', () => {
14361448

14371449
describe('with configuration', () => {
14381450
before(() => {
1439-
return agent.load(['express', 'http'], [{
1451+
return agent.load(['express', 'http', 'router'], [{
14401452
service: 'custom',
14411453
validateStatus: code => code < 400,
14421454
headers: ['User-Agent'],
14431455
blocklist: ['/health']
1444-
}, { client: false }])
1456+
}, { client: false }, {}])
14451457
})
14461458

14471459
after(() => {
@@ -1564,9 +1576,9 @@ describe('Plugin', () => {
15641576

15651577
describe('with configuration for middleware disabled', () => {
15661578
before(() => {
1567-
return agent.load(['express', 'http'], [{
1579+
return agent.load(['express', 'http', 'router'], [{
15681580
middleware: false
1569-
}, { client: false }])
1581+
}, { client: false }, { middleware: false }])
15701582
})
15711583

15721584
after(() => {
@@ -1582,8 +1594,8 @@ describe('Plugin', () => {
15821594

15831595
let span
15841596

1585-
app.use((req, res, next) => {
1586-
span = tracer.scope().active()
1597+
app.use(async (req, res, next) => {
1598+
span = await tracer.scope().active()
15871599
next()
15881600
})
15891601

packages/datadog-plugin-express/test/integration-test/client.spec.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,10 @@ describe('esm', () => {
3939
describe('with DD_TRACE_MIDDLEWARE_TRACING_ENABLED unset', () => {
4040
it('is instrumented', async () => {
4141
proc = await spawnPluginIntegrationTestProc(sandbox.folder, 'server.mjs', agent.port)
42-
const numberOfSpans = semver.intersects(version, '<5.0.0') ? 4 : 3
42+
const numberOfSpans = semver.intersects(version, '<5.0.0') ? 4 : 2
43+
const whichMiddleware = semver.intersects(version, '<5.0.0')
44+
? 'express'
45+
: 'router'
4346

4447
return curlAndAssertMessage(agent, proc, ({ headers, payload }) => {
4548
assert.propertyVal(headers, 'host', `127.0.0.1:${agent.port}`)
@@ -48,7 +51,7 @@ describe('esm', () => {
4851
assert.isArray(payload[0])
4952
assert.strictEqual(payload[0].length, numberOfSpans)
5053
assert.propertyVal(payload[0][0], 'name', 'express.request')
51-
assert.propertyVal(payload[0][1], 'name', 'express.middleware')
54+
assert.propertyVal(payload[0][1], 'name', `${whichMiddleware}.middleware`)
5255
})
5356
}).timeout(50000)
5457
})

0 commit comments

Comments
 (0)