@@ -8,6 +8,7 @@ var test = require('tape')
88
99var assert = require ( './_assert' )
1010var mockClient = require ( '../../../_mock_http_client' )
11+ var TraceContext = require ( '../../../../lib/instrumentation/context' )
1112
1213test ( 'http.createServer' , function ( t ) {
1314 t . test ( 'direct callback' , function ( t ) {
@@ -17,7 +18,7 @@ test('http.createServer', function (t) {
1718 t . end ( )
1819 } )
1920
20- var server = http . createServer ( onRequest )
21+ var server = http . createServer ( onRequest ( t ) )
2122 sendRequest ( server )
2223 } )
2324
@@ -29,7 +30,7 @@ test('http.createServer', function (t) {
2930 } )
3031
3132 var server = http . createServer ( )
32- server . addListener ( 'request' , onRequest )
33+ server . addListener ( 'request' , onRequest ( t ) )
3334 sendRequest ( server )
3435 } )
3536
@@ -41,7 +42,7 @@ test('http.createServer', function (t) {
4142 } )
4243
4344 var server = http . createServer ( )
44- server . on ( 'request' , onRequest )
45+ server . on ( 'request' , onRequest ( t ) )
4546 sendRequest ( server )
4647 } )
4748} )
@@ -54,7 +55,7 @@ test('new http.Server', function (t) {
5455 t . end ( )
5556 } )
5657
57- var server = new http . Server ( onRequest )
58+ var server = new http . Server ( onRequest ( t ) )
5859 sendRequest ( server )
5960 } )
6061
@@ -66,7 +67,7 @@ test('new http.Server', function (t) {
6667 } )
6768
6869 var server = new http . Server ( )
69- server . addListener ( 'request' , onRequest )
70+ server . addListener ( 'request' , onRequest ( t ) )
7071 sendRequest ( server )
7172 } )
7273
@@ -78,18 +79,27 @@ test('new http.Server', function (t) {
7879 } )
7980
8081 var server = new http . Server ( )
81- server . on ( 'request' , onRequest )
82+ server . on ( 'request' , onRequest ( t ) )
8283 sendRequest ( server )
8384 } )
8485} )
8586
8687function sendRequest ( server , timeout ) {
8788 server . listen ( function ( ) {
8889 var port = server . address ( ) . port
89- var req = http . get ( 'http://localhost:' + port , function ( res ) {
90+ var req = http . request ( {
91+ hostname : 'localhost' ,
92+ port : port ,
93+ path : '/' ,
94+ method : 'GET' ,
95+ headers : {
96+ 'Elastic-APM-traceparent' : TraceContext . create ( ) . toString ( )
97+ }
98+ } , function ( res ) {
9099 if ( timeout ) throw new Error ( 'should not get to here' )
91100 res . resume ( )
92101 } )
102+ req . end ( )
93103
94104 if ( timeout ) {
95105 process . nextTick ( function ( ) {
@@ -99,8 +109,17 @@ function sendRequest (server, timeout) {
99109 } )
100110}
101111
102- function onRequest ( req , res ) {
103- res . end ( )
112+ function onRequest ( t ) {
113+ return function onRequestHandler ( req , res ) {
114+ var traceparent = req . headers [ 'elastic-apm-traceparent' ]
115+ var parent = TraceContext . fromString ( traceparent ) . toJSON ( )
116+ var context = agent . currentTransaction . context . toJSON ( )
117+ t . equal ( parent . traceId , context . traceId , 'context trace id matches parent trace id' )
118+ t . notEqual ( parent . id , context . id , 'context id does not match parent id' )
119+ t . equal ( parent . flags , context . flags , 'context flags matches parent flags' )
120+ t . equal ( parent . id , context . parentId , 'context is a child of traceparent' )
121+ res . end ( )
122+ }
104123}
105124
106125function resetAgent ( cb ) {
0 commit comments