Skip to content

Commit 30fcb53

Browse files
danieljuhlwatson
authored andcommitted
feat(apollo-server-express): set custom GraphQL transaction names (#648)
1 parent a08fa29 commit 30fcb53

File tree

9 files changed

+286
-6
lines changed

9 files changed

+286
-6
lines changed

.tav.yml

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ ws:
5959
versions: '>=1 <7'
6060
commands: node test/instrumentation/modules/ws.js
6161
graphql:
62-
preinstall: rm -fr node_modules/express-graphql
62+
preinstall: npm uninstall express-graphql
6363
versions: '>=0.7.0 <0.11.0 || >=0.11.1 <15.0.0 || ^14.0.0-rc'
6464
commands: node test/instrumentation/modules/graphql.js
6565
express:
@@ -68,70 +68,104 @@ express:
6868

6969
express-graphql-1:
7070
name: express-graphql
71+
preinstall: npm uninstall apollo-server-express
7172
peerDependencies: graphql@^0.8.2
7273
versions: '0.6.1'
7374
commands: node test/instrumentation/modules/express-graphql.js
7475

7576
express-graphql-2:
7677
name: express-graphql
78+
preinstall: npm uninstall apollo-server-express
7779
peerDependencies: graphql@^0.9.0
7880
versions: '>=0.6.2 <0.6.6'
7981
commands: node test/instrumentation/modules/express-graphql.js
8082

8183
express-graphql-3:
8284
name: express-graphql
85+
preinstall: npm uninstall apollo-server-express
8386
peerDependencies: graphql@^0.10.0
8487
versions: '>=0.6.6 <0.6.8'
8588
commands: node test/instrumentation/modules/express-graphql.js
8689

8790
express-graphql-0.6.11_10:
8891
name: express-graphql
92+
preinstall: npm uninstall apollo-server-express
8993
peerDependencies: graphql@^0.10.0
9094
versions: '0.6.11'
9195
commands: node test/instrumentation/modules/express-graphql.js
9296
express-graphql-0.6.11_11:
9397
name: express-graphql
98+
preinstall: npm uninstall apollo-server-express
9499
peerDependencies: graphql@^0.11.0
95100
versions: '0.6.11'
96101
commands: node test/instrumentation/modules/express-graphql.js
97102

98103
express-graphql-0.6.12_10:
99104
name: express-graphql
105+
preinstall: npm uninstall apollo-server-express
100106
peerDependencies: graphql@^0.10.0
101107
versions: '^0.6.12'
102108
commands: node test/instrumentation/modules/express-graphql.js
103109
express-graphql-0.6.12_11:
104110
name: express-graphql
111+
preinstall: npm uninstall apollo-server-express
105112
peerDependencies: graphql@^0.11.0
106113
versions: '^0.6.12'
107114
commands: node test/instrumentation/modules/express-graphql.js
108115
express-graphql-0.6.12_12:
109116
name: express-graphql
117+
preinstall: npm uninstall apollo-server-express
110118
peerDependencies: graphql@^0.12.0
111119
versions: '^0.6.12'
112120
commands: node test/instrumentation/modules/express-graphql.js
113121
express-graphql-0.6.12_13:
114122
name: express-graphql
123+
preinstall: npm uninstall apollo-server-express
115124
peerDependencies: graphql@^0.13.0
116125
versions: '^0.6.12'
117126
commands: node test/instrumentation/modules/express-graphql.js
118127

119128
express-graphql-0.7,1_12:
120129
name: express-graphql
130+
preinstall: npm uninstall apollo-server-express
121131
peerDependencies: graphql@^0.12.0
122132
versions: '^0.7.1'
123133
commands: node test/instrumentation/modules/express-graphql.js
124134
express-graphql-0.7.1_13:
125135
name: express-graphql
136+
preinstall: npm uninstall apollo-server-express
126137
peerDependencies: graphql@^0.13.0
127138
versions: '^0.7.1'
128139
commands: node test/instrumentation/modules/express-graphql.js
129140
express-graphql-0.7.1_14:
130141
name: express-graphql
142+
preinstall: npm uninstall apollo-server-express
131143
peerDependencies: graphql@^14.0.0
132144
versions: '^0.7.1'
133145
commands: node test/instrumentation/modules/express-graphql.js
134146

147+
apollo-server-express-2_12:
148+
name: apollo-server-express
149+
preinstall: npm uninstall express-graphql
150+
peerDependencies: graphql@^0.12.0
151+
versions: '>=2.0.2'
152+
node: '>=6'
153+
commands: node test/instrumentation/modules/apollo-server-express.js
154+
apollo-server-express-2_13:
155+
name: apollo-server-express
156+
preinstall: npm uninstall express-graphql
157+
peerDependencies: graphql@^0.13.0
158+
versions: '>=2.0.2'
159+
node: '>=6'
160+
commands: node test/instrumentation/modules/apollo-server-express.js
161+
apollo-server-express-2_14:
162+
name: apollo-server-express
163+
preinstall: npm uninstall express-graphql
164+
peerDependencies: graphql@^14.0.0
165+
versions: '>=2.0.2'
166+
node: '>=6'
167+
commands: node test/instrumentation/modules/apollo-server-express.js
168+
135169
express-queue:
136170
versions: '>=0.0.11'
137171
commands: node test/instrumentation/modules/express-queue.js

.travis.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ jobs:
8989
-
9090
node_js: '10'
9191
if: type IN (cron, pull_request) AND NOT branch =~ ^greenkeeper/.*
92-
env: TAV=mimic-response,got,bluebird
92+
env: TAV=mimic-response,got,bluebird,apollo-server-express
9393
script: tav --quiet
9494
-
9595
node_js: '10'
@@ -111,7 +111,7 @@ jobs:
111111
-
112112
node_js: '9'
113113
if: type IN (cron, pull_request) AND NOT branch =~ ^greenkeeper/.*
114-
env: TAV=mimic-response,got,bluebird
114+
env: TAV=mimic-response,got,bluebird,apollo-server-express
115115
script: tav --quiet
116116
-
117117
node_js: '9'
@@ -133,7 +133,7 @@ jobs:
133133
-
134134
node_js: '8'
135135
if: type IN (cron, pull_request) AND NOT branch =~ ^greenkeeper/.*
136-
env: TAV=mimic-response,got,bluebird
136+
env: TAV=mimic-response,got,bluebird,apollo-server-express
137137
script: tav --quiet
138138
-
139139
node_js: '8'
@@ -155,7 +155,7 @@ jobs:
155155
-
156156
node_js: '6'
157157
if: type IN (cron, pull_request) AND NOT branch =~ ^greenkeeper/.*
158-
env: TAV=mimic-response,got,bluebird
158+
env: TAV=mimic-response,got,bluebird,apollo-server-express
159159
script: tav --quiet
160160
-
161161
node_js: '6'

docs/compatibility.asciidoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ These modules override that behavior to give better insights into specialized HT
6161
|=======================================================================
6262
|Module |Version |Note
6363
|https://www.npmjs.com/package/express-graphql[express-graphql] |^0.6.1 |Will name all transactions by the GraphQL query name
64+
|https://www.npmjs.com/package/apollo-server-express[apollo-server-express] |^2.0.2 |Will name all transactions by the GraphQL query name
6465
|=======================================================================
6566

6667
[float]

lib/instrumentation/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ var Transaction = require('./transaction')
1313
var shimmer = require('./shimmer')
1414

1515
var MODULES = [
16+
'apollo-server-core',
1617
'bluebird',
1718
'cassandra-driver',
1819
'elasticsearch',
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
'use strict'
2+
3+
const semver = require('semver')
4+
const shimmer = require('../shimmer')
5+
6+
module.exports = function (apolloServerCore, agent, version, enabled) {
7+
if (!enabled) return apolloServerCore
8+
9+
if (!semver.satisfies(version, '^2.0.2')) {
10+
agent.logger.debug('apollo-server-core version %s not supported - aborting...', version)
11+
return apolloServerCore
12+
}
13+
14+
shimmer.wrap(apolloServerCore, 'runHttpQuery', function (runHttpQuery) {
15+
return function wrappedRunHttpQuery () {
16+
var trans = agent._instrumentation.currentTransaction
17+
if (trans) trans._graphqlRoute = true
18+
return runHttpQuery.apply(this, arguments)
19+
}
20+
})
21+
22+
return apolloServerCore
23+
}

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@
9595
"@commitlint/cli": "^7.0.0",
9696
"@commitlint/config-conventional": "^7.0.1",
9797
"@commitlint/travis-cli": "^7.0.0",
98+
"apollo-server-express": "^2.0.2",
9899
"bluebird": "^3.4.6",
99100
"cassandra-driver": "^3.5.0",
100101
"connect": "^3.6.3",

test/.jenkins_tav.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
TAV:
22
- generic-pool+mysql+mysql2+redis+koa-router+handlebars+mongodb-core
33
- ioredis+pg+cassandra-driver+tedious+restify
4-
- mimic-response+got+bluebird
4+
- mimic-response+got+bluebird+apollo-server-express
55
- knex+ws+graphql+express-graphql+elasticsearch+hapi+express+express-queue

test/config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,7 @@ test('disableInstrumentations', function (t) {
376376
}
377377
if (semver.lt(process.version, '6.0.0')) {
378378
modules.delete('express-queue')
379+
modules.delete('apollo-server-core')
379380
}
380381

381382
function testSlice (t, name, selector) {

0 commit comments

Comments
 (0)