@@ -56,32 +56,29 @@ test('should warn if invalid event is provide', async () => {
5656} )
5757
5858test ( 'should harvest early if will exceed 1mb' , async ( ) => {
59- mainAgent . runtime . harvester . triggerHarvestFor = jest . fn ( )
60- expect ( mainAgent . runtime . harvester . triggerHarvestFor ) . toHaveBeenCalledTimes ( 0 )
59+ const triggerHarvestSpy = jest . spyOn ( mainAgent . runtime . harvester , ' triggerHarvestFor' ) . mockImplementation ( ( ) => { } )
60+ expect ( triggerHarvestSpy ) . toHaveBeenCalledTimes ( 0 )
6161 genericEventsAggregate . ee . emit ( 'rumresp' , [ { ins : 1 } ] )
6262 await new Promise ( process . nextTick )
63- expect ( mainAgent . runtime . harvester . triggerHarvestFor ) . toHaveBeenCalledTimes ( 1 )
63+ expect ( triggerHarvestSpy ) . toHaveBeenCalledTimes ( 1 )
6464
6565 genericEventsAggregate . addEvent ( { name : 'test' , eventType : 'x' . repeat ( 15000 ) } )
6666
67- expect ( mainAgent . runtime . harvester . triggerHarvestFor ) . toHaveBeenCalledTimes ( 1 )
67+ expect ( triggerHarvestSpy ) . toHaveBeenCalledTimes ( 1 )
6868 genericEventsAggregate . addEvent ( { name : 1000 , eventType : 'x' . repeat ( 100000 ) } )
69- expect ( mainAgent . runtime . harvester . triggerHarvestFor ) . toHaveBeenCalledTimes ( 2 )
70-
71- mainAgent . runtime . harvester . triggerHarvestFor . mockRestore ( )
69+ expect ( triggerHarvestSpy ) . toHaveBeenCalledTimes ( 2 )
70+ triggerHarvestSpy . mockRestore ( )
7271} )
7372
7473test ( 'should not harvest if single event will exceed 1mb' , async ( ) => {
7574 genericEventsAggregate . ee . emit ( 'rumresp' , [ { ins : 1 } ] )
76-
7775 await new Promise ( process . nextTick )
76+ const triggerHarvestSpy = jest . spyOn ( mainAgent . runtime . harvester , 'triggerHarvestFor' ) . mockImplementation ( ( ) => { } )
7877
79- mainAgent . runtime . harvester . triggerHarvestFor = jest . fn ( )
8078 genericEventsAggregate . addEvent ( { name : 'test' , eventType : 'x' . repeat ( 1000000 ) } )
8179
82- expect ( mainAgent . runtime . harvester . triggerHarvestFor ) . not . toHaveBeenCalled ( )
83-
84- mainAgent . runtime . harvester . triggerHarvestFor . mockRestore ( )
80+ expect ( triggerHarvestSpy ) . toHaveBeenCalledTimes ( 0 )
81+ triggerHarvestSpy . mockRestore ( )
8582} )
8683
8784describe ( 'sub-features' , ( ) => {
@@ -234,7 +231,8 @@ describe('sub-features', () => {
234231 test ( 'should record marks when enabled' , async ( ) => {
235232 mainAgent . init . performance . capture_marks = true
236233 mainAgent . info . jsAttributes = { globalFoo : 'globalBar' }
237- const mockPerformanceObserver = jest . fn ( cb => ( {
234+ const origGlobalPO = global . PerformanceObserver
235+ global . PerformanceObserver = jest . fn ( cb => ( {
238236 observe : ( ) => {
239237 const callCb = ( ) => {
240238 // eslint-disable-next-line
@@ -251,13 +249,15 @@ describe('sub-features', () => {
251249 disconnect : jest . fn ( )
252250 } ) )
253251
254- global . PerformanceObserver = mockPerformanceObserver
255252 global . PerformanceObserver . supportedEntryTypes = [ 'mark' ]
256253
257254 const { Aggregate } = await import ( '../../../../src/features/generic_events/aggregate' )
258255 genericEventsAggregate = new Aggregate ( mainAgent )
259256 expect ( genericEventsAggregate . events ?. [ 0 ] ) . toBeUndefined ( )
260257
258+ // temporarily swap out triggerHarvestFor so the buffer doesn't get emptied before we can check
259+ const triggerHarvestSpy = jest . spyOn ( mainAgent . runtime . harvester , 'triggerHarvestFor' ) . mockImplementation ( ( ) => { } )
260+
261261 genericEventsAggregate . ee . emit ( 'rumresp' , [ { ins : 1 } ] )
262262 await new Promise ( process . nextTick )
263263
@@ -269,12 +269,16 @@ describe('sub-features', () => {
269269 entryType : 'mark' ,
270270 entryDetail : JSON . stringify ( { foo : 'bar' } )
271271 } )
272+
273+ triggerHarvestSpy . mockRestore ( )
274+ global . PerformanceObserver = origGlobalPO
272275 } )
273276
274277 test ( 'should record measures when enabled' , async ( ) => {
275278 mainAgent . init . performance = { capture_measures : true , capture_detail : true , resources : { enabled : false , asset_types : [ ] , first_party_domains : [ ] , ignore_newrelic : true } }
276279 mainAgent . info . jsAttributes = { globalFoo : 'globalBar' }
277- const mockPerformanceObserver = jest . fn ( cb => ( {
280+ const origGlobalPO = global . PerformanceObserver
281+ global . PerformanceObserver = jest . fn ( cb => ( {
278282 observe : ( ) => {
279283 const callCb = ( ) => {
280284 // eslint-disable-next-line
@@ -291,13 +295,15 @@ describe('sub-features', () => {
291295 disconnect : jest . fn ( )
292296 } ) )
293297
294- global . PerformanceObserver = mockPerformanceObserver
295298 global . PerformanceObserver . supportedEntryTypes = [ 'measure' ]
296299
297300 const { Aggregate } = await import ( '../../../../src/features/generic_events/aggregate' )
298301 genericEventsAggregate = new Aggregate ( mainAgent )
299302 expect ( genericEventsAggregate . events ?. [ 0 ] ) . toBeUndefined ( )
300303
304+ // temporarily swap out triggerHarvestFor so the buffer doesn't get emptied before we can check
305+ const triggerHarvestSpy = jest . spyOn ( mainAgent . runtime . harvester , 'triggerHarvestFor' ) . mockImplementation ( ( ) => { } )
306+
301307 genericEventsAggregate . ee . emit ( 'rumresp' , [ { ins : 1 } ] )
302308 await new Promise ( process . nextTick )
303309
@@ -309,5 +315,8 @@ describe('sub-features', () => {
309315 entryType : 'measure' ,
310316 'entryDetail.foo' : 'bar'
311317 } )
318+
319+ triggerHarvestSpy . mockRestore ( )
320+ global . PerformanceObserver = origGlobalPO
312321 } )
313322} )
0 commit comments