1
+ import type { Hub } from '@sentry/core' ;
1
2
import { IdleTransaction , Transaction } from '@sentry/tracing' ;
2
3
import type { Event } from '@sentry/types' ;
3
4
@@ -8,15 +9,6 @@ const mockHub = {
8
9
getClient : jest . fn ( ) ,
9
10
} ;
10
11
11
- jest . mock ( '@sentry/core' , ( ) => {
12
- const hubOriginal = jest . requireActual ( '@sentry/core' ) ;
13
-
14
- return {
15
- ...hubOriginal ,
16
- getCurrentHub : ( ) => mockHub ,
17
- } ;
18
- } ) ;
19
-
20
12
const getLastEvent = ( ) : Event => {
21
13
return mockHub . captureEvent . mock . calls [ mockHub . captureEvent . mock . calls . length - 1 ] [ 0 ] ;
22
14
} ;
@@ -37,13 +29,18 @@ beforeEach(() => {
37
29
} ) ;
38
30
39
31
describe ( 'StallTracking' , ( ) => {
32
+ const localHub : Hub = mockHub as unknown as Hub ;
33
+
40
34
it ( 'Stall tracking detects a JS stall' , ( done ) => {
41
35
const stallTracking = new StallTrackingInstrumentation ( ) ;
42
36
43
- const transaction = new Transaction ( {
44
- name : 'Test Transaction' ,
45
- sampled : true ,
46
- } ) ;
37
+ const transaction = new Transaction (
38
+ {
39
+ name : 'Test Transaction' ,
40
+ sampled : true ,
41
+ } ,
42
+ localHub ,
43
+ ) ;
47
44
transaction . initSpanRecorder ( ) ;
48
45
49
46
stallTracking . onTransactionStart ( transaction ) ;
@@ -75,10 +72,13 @@ describe('StallTracking', () => {
75
72
it ( 'Stall tracking detects multiple JS stalls' , ( done ) => {
76
73
const stallTracking = new StallTrackingInstrumentation ( ) ;
77
74
78
- const transaction = new Transaction ( {
79
- name : 'Test Transaction' ,
80
- sampled : true ,
81
- } ) ;
75
+ const transaction = new Transaction (
76
+ {
77
+ name : 'Test Transaction' ,
78
+ sampled : true ,
79
+ } ,
80
+ localHub ,
81
+ ) ;
82
82
transaction . initSpanRecorder ( ) ;
83
83
84
84
stallTracking . onTransactionStart ( transaction ) ;
@@ -108,10 +108,13 @@ describe('StallTracking', () => {
108
108
it ( 'Stall tracking timeout is stopped after finishing all transactions (single)' , ( ) => {
109
109
const stallTracking = new StallTrackingInstrumentation ( ) ;
110
110
111
- const transaction = new Transaction ( {
112
- name : 'Test Transaction' ,
113
- sampled : true ,
114
- } ) ;
111
+ const transaction = new Transaction (
112
+ {
113
+ name : 'Test Transaction' ,
114
+ sampled : true ,
115
+ } ,
116
+ localHub ,
117
+ ) ;
115
118
116
119
stallTracking . onTransactionStart ( transaction ) ;
117
120
@@ -128,18 +131,27 @@ describe('StallTracking', () => {
128
131
it ( 'Stall tracking timeout is stopped after finishing all transactions (multiple)' , ( done ) => {
129
132
const stallTracking = new StallTrackingInstrumentation ( ) ;
130
133
131
- const transaction0 = new Transaction ( {
132
- name : 'Test Transaction 0' ,
133
- sampled : true ,
134
- } ) ;
135
- const transaction1 = new Transaction ( {
136
- name : 'Test Transaction 1' ,
137
- sampled : true ,
138
- } ) ;
139
- const transaction2 = new Transaction ( {
140
- name : 'Test Transaction 2' ,
141
- sampled : true ,
142
- } ) ;
134
+ const transaction0 = new Transaction (
135
+ {
136
+ name : 'Test Transaction 0' ,
137
+ sampled : true ,
138
+ } ,
139
+ localHub ,
140
+ ) ;
141
+ const transaction1 = new Transaction (
142
+ {
143
+ name : 'Test Transaction 1' ,
144
+ sampled : true ,
145
+ } ,
146
+ localHub ,
147
+ ) ;
148
+ const transaction2 = new Transaction (
149
+ {
150
+ name : 'Test Transaction 2' ,
151
+ sampled : true ,
152
+ } ,
153
+ localHub ,
154
+ ) ;
143
155
144
156
stallTracking . onTransactionStart ( transaction0 ) ;
145
157
stallTracking . onTransactionStart ( transaction1 ) ;
@@ -177,10 +189,13 @@ describe('StallTracking', () => {
177
189
it ( 'Stall tracking returns measurements format on finish' , ( ) => {
178
190
const stallTracking = new StallTrackingInstrumentation ( ) ;
179
191
180
- const transaction = new Transaction ( {
181
- name : 'Test Transaction' ,
182
- sampled : true ,
183
- } ) ;
192
+ const transaction = new Transaction (
193
+ {
194
+ name : 'Test Transaction' ,
195
+ sampled : true ,
196
+ } ,
197
+ localHub ,
198
+ ) ;
184
199
185
200
stallTracking . onTransactionStart ( transaction ) ;
186
201
@@ -200,10 +215,13 @@ describe('StallTracking', () => {
200
215
it ( "Stall tracking returns null on a custom endTimestamp that is not a span's" , ( ) => {
201
216
const stallTracking = new StallTrackingInstrumentation ( ) ;
202
217
203
- const transaction = new Transaction ( {
204
- name : 'Test Transaction' ,
205
- sampled : true ,
206
- } ) ;
218
+ const transaction = new Transaction (
219
+ {
220
+ name : 'Test Transaction' ,
221
+ sampled : true ,
222
+ } ,
223
+ localHub ,
224
+ ) ;
207
225
208
226
stallTracking . onTransactionStart ( transaction ) ;
209
227
@@ -217,11 +235,14 @@ describe('StallTracking', () => {
217
235
it ( 'Stall tracking supports endTimestamp that is from the last span (trimEnd case)' , ( done ) => {
218
236
const stallTracking = new StallTrackingInstrumentation ( ) ;
219
237
220
- const transaction = new Transaction ( {
221
- name : 'Test Transaction' ,
222
- trimEnd : true ,
223
- sampled : true ,
224
- } ) ;
238
+ const transaction = new Transaction (
239
+ {
240
+ name : 'Test Transaction' ,
241
+ trimEnd : true ,
242
+ sampled : true ,
243
+ } ,
244
+ localHub ,
245
+ ) ;
225
246
transaction . initSpanRecorder ( ) ;
226
247
227
248
stallTracking . onTransactionStart ( transaction ) ;
@@ -262,11 +283,14 @@ describe('StallTracking', () => {
262
283
it ( 'Stall tracking rejects endTimestamp that is from the last span if trimEnd is false (trimEnd case)' , ( done ) => {
263
284
const stallTracking = new StallTrackingInstrumentation ( ) ;
264
285
265
- const transaction = new Transaction ( {
266
- name : 'Test Transaction' ,
267
- trimEnd : false ,
268
- sampled : true ,
269
- } ) ;
286
+ const transaction = new Transaction (
287
+ {
288
+ name : 'Test Transaction' ,
289
+ trimEnd : false ,
290
+ sampled : true ,
291
+ } ,
292
+ localHub ,
293
+ ) ;
270
294
transaction . initSpanRecorder ( ) ;
271
295
272
296
stallTracking . onTransactionStart ( transaction ) ;
@@ -299,10 +323,13 @@ describe('StallTracking', () => {
299
323
it ( 'Stall tracking rejects endTimestamp even if it is a span time (custom endTimestamp case)' , ( done ) => {
300
324
const stallTracking = new StallTrackingInstrumentation ( ) ;
301
325
302
- const transaction = new Transaction ( {
303
- name : 'Test Transaction' ,
304
- sampled : true ,
305
- } ) ;
326
+ const transaction = new Transaction (
327
+ {
328
+ name : 'Test Transaction' ,
329
+ sampled : true ,
330
+ } ,
331
+ localHub ,
332
+ ) ;
306
333
transaction . initSpanRecorder ( ) ;
307
334
308
335
stallTracking . onTransactionStart ( transaction ) ;
@@ -338,13 +365,16 @@ describe('StallTracking', () => {
338
365
it ( 'Stall tracking supports idleTransaction with unfinished spans' , async ( ) => {
339
366
jest . useFakeTimers ( ) ;
340
367
const stallTracking = new StallTrackingInstrumentation ( ) ;
341
- const localHub = mockHub ;
342
- const idleTransaction = new IdleTransaction ( {
343
- name : 'Test Transaction' ,
344
- trimEnd : true ,
345
- sampled : true ,
346
- // @ts -ignore use the mocked hub.
347
- } , localHub , undefined , undefined ) ;
368
+ const idleTransaction = new IdleTransaction (
369
+ {
370
+ name : 'Test Transaction' ,
371
+ trimEnd : true ,
372
+ sampled : true ,
373
+ } ,
374
+ localHub ,
375
+ undefined ,
376
+ undefined ,
377
+ ) ;
348
378
idleTransaction . initSpanRecorder ( ) ;
349
379
350
380
stallTracking . onTransactionStart ( idleTransaction ) ;
@@ -381,11 +411,14 @@ describe('StallTracking', () => {
381
411
it ( 'Stall tracking ignores unfinished spans in normal transactions' , ( done ) => {
382
412
const stallTracking = new StallTrackingInstrumentation ( ) ;
383
413
384
- const transaction = new Transaction ( {
385
- name : 'Test Transaction' ,
386
- trimEnd : true ,
387
- sampled : true ,
388
- } ) ;
414
+ const transaction = new Transaction (
415
+ {
416
+ name : 'Test Transaction' ,
417
+ trimEnd : true ,
418
+ sampled : true ,
419
+ } ,
420
+ localHub ,
421
+ ) ;
389
422
transaction . initSpanRecorder ( ) ;
390
423
391
424
stallTracking . onTransactionStart ( transaction ) ;
@@ -426,11 +459,14 @@ describe('StallTracking', () => {
426
459
it ( 'Stall tracking only measures stalls inside the final time when trimEnd is used' , ( done ) => {
427
460
const stallTracking = new StallTrackingInstrumentation ( ) ;
428
461
429
- const transaction = new Transaction ( {
430
- name : 'Test Transaction' ,
431
- trimEnd : true ,
432
- sampled : true ,
433
- } ) ;
462
+ const transaction = new Transaction (
463
+ {
464
+ name : 'Test Transaction' ,
465
+ trimEnd : true ,
466
+ sampled : true ,
467
+ } ,
468
+ localHub ,
469
+ ) ;
434
470
transaction . initSpanRecorder ( ) ;
435
471
436
472
stallTracking . onTransactionStart ( transaction ) ;
@@ -474,10 +510,13 @@ describe('StallTracking', () => {
474
510
const stallTracking = new StallTrackingInstrumentation ( ) ;
475
511
476
512
const transactions = new Array ( 11 ) . fill ( 0 ) . map ( ( _ , i ) => {
477
- const transaction = new Transaction ( {
478
- name : `Test Transaction ${ i } ` ,
479
- sampled : true ,
480
- } ) ;
513
+ const transaction = new Transaction (
514
+ {
515
+ name : `Test Transaction ${ i } ` ,
516
+ sampled : true ,
517
+ } ,
518
+ localHub ,
519
+ ) ;
481
520
482
521
stallTracking . onTransactionStart ( transaction ) ;
483
522
0 commit comments