@@ -9,6 +9,7 @@ const agent = require('../../dd-trace/test/plugins/agent.js')
99const { withNamingSchema, withVersions } = require ( '../../dd-trace/test/setup/mocha' )
1010const accounts = require ( './fixtures.js' )
1111const { expectedSchema, rawExpectedSchema } = require ( './naming.js' )
12+ const { assertObjectContains } = require ( '../../../integration-tests/helpers' )
1213
1314const fixtures = [ accounts ]
1415const typeDefs = accounts . typeDefs
@@ -148,47 +149,63 @@ describe('Plugin', () => {
148149 agent
149150 . assertSomeTraces ( ( traces ) => {
150151 // the spans are in order of execution
151- assert . strictEqual ( traces [ 0 ] [ 0 ] . name , expectedSchema . server . opName )
152- assert . strictEqual ( traces [ 0 ] [ 0 ] . service , expectedSchema . server . serviceName )
153- assert . strictEqual ( traces [ 0 ] [ 0 ] . resource , 'query MyQuery{hello(name:"")}' )
154- assert . strictEqual ( traces [ 0 ] [ 0 ] . type , 'web' )
155- assert . strictEqual ( traces [ 0 ] [ 0 ] . error , 0 )
156- assert . strictEqual ( traces [ 0 ] [ 0 ] . meta [ 'graphql.operation.name' ] , operationName )
152+ assertObjectContains ( traces [ 0 ] [ 0 ] , {
153+ name : expectedSchema . server . opName ,
154+ service : expectedSchema . server . serviceName ,
155+ resource : 'query MyQuery{hello(name:"")}' ,
156+ type : 'web' ,
157+ error : 0 ,
158+ meta : {
159+ 'graphql.operation.name' : operationName ,
160+ 'graphql.operation.type' : 'query' ,
161+ component : 'apollo.gateway' ,
162+ '_dd.integration' : 'apollo.gateway'
163+ }
164+ } )
157165 assert . ok ( ! ( 'graphql.source' in traces [ 0 ] [ 0 ] . meta ) )
158- assert . strictEqual ( traces [ 0 ] [ 0 ] . meta [ 'graphql.operation.type' ] , 'query' )
159- assert . strictEqual ( traces [ 0 ] [ 0 ] . meta . component , 'apollo.gateway' )
160- assert . strictEqual ( traces [ 0 ] [ 0 ] . meta [ '_dd.integration' ] , 'apollo.gateway' )
161166
162- assert . strictEqual ( traces [ 0 ] [ 1 ] . name , 'apollo.gateway.validate' )
163- assert . strictEqual ( traces [ 0 ] [ 1 ] . service , expectedSchema . server . serviceName )
164- assert . strictEqual ( traces [ 0 ] [ 1 ] . type , 'web' )
165- assert . strictEqual ( traces [ 0 ] [ 1 ] . error , 0 )
166- assert . strictEqual ( traces [ 0 ] [ 1 ] . meta . component , 'apollo.gateway' )
167+ assertObjectContains ( traces [ 0 ] [ 1 ] , {
168+ name : 'apollo.gateway.validate' ,
169+ service : expectedSchema . server . serviceName ,
170+ type : 'web' ,
171+ error : 0 ,
172+ meta : { component : 'apollo.gateway' }
173+ } )
167174
168- assert . strictEqual ( traces [ 0 ] [ 2 ] . name , 'apollo.gateway.plan' )
169- assert . strictEqual ( traces [ 0 ] [ 2 ] . service , expectedSchema . server . serviceName )
170- assert . strictEqual ( traces [ 0 ] [ 2 ] . type , 'web' )
171- assert . strictEqual ( traces [ 0 ] [ 2 ] . error , 0 )
172- assert . strictEqual ( traces [ 0 ] [ 2 ] . meta . component , 'apollo.gateway' )
175+ assertObjectContains ( traces [ 0 ] [ 2 ] , {
176+ name : 'apollo.gateway.plan' ,
177+ service : expectedSchema . server . serviceName ,
178+ type : 'web' ,
179+ error : 0 ,
180+ meta : { component : 'apollo.gateway' }
181+ } )
173182
174- assert . strictEqual ( traces [ 0 ] [ 3 ] . name , 'apollo.gateway.execute' )
175- assert . strictEqual ( traces [ 0 ] [ 3 ] . service , expectedSchema . server . serviceName )
176- assert . strictEqual ( traces [ 0 ] [ 3 ] . type , 'web' )
177- assert . strictEqual ( traces [ 0 ] [ 3 ] . error , 0 )
178- assert . strictEqual ( traces [ 0 ] [ 3 ] . meta . component , 'apollo.gateway' )
183+ assertObjectContains ( traces [ 0 ] [ 3 ] , {
184+ name : 'apollo.gateway.execute' ,
185+ service : expectedSchema . server . serviceName ,
186+ type : 'web' ,
187+ error : 0 ,
188+ meta : { component : 'apollo.gateway' }
189+ } )
179190
180- assert . strictEqual ( traces [ 0 ] [ 4 ] . name , 'apollo.gateway.fetch' )
181- assert . strictEqual ( traces [ 0 ] [ 4 ] . service , expectedSchema . server . serviceName )
182- assert . strictEqual ( traces [ 0 ] [ 4 ] . type , 'web' )
183- assert . strictEqual ( traces [ 0 ] [ 4 ] . error , 0 )
184- assert . strictEqual ( traces [ 0 ] [ 4 ] . meta . serviceName , 'accounts' )
185- assert . strictEqual ( traces [ 0 ] [ 4 ] . meta . component , 'apollo.gateway' )
191+ assertObjectContains ( traces [ 0 ] [ 4 ] , {
192+ name : 'apollo.gateway.fetch' ,
193+ service : expectedSchema . server . serviceName ,
194+ type : 'web' ,
195+ error : 0 ,
196+ meta : {
197+ serviceName : 'accounts' ,
198+ component : 'apollo.gateway'
199+ }
200+ } )
186201
187- assert . strictEqual ( traces [ 0 ] [ 5 ] . name , 'apollo.gateway.postprocessing' )
188- assert . strictEqual ( traces [ 0 ] [ 5 ] . service , expectedSchema . server . serviceName )
189- assert . strictEqual ( traces [ 0 ] [ 5 ] . type , 'web' )
190- assert . strictEqual ( traces [ 0 ] [ 5 ] . error , 0 )
191- assert . strictEqual ( traces [ 0 ] [ 5 ] . meta . component , 'apollo.gateway' )
202+ assertObjectContains ( traces [ 0 ] [ 5 ] , {
203+ name : 'apollo.gateway.postprocessing' ,
204+ service : expectedSchema . server . serviceName ,
205+ type : 'web' ,
206+ error : 0 ,
207+ meta : { component : 'apollo.gateway' }
208+ } )
192209 } )
193210 . then ( done )
194211 . catch ( done )
@@ -209,8 +226,10 @@ describe('Plugin', () => {
209226 assert . strictEqual ( traces [ 0 ] [ 0 ] . type , 'web' )
210227 assert . strictEqual ( traces [ 0 ] [ 0 ] . error , 0 )
211228 assert . ok ( ! ( 'graphql.source' in traces [ 0 ] [ 0 ] . meta ) )
212- assert . strictEqual ( traces [ 0 ] [ 0 ] . meta [ 'graphql.operation.type' ] , 'query' )
213- assert . strictEqual ( traces [ 0 ] [ 0 ] . meta . component , 'apollo.gateway' )
229+ assertObjectContains ( traces [ 0 ] [ 0 ] . meta , {
230+ 'graphql.operation.type' : 'query' ,
231+ component : 'apollo.gateway'
232+ } )
214233 } )
215234 . then ( done )
216235 . catch ( done )
@@ -241,8 +260,10 @@ describe('Plugin', () => {
241260 assert . strictEqual ( traces [ 0 ] [ 0 ] . type , 'web' )
242261 assert . strictEqual ( traces [ 0 ] [ 0 ] . error , 0 )
243262 assert . ok ( ! ( 'graphql.source' in traces [ 0 ] [ 0 ] . meta ) )
244- assert . strictEqual ( traces [ 0 ] [ 0 ] . meta [ 'graphql.operation.type' ] , 'query' )
245- assert . strictEqual ( traces [ 0 ] [ 0 ] . meta . component , 'apollo.gateway' )
263+ assertObjectContains ( traces [ 0 ] [ 0 ] . meta , {
264+ 'graphql.operation.type' : 'query' ,
265+ component : 'apollo.gateway'
266+ } )
246267 } )
247268 . then ( done )
248269 . catch ( done )
@@ -256,10 +277,11 @@ describe('Plugin', () => {
256277 it ( 'should instrument mutations' , done => {
257278 const source = 'mutation { human { name } }'
258279
259- agent
260- . assertSomeTraces ( ( traces ) => {
261- assert . strictEqual ( traces [ 0 ] [ 0 ] . meta [ 'graphql.operation.type' ] , 'mutation' )
262- } )
280+ agent . assertFirstTraceSpan ( {
281+ meta : {
282+ 'graphql.operation.type' : 'mutation'
283+ }
284+ } )
263285 . then ( done )
264286 . catch ( done )
265287
@@ -294,21 +316,29 @@ describe('Plugin', () => {
294316 agent
295317 . assertSomeTraces ( ( traces ) => {
296318 assert . strictEqual ( traces [ 0 ] . length , 2 )
297- assert . strictEqual ( traces [ 0 ] [ 0 ] . name , expectedSchema . server . opName )
298- assert . strictEqual ( traces [ 0 ] [ 0 ] . service , expectedSchema . server . serviceName )
299- assert . strictEqual ( traces [ 0 ] [ 0 ] . error , 1 )
300- assert . strictEqual ( traces [ 0 ] [ 0 ] . meta [ ERROR_TYPE ] , error . name )
301- assert . strictEqual ( traces [ 0 ] [ 0 ] . meta [ ERROR_MESSAGE ] , error . message )
302- assert . strictEqual ( traces [ 0 ] [ 0 ] . meta [ ERROR_STACK ] , error . stack )
303- assert . strictEqual ( traces [ 0 ] [ 0 ] . meta . component , 'apollo.gateway' )
319+ assertObjectContains ( traces [ 0 ] [ 0 ] , {
320+ name : expectedSchema . server . opName ,
321+ service : expectedSchema . server . serviceName ,
322+ error : 1 ,
323+ meta : {
324+ [ ERROR_TYPE ] : error . name ,
325+ [ ERROR_MESSAGE ] : error . message ,
326+ [ ERROR_STACK ] : error . stack ,
327+ component : 'apollo.gateway'
328+ }
329+ } )
304330
305- assert . strictEqual ( traces [ 0 ] [ 1 ] . name , 'apollo.gateway.validate' )
306- assert . strictEqual ( traces [ 0 ] [ 1 ] . service , expectedSchema . server . serviceName )
307- assert . strictEqual ( traces [ 0 ] [ 1 ] . error , 1 )
308- assert . strictEqual ( traces [ 0 ] [ 1 ] . meta [ ERROR_TYPE ] , error . name )
309- assert . strictEqual ( traces [ 0 ] [ 1 ] . meta [ ERROR_MESSAGE ] , error . message )
310- assert . strictEqual ( traces [ 0 ] [ 1 ] . meta [ ERROR_STACK ] , error . stack )
311- assert . strictEqual ( traces [ 0 ] [ 1 ] . meta . component , 'apollo.gateway' )
331+ assertObjectContains ( traces [ 0 ] [ 1 ] , {
332+ name : 'apollo.gateway.validate' ,
333+ service : expectedSchema . server . serviceName ,
334+ error : 1 ,
335+ meta : {
336+ [ ERROR_TYPE ] : error . name ,
337+ [ ERROR_MESSAGE ] : error . message ,
338+ [ ERROR_STACK ] : error . stack ,
339+ component : 'apollo.gateway'
340+ }
341+ } )
312342 } )
313343 . then ( done )
314344 . catch ( done )
@@ -336,12 +366,16 @@ describe('Plugin', () => {
336366 assert . strictEqual ( traces [ 0 ] [ 1 ] . name , 'apollo.gateway.validate' )
337367 assert . strictEqual ( traces [ 0 ] [ 1 ] . error , 0 )
338368
339- assert . strictEqual ( traces [ 0 ] [ 2 ] . name , 'apollo.gateway.plan' )
340- assert . strictEqual ( traces [ 0 ] [ 2 ] . service , expectedSchema . server . serviceName )
341- assert . strictEqual ( traces [ 0 ] [ 2 ] . error , 1 )
342- assert . strictEqual ( traces [ 0 ] [ 2 ] . meta [ ERROR_TYPE ] , error . name )
343- assert . strictEqual ( traces [ 0 ] [ 2 ] . meta [ ERROR_MESSAGE ] , error . message )
344- assert . strictEqual ( traces [ 0 ] [ 2 ] . meta [ ERROR_STACK ] , error . stack )
369+ assertObjectContains ( traces [ 0 ] [ 2 ] , {
370+ name : 'apollo.gateway.plan' ,
371+ service : expectedSchema . server . serviceName ,
372+ error : 1 ,
373+ meta : {
374+ [ ERROR_TYPE ] : error . name ,
375+ [ ERROR_MESSAGE ] : error . message ,
376+ [ ERROR_STACK ] : error . stack
377+ }
378+ } )
345379 } )
346380 . then ( done )
347381 . catch ( done )
@@ -363,11 +397,15 @@ describe('Plugin', () => {
363397 const variableValues = { who : 'world' }
364398 agent
365399 . assertSomeTraces ( ( traces ) => {
366- assert . strictEqual ( traces [ 0 ] [ 0 ] . name , expectedSchema . server . opName )
367- assert . strictEqual ( traces [ 0 ] [ 0 ] . error , 1 )
368- assert . strictEqual ( traces [ 0 ] [ 0 ] . meta [ ERROR_TYPE ] , error . name )
369- assert . strictEqual ( traces [ 0 ] [ 0 ] . meta [ ERROR_MESSAGE ] , error . message )
370- assert . strictEqual ( traces [ 0 ] [ 0 ] . meta [ ERROR_STACK ] , error . stack )
400+ assertObjectContains ( traces [ 0 ] [ 0 ] , {
401+ name : expectedSchema . server . opName ,
402+ error : 1 ,
403+ meta : {
404+ [ ERROR_TYPE ] : error . name ,
405+ [ ERROR_MESSAGE ] : error . message ,
406+ [ ERROR_STACK ] : error . stack
407+ }
408+ } )
371409
372410 assert . strictEqual ( traces [ 0 ] [ 1 ] . name , 'apollo.gateway.validate' )
373411 assert . strictEqual ( traces [ 0 ] [ 1 ] . error , 0 )
@@ -382,18 +420,26 @@ describe('Plugin', () => {
382420 // in version 2.3.0, there is no recordExceptions method thus we can't ever attach an error to the
383421 // fetch span but instead the error will be propagated to the request span and be set there
384422 if ( version > '2.3.0' ) {
385- assert . strictEqual ( traces [ 0 ] [ 3 ] . error , 1 )
386- assert . strictEqual ( traces [ 0 ] [ 3 ] . meta [ ERROR_TYPE ] , error . name )
387- assert . strictEqual ( traces [ 0 ] [ 3 ] . meta [ ERROR_MESSAGE ] , error . message )
388- assert . strictEqual ( traces [ 0 ] [ 3 ] . meta [ ERROR_STACK ] , error . stack )
423+ assertObjectContains ( traces [ 0 ] [ 3 ] , {
424+ error : 1 ,
425+ meta : {
426+ [ ERROR_TYPE ] : error . name ,
427+ [ ERROR_MESSAGE ] : error . message ,
428+ [ ERROR_STACK ] : error . stack
429+ }
430+ } )
389431 } else { assert . strictEqual ( traces [ 0 ] [ 3 ] . error , 0 ) }
390432
391- assert . strictEqual ( traces [ 0 ] [ 4 ] . name , 'apollo.gateway.fetch' )
392- assert . strictEqual ( traces [ 0 ] [ 4 ] . service , expectedSchema . server . serviceName )
393- assert . strictEqual ( traces [ 0 ] [ 4 ] . error , 1 )
394- assert . strictEqual ( traces [ 0 ] [ 4 ] . meta [ ERROR_TYPE ] , error . name )
395- assert . strictEqual ( traces [ 0 ] [ 4 ] . meta [ ERROR_MESSAGE ] , error . message )
396- assert . strictEqual ( traces [ 0 ] [ 4 ] . meta [ ERROR_STACK ] , error . stack )
433+ assertObjectContains ( traces [ 0 ] [ 4 ] , {
434+ name : 'apollo.gateway.fetch' ,
435+ service : expectedSchema . server . serviceName ,
436+ error : 1 ,
437+ meta : {
438+ [ ERROR_TYPE ] : error . name ,
439+ [ ERROR_MESSAGE ] : error . message ,
440+ [ ERROR_STACK ] : error . stack
441+ }
442+ } )
397443
398444 assert . strictEqual ( traces [ 0 ] [ 5 ] . name , 'apollo.gateway.postprocessing' )
399445 assert . strictEqual ( traces [ 0 ] [ 5 ] . error , 0 )
0 commit comments