Skip to content

Commit 540368b

Browse files
committed
removing hook for express v5 router
1 parent fa783b4 commit 540368b

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
@@ -27,7 +27,7 @@ describe('Plugin', () => {
2727

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

3333
after(() => {
@@ -81,7 +81,7 @@ describe('Plugin', () => {
8181

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

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

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

240243
expect(spans[index]).to.have.property('resource', 'named')
241-
expect(spans[index]).to.have.property('name', 'express.middleware')
244+
expect(spans[index]).to.have.property('name', `${whichMiddleware}.middleware`)
242245
expect(spans[index].parent_id.toString()).to.equal(rootSpan.span_id.toString())
243-
expect(spans[index].meta).to.have.property('component', 'express')
246+
expect(spans[index].meta).to.have.property('component', whichMiddleware)
244247
index++
245248

246249
expect(spans[index]).to.have.property('resource', 'router')
247-
expect(spans[index]).to.have.property('name', 'express.middleware')
250+
expect(spans[index]).to.have.property('name', `${whichMiddleware}.middleware`)
248251
expect(spans[index].parent_id.toString()).to.equal(rootSpan.span_id.toString())
249-
expect(spans[index].meta).to.have.property('component', 'express')
252+
expect(spans[index].meta).to.have.property('component', whichMiddleware)
250253
index++
251254

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

262265
expect(spans[index]).to.have.property('resource', '<anonymous>')
263-
expect(spans[index]).to.have.property('name', 'express.middleware')
266+
expect(spans[index]).to.have.property('name', `${whichMiddleware}.middleware`)
264267
expect(spans[index].parent_id.toString()).to.equal(spans[index - 1].span_id.toString())
265-
expect(spans[index].meta).to.have.property('component', 'express')
268+
expect(spans[index].meta).to.have.property('component', whichMiddleware)
266269

267270
expect(index).to.equal(spans.length - 1)
268271
})
@@ -301,13 +304,16 @@ describe('Plugin', () => {
301304
const spans = sort(traces[0])
302305

303306
const breakingSpanIndex = semver.intersects(version, '<5.0.0') ? 3 : 1
307+
const whichMiddleware = semver.intersects(version, '<5.0.0')
308+
? 'express'
309+
: 'router'
304310

305311
expect(spans[0]).to.have.property('resource', 'GET /user/:id')
306312
expect(spans[0]).to.have.property('name', 'express.request')
307313
expect(spans[0].meta).to.have.property('component', 'express')
308314
expect(spans[breakingSpanIndex]).to.have.property('resource', 'breaking')
309-
expect(spans[breakingSpanIndex]).to.have.property('name', 'express.middleware')
310-
expect(spans[breakingSpanIndex].meta).to.have.property('component', 'express')
315+
expect(spans[breakingSpanIndex]).to.have.property('name', `${whichMiddleware}.middleware`)
316+
expect(spans[breakingSpanIndex].meta).to.have.property('component', whichMiddleware)
311317
})
312318
.then(done)
313319
.catch(done)
@@ -346,12 +352,15 @@ describe('Plugin', () => {
346352
.assertSomeTraces(traces => {
347353
const spans = sort(traces[0])
348354
const errorSpanIndex = semver.intersects(version, '<5.0.0') ? 4 : 2
355+
const whichMiddleware = semver.intersects(version, '<5.0.0')
356+
? 'express'
357+
: 'router'
349358

350359
expect(spans[0]).to.have.property('name', 'express.request')
351-
expect(spans[errorSpanIndex]).to.have.property('name', 'express.middleware')
360+
expect(spans[errorSpanIndex]).to.have.property('name', `${whichMiddleware}.middleware`)
352361
expect(spans[errorSpanIndex].meta).to.have.property(ERROR_TYPE, error.name)
353362
expect(spans[0].meta).to.have.property('component', 'express')
354-
expect(spans[errorSpanIndex].meta).to.have.property('component', 'express')
363+
expect(spans[errorSpanIndex].meta).to.have.property('component', whichMiddleware)
355364
})
356365
.then(done)
357366
.catch(done)
@@ -1163,6 +1172,9 @@ describe('Plugin', () => {
11631172
.assertSomeTraces(traces => {
11641173
const spans = sort(traces[0])
11651174
const secondErrorIndex = spans.length - 2
1175+
const whichMiddleware = semver.intersects(version, '<5.0.0')
1176+
? 'express'
1177+
: 'router'
11661178

11671179
expect(spans[0]).to.have.property('error', 1)
11681180
expect(spans[0].meta).to.have.property(ERROR_TYPE, error.name)
@@ -1173,7 +1185,7 @@ describe('Plugin', () => {
11731185
expect(spans[secondErrorIndex].meta).to.have.property(ERROR_TYPE, error.name)
11741186
expect(spans[secondErrorIndex].meta).to.have.property(ERROR_MESSAGE, error.message)
11751187
expect(spans[secondErrorIndex].meta).to.have.property(ERROR_STACK, error.stack)
1176-
expect(spans[secondErrorIndex].meta).to.have.property('component', 'express')
1188+
expect(spans[secondErrorIndex].meta).to.have.property('component', whichMiddleware)
11771189
})
11781190
.then(done)
11791191
.catch(done)
@@ -1435,12 +1447,12 @@ describe('Plugin', () => {
14351447

14361448
describe('with configuration', () => {
14371449
before(() => {
1438-
return agent.load(['express', 'http'], [{
1450+
return agent.load(['express', 'http', 'router'], [{
14391451
service: 'custom',
14401452
validateStatus: code => code < 400,
14411453
headers: ['User-Agent'],
14421454
blocklist: ['/health']
1443-
}, { client: false }])
1455+
}, { client: false }, {}])
14441456
})
14451457

14461458
after(() => {
@@ -1563,9 +1575,9 @@ describe('Plugin', () => {
15631575

15641576
describe('with configuration for middleware disabled', () => {
15651577
before(() => {
1566-
return agent.load(['express', 'http'], [{
1578+
return agent.load(['express', 'http', 'router'], [{
15671579
middleware: false
1568-
}, { client: false }])
1580+
}, { client: false }, { middleware: false }])
15691581
})
15701582

15711583
after(() => {
@@ -1581,8 +1593,8 @@ describe('Plugin', () => {
15811593

15821594
let span
15831595

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

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

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

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

0 commit comments

Comments
 (0)