@@ -168,6 +168,246 @@ describe('httpIntegration', () => {
168
168
await runner . completed ( ) ;
169
169
} ) ;
170
170
} ) ;
171
+
172
+ describe ( 'custom server.emit' , ( ) => {
173
+ createEsmAndCjsTests (
174
+ __dirname ,
175
+ 'scenario-overwrite-server-emit.mjs' ,
176
+ 'instrument-overwrite-server-emit.mjs' ,
177
+ ( createRunner , test ) => {
178
+ test ( 'handles server.emit being overwritten via classic monkey patching' , async ( ) => {
179
+ const runner = createRunner ( )
180
+ . expect ( {
181
+ transaction : {
182
+ transaction : 'GET /test1' ,
183
+ contexts : {
184
+ trace : {
185
+ span_id : expect . stringMatching ( / [ a - f 0 - 9 ] { 16 } / ) ,
186
+ trace_id : expect . stringMatching ( / [ a - f 0 - 9 ] { 32 } / ) ,
187
+ data : {
188
+ 'http.response.status_code' : 200 ,
189
+ 'sentry.op' : 'http.server' ,
190
+ } ,
191
+ } ,
192
+ } ,
193
+ spans : [ ] ,
194
+ } ,
195
+ } )
196
+ . expect ( {
197
+ transaction : {
198
+ transaction : 'GET /test2' ,
199
+ contexts : {
200
+ trace : {
201
+ span_id : expect . stringMatching ( / [ a - f 0 - 9 ] { 16 } / ) ,
202
+ trace_id : expect . stringMatching ( / [ a - f 0 - 9 ] { 32 } / ) ,
203
+ data : {
204
+ 'http.response.status_code' : 200 ,
205
+ 'sentry.op' : 'http.server' ,
206
+ } ,
207
+ } ,
208
+ } ,
209
+ spans : [ ] ,
210
+ } ,
211
+ } )
212
+ . expect ( {
213
+ transaction : {
214
+ transaction : 'GET /test3' ,
215
+ contexts : {
216
+ trace : {
217
+ span_id : expect . stringMatching ( / [ a - f 0 - 9 ] { 16 } / ) ,
218
+ trace_id : expect . stringMatching ( / [ a - f 0 - 9 ] { 32 } / ) ,
219
+ data : {
220
+ 'http.response.status_code' : 200 ,
221
+ 'sentry.op' : 'http.server' ,
222
+ } ,
223
+ } ,
224
+ } ,
225
+ spans : [ ] ,
226
+ } ,
227
+ } )
228
+ . start ( ) ;
229
+
230
+ await runner . makeRequest ( 'get' , '/test1' ) ;
231
+ await runner . makeRequest ( 'get' , '/test2' ) ;
232
+ await runner . makeRequest ( 'get' , '/test3' ) ;
233
+ await runner . completed ( ) ;
234
+ } ) ;
235
+
236
+ test ( 'handles server.emit being overwritten via proxy' , async ( ) => {
237
+ const runner = createRunner ( )
238
+ . expect ( {
239
+ transaction : {
240
+ transaction : 'GET /test1-proxy' ,
241
+ contexts : {
242
+ trace : {
243
+ span_id : expect . stringMatching ( / [ a - f 0 - 9 ] { 16 } / ) ,
244
+ trace_id : expect . stringMatching ( / [ a - f 0 - 9 ] { 32 } / ) ,
245
+ data : {
246
+ 'http.response.status_code' : 200 ,
247
+ 'sentry.op' : 'http.server' ,
248
+ } ,
249
+ } ,
250
+ } ,
251
+ spans : [ ] ,
252
+ } ,
253
+ } )
254
+ . expect ( {
255
+ transaction : {
256
+ transaction : 'GET /test2-proxy' ,
257
+ contexts : {
258
+ trace : {
259
+ span_id : expect . stringMatching ( / [ a - f 0 - 9 ] { 16 } / ) ,
260
+ trace_id : expect . stringMatching ( / [ a - f 0 - 9 ] { 32 } / ) ,
261
+ data : {
262
+ 'http.response.status_code' : 200 ,
263
+ 'sentry.op' : 'http.server' ,
264
+ } ,
265
+ } ,
266
+ } ,
267
+ spans : [ ] ,
268
+ } ,
269
+ } )
270
+ . expect ( {
271
+ transaction : {
272
+ transaction : 'GET /test3-proxy' ,
273
+ contexts : {
274
+ trace : {
275
+ span_id : expect . stringMatching ( / [ a - f 0 - 9 ] { 16 } / ) ,
276
+ trace_id : expect . stringMatching ( / [ a - f 0 - 9 ] { 32 } / ) ,
277
+ data : {
278
+ 'http.response.status_code' : 200 ,
279
+ 'sentry.op' : 'http.server' ,
280
+ } ,
281
+ } ,
282
+ } ,
283
+ } ,
284
+ } )
285
+ . start ( ) ;
286
+
287
+ await runner . makeRequest ( 'get' , '/test1-proxy' ) ;
288
+ await runner . makeRequest ( 'get' , '/test2-proxy' ) ;
289
+ await runner . makeRequest ( 'get' , '/test3-proxy' ) ;
290
+ await runner . completed ( ) ;
291
+ } ) ;
292
+
293
+ test ( 'handles server.emit being overwritten via classic monkey patching, using initial server.emit' , async ( ) => {
294
+ const runner = createRunner ( )
295
+ . expect ( {
296
+ transaction : {
297
+ transaction : 'GET /test1-original' ,
298
+ contexts : {
299
+ trace : {
300
+ span_id : expect . stringMatching ( / [ a - f 0 - 9 ] { 16 } / ) ,
301
+ trace_id : expect . stringMatching ( / [ a - f 0 - 9 ] { 32 } / ) ,
302
+ data : {
303
+ 'http.response.status_code' : 200 ,
304
+ 'sentry.op' : 'http.server' ,
305
+ } ,
306
+ } ,
307
+ } ,
308
+ spans : [ ] ,
309
+ } ,
310
+ } )
311
+ . expect ( {
312
+ transaction : {
313
+ transaction : 'GET /test2-original' ,
314
+ contexts : {
315
+ trace : {
316
+ span_id : expect . stringMatching ( / [ a - f 0 - 9 ] { 16 } / ) ,
317
+ trace_id : expect . stringMatching ( / [ a - f 0 - 9 ] { 32 } / ) ,
318
+ data : {
319
+ 'http.response.status_code' : 200 ,
320
+ 'sentry.op' : 'http.server' ,
321
+ } ,
322
+ } ,
323
+ } ,
324
+ spans : [ ] ,
325
+ } ,
326
+ } )
327
+ . expect ( {
328
+ transaction : {
329
+ transaction : 'GET /test3-original' ,
330
+ contexts : {
331
+ trace : {
332
+ span_id : expect . stringMatching ( / [ a - f 0 - 9 ] { 16 } / ) ,
333
+ trace_id : expect . stringMatching ( / [ a - f 0 - 9 ] { 32 } / ) ,
334
+ data : {
335
+ 'http.response.status_code' : 200 ,
336
+ 'sentry.op' : 'http.server' ,
337
+ } ,
338
+ } ,
339
+ } ,
340
+ spans : [ ] ,
341
+ } ,
342
+ } )
343
+ . start ( ) ;
344
+
345
+ await runner . makeRequest ( 'get' , '/test1-original' ) ;
346
+ await runner . makeRequest ( 'get' , '/test2-original' ) ;
347
+ await runner . makeRequest ( 'get' , '/test3-original' ) ;
348
+ await runner . completed ( ) ;
349
+ } ) ;
350
+
351
+ test ( 'handles server.emit being overwritten via proxy, using initial server.emit' , async ( ) => {
352
+ const runner = createRunner ( )
353
+ . expect ( {
354
+ transaction : {
355
+ transaction : 'GET /test1-proxy-original' ,
356
+ contexts : {
357
+ trace : {
358
+ span_id : expect . stringMatching ( / [ a - f 0 - 9 ] { 16 } / ) ,
359
+ trace_id : expect . stringMatching ( / [ a - f 0 - 9 ] { 32 } / ) ,
360
+ data : {
361
+ 'http.response.status_code' : 200 ,
362
+ 'sentry.op' : 'http.server' ,
363
+ } ,
364
+ } ,
365
+ } ,
366
+ spans : [ ] ,
367
+ } ,
368
+ } )
369
+ . expect ( {
370
+ transaction : {
371
+ transaction : 'GET /test2-proxy-original' ,
372
+ contexts : {
373
+ trace : {
374
+ span_id : expect . stringMatching ( / [ a - f 0 - 9 ] { 16 } / ) ,
375
+ trace_id : expect . stringMatching ( / [ a - f 0 - 9 ] { 32 } / ) ,
376
+ data : {
377
+ 'http.response.status_code' : 200 ,
378
+ 'sentry.op' : 'http.server' ,
379
+ } ,
380
+ } ,
381
+ } ,
382
+ spans : [ ] ,
383
+ } ,
384
+ } )
385
+ . expect ( {
386
+ transaction : {
387
+ transaction : 'GET /test3-proxy-original' ,
388
+ contexts : {
389
+ trace : {
390
+ span_id : expect . stringMatching ( / [ a - f 0 - 9 ] { 16 } / ) ,
391
+ trace_id : expect . stringMatching ( / [ a - f 0 - 9 ] { 32 } / ) ,
392
+ data : {
393
+ 'http.response.status_code' : 200 ,
394
+ 'sentry.op' : 'http.server' ,
395
+ } ,
396
+ } ,
397
+ } ,
398
+ spans : [ ] ,
399
+ } ,
400
+ } )
401
+ . start ( ) ;
402
+
403
+ await runner . makeRequest ( 'get' , '/test1-proxy-original' ) ;
404
+ await runner . makeRequest ( 'get' , '/test2-proxy-original' ) ;
405
+ await runner . makeRequest ( 'get' , '/test3-proxy-original' ) ;
406
+ await runner . completed ( ) ;
407
+ } ) ;
408
+ } ,
409
+ ) ;
410
+ } ) ;
171
411
} ) ;
172
412
173
413
describe ( "doesn't create a root span for incoming requests ignored via `ignoreIncomingRequests`" , ( ) => {
0 commit comments