@@ -4,6 +4,7 @@ const { expect } = require('chai')
4
4
const semver = require ( 'semver' )
5
5
const agent = require ( '../../dd-trace/test/plugins/agent' )
6
6
const { ERROR_MESSAGE , ERROR_TYPE , ERROR_STACK } = require ( '../../dd-trace/src/constants' )
7
+ const net = require ( 'net' )
7
8
8
9
const clients = {
9
10
pg : pg => pg . Client
@@ -374,6 +375,10 @@ describe('Plugin', () => {
374
375
} )
375
376
describe ( 'with DBM propagation enabled with full using tracer configurations' , ( ) => {
376
377
const tracer = require ( '../../dd-trace' )
378
+ let seenTraceParent
379
+ let seenTraceId
380
+ let seenSpanId
381
+ let originalWrite
377
382
before ( ( ) => {
378
383
return agent . load ( 'pg' )
379
384
} )
@@ -393,27 +398,36 @@ describe('Plugin', () => {
393
398
database : 'postgres'
394
399
} )
395
400
client . connect ( err => done ( err ) )
401
+ originalWrite = net . Socket . prototype . write
402
+ net . Socket . prototype . write = function ( buffer ) {
403
+ let strBuf = buffer . toString ( )
404
+ if ( strBuf . includes ( 'traceparent=\'' ) ) {
405
+ strBuf = strBuf . split ( '-' )
406
+ seenTraceParent = true
407
+ seenTraceId = strBuf [ 1 ]
408
+ seenSpanId = strBuf [ 2 ]
409
+ }
410
+ return originalWrite . apply ( this , arguments )
411
+ }
412
+ } )
413
+ afterEach ( ( ) => {
414
+ net . Socket . prototype . write = originalWrite
396
415
} )
397
-
398
416
it ( 'query text should contain traceparent' , done => {
399
- let queryText = ''
400
417
agent . use ( traces => {
401
418
const traceId = traces [ 0 ] [ 0 ] . trace_id . toString ( 16 ) . padStart ( 32 , '0' )
402
419
const spanId = traces [ 0 ] [ 0 ] . span_id . toString ( 16 ) . padStart ( 16 , '0' )
403
-
404
- expect ( queryText ) . to . equal (
405
- `/*dddbs='post',dde='tester',ddps='test',ddpv='8.4.0',` +
406
- `traceparent='00-${ traceId } -${ spanId } -00'*/ SELECT $1::text as message` )
420
+ expect ( seenTraceId ) . to . equal ( traceId )
421
+ expect ( seenSpanId ) . to . equal ( spanId )
407
422
} ) . then ( done , done )
408
423
409
424
client . query ( 'SELECT $1::text as message' , [ 'Hello World!' ] , ( err , result ) => {
410
425
if ( err ) return done ( err )
411
-
426
+ expect ( seenTraceParent ) . to . be . true
412
427
client . end ( ( err ) => {
413
428
if ( err ) return done ( err )
414
429
} )
415
430
} )
416
- queryText = client . queryQueue [ 0 ] . text
417
431
} )
418
432
it ( 'query should inject _dd.dbm_trace_injected into span' , done => {
419
433
agent . use ( traces => {
0 commit comments