@@ -271,6 +271,7 @@ describe('Plugin', () => {
271271 } )
272272 } )
273273 } )
274+
274275 describe ( 'with DBM propagation enabled with service using plugin configurations' , ( ) => {
275276 before ( ( ) => {
276277 return agent . load ( 'pg' , [ { dbmPropagationMode : 'service' , service : ( ) => 'serviced' } ] )
@@ -318,6 +319,7 @@ describe('Plugin', () => {
318319 }
319320 }
320321 } )
322+
321323 it ( 'trace query resource should not be changed when propagation is enabled' , done => {
322324 agent . use ( traces => {
323325 expect ( traces [ 0 ] [ 0 ] ) . to . have . property ( 'resource' , 'SELECT $1::text as message' )
@@ -331,15 +333,18 @@ describe('Plugin', () => {
331333 } )
332334 } )
333335 } )
336+
334337 describe ( 'DBM propagation should handle special characters' , ( ) => {
335338 let clientDBM
339+
336340 before ( ( ) => {
337341 return agent . load ( 'pg' , [ { dbmPropagationMode : 'service' , service : '~!@#$%^&*()_+|??/<>' } ] )
338342 } )
339343
340344 after ( ( ) => {
341345 return agent . close ( { ritmReset : false } )
342346 } )
347+
343348 beforeEach ( done => {
344349 pg = require ( `../../../versions/pg@${ version } ` ) . get ( )
345350
@@ -352,6 +357,7 @@ describe('Plugin', () => {
352357
353358 clientDBM . connect ( err => done ( err ) )
354359 } )
360+
355361 it ( 'DBM propagation should handle special characters' , done => {
356362 clientDBM . query ( 'SELECT $1::text as message' , [ 'Hello world!' ] , ( err , result ) => {
357363 if ( err ) return done ( err )
@@ -373,15 +379,18 @@ describe('Plugin', () => {
373379 }
374380 } )
375381 } )
382+
376383 describe ( 'with DBM propagation enabled with full using tracer configurations' , ( ) => {
377384 const tracer = require ( '../../dd-trace' )
378385 let seenTraceParent
379386 let seenTraceId
380387 let seenSpanId
381388 let originalWrite
389+
382390 before ( ( ) => {
383391 return agent . load ( 'pg' )
384392 } )
393+
385394 beforeEach ( done => {
386395 pg = require ( `../../../versions/pg@${ version } ` ) . get ( )
387396
@@ -409,9 +418,11 @@ describe('Plugin', () => {
409418 return originalWrite . apply ( this , arguments )
410419 }
411420 } )
421+
412422 afterEach ( ( ) => {
413423 net . Socket . prototype . write = originalWrite
414424 } )
425+
415426 it ( 'query text should contain traceparent' , done => {
416427 agent . use ( traces => {
417428 const traceId = traces [ 0 ] [ 0 ] . trace_id . toString ( 16 ) . padStart ( 32 , '0' )
@@ -428,6 +439,7 @@ describe('Plugin', () => {
428439 } )
429440 } )
430441 } )
442+
431443 it ( 'query should inject _dd.dbm_trace_injected into span' , done => {
432444 agent . use ( traces => {
433445 expect ( traces [ 0 ] [ 0 ] . meta ) . to . have . property ( '_dd.dbm_trace_injected' , 'true' )
@@ -442,6 +454,7 @@ describe('Plugin', () => {
442454 } )
443455 } )
444456 } )
457+
445458 it ( 'service should default to tracer service name' , done => {
446459 tracer
447460 agent . use ( traces => {
@@ -458,12 +471,14 @@ describe('Plugin', () => {
458471 } )
459472 } )
460473 } )
474+
461475 describe ( 'DBM propagation enabled with full should handle query config objects' , ( ) => {
462476 const tracer = require ( '../../dd-trace' )
463477
464478 before ( ( ) => {
465479 return agent . load ( 'pg' )
466480 } )
481+
467482 beforeEach ( done => {
468483 pg = require ( `../../../versions/pg@${ version } ` ) . get ( )
469484
@@ -484,10 +499,12 @@ describe('Plugin', () => {
484499
485500 it ( 'query config objects should be handled' , done => {
486501 let queryText = ''
502+
487503 const query = {
488504 name : 'pgSelectQuery' ,
489505 text : 'SELECT $1::text as message'
490506 }
507+
491508 agent . use ( traces => {
492509 const traceId = traces [ 0 ] [ 0 ] . trace_id . toString ( 16 ) . padStart ( 32 , '0' )
493510 const spanId = traces [ 0 ] [ 0 ] . span_id . toString ( 16 ) . padStart ( 16 , '0' )
@@ -496,6 +513,7 @@ describe('Plugin', () => {
496513 `/*dddbs='post',dde='tester',ddps='test',ddpv='8.4.0',` +
497514 `traceparent='00-${ traceId } -${ spanId } -00'*/ SELECT $1::text as message` )
498515 } ) . then ( done , done )
516+
499517 client . query ( query , [ 'Hello world!' ] , ( err ) => {
500518 if ( err ) return done ( err )
501519
@@ -505,23 +523,51 @@ describe('Plugin', () => {
505523 } )
506524 queryText = client . queryQueue [ 0 ] . text
507525 } )
526+
508527 it ( 'query config object should persist when comment is injected' , done => {
509528 const query = {
510529 name : 'pgSelectQuery' ,
511530 text : 'SELECT $1::text as message'
512531 }
532+
513533 client . query ( query , [ 'Hello world!' ] , ( err ) => {
514534 if ( err ) return done ( err )
515535
516536 client . end ( ( err ) => {
517537 if ( err ) return done ( err )
518538 } )
519539 } )
540+
520541 agent . use ( traces => {
521542 expect ( query ) . to . have . property (
522543 'name' , 'pgSelectQuery' )
523544 } ) . then ( done , done )
524545 } )
546+
547+ it ( 'falls back to service with prepared statements' , done => {
548+ let queryText = ''
549+
550+ const query = {
551+ name : 'pgSelectQuery' ,
552+ text : 'SELECT $1::text as message' ,
553+ name : 'getText'
554+ }
555+
556+ agent . use ( traces => {
557+ expect ( queryText ) . to . equal (
558+ `/*dddbs='post',dde='tester',ddps='test',ddpv='8.4.0'` +
559+ `*/ SELECT $1::text as message` )
560+ } ) . then ( done , done )
561+
562+ client . query ( query , [ 'Hello world!' ] , ( err ) => {
563+ if ( err ) return done ( err )
564+
565+ client . end ( ( err ) => {
566+ if ( err ) return done ( err )
567+ } )
568+ } )
569+ queryText = client . queryQueue [ 0 ] . text
570+ } )
525571 } )
526572 } )
527573 } )
0 commit comments