@@ -3,8 +3,9 @@ import 'jsdom-worker';
33import pako from 'pako' ;
44
55import { BASE_TIMESTAMP } from '../..' ;
6+ import { REPLAY_MAX_EVENT_BUFFER_SIZE } from '../../../src/constants' ;
67import { EventBufferProxy } from '../../../src/eventBuffer/EventBufferProxy' ;
7- import { createEventBuffer } from './../../../src/eventBuffer' ;
8+ import { createEventBuffer , EventBufferSizeExceededError } from './../../../src/eventBuffer' ;
89
910const TEST_EVENT = { data : { } , timestamp : BASE_TIMESTAMP , type : 3 } ;
1011
@@ -146,4 +147,71 @@ describe('Unit | eventBuffer | EventBufferCompressionWorker', () => {
146147
147148 await expect ( ( ) => buffer . addEvent ( { data : { o : 3 } , timestamp : BASE_TIMESTAMP , type : 3 } ) ) . rejects . toBeDefined ( ) ;
148149 } ) ;
150+
151+ describe ( 'size limit' , ( ) => {
152+ it ( 'rejects if size exceeds limit' , async function ( ) {
153+ const buffer = createEventBuffer ( {
154+ useCompression : true ,
155+ } ) as EventBufferProxy ;
156+
157+ expect ( buffer ) . toBeInstanceOf ( EventBufferProxy ) ;
158+ await buffer . ensureWorkerIsLoaded ( ) ;
159+
160+ const largeEvent = {
161+ data : { a : 'a' . repeat ( REPLAY_MAX_EVENT_BUFFER_SIZE / 3 ) } ,
162+ timestamp : BASE_TIMESTAMP ,
163+ type : 3 ,
164+ } ;
165+
166+ await buffer . addEvent ( largeEvent ) ;
167+ await buffer . addEvent ( largeEvent ) ;
168+
169+ // Now it should error
170+ await expect ( ( ) => buffer . addEvent ( largeEvent ) ) . rejects . toThrowError ( EventBufferSizeExceededError ) ;
171+ } ) ;
172+
173+ it ( 'resets size limit on clear' , async function ( ) {
174+ const buffer = createEventBuffer ( {
175+ useCompression : true ,
176+ } ) as EventBufferProxy ;
177+
178+ expect ( buffer ) . toBeInstanceOf ( EventBufferProxy ) ;
179+ await buffer . ensureWorkerIsLoaded ( ) ;
180+
181+ const largeEvent = {
182+ data : { a : 'a' . repeat ( REPLAY_MAX_EVENT_BUFFER_SIZE / 3 ) } ,
183+ timestamp : BASE_TIMESTAMP ,
184+ type : 3 ,
185+ } ;
186+
187+ await buffer . addEvent ( largeEvent ) ;
188+ await buffer . addEvent ( largeEvent ) ;
189+
190+ await buffer . clear ( ) ;
191+
192+ await buffer . addEvent ( largeEvent ) ;
193+ } ) ;
194+
195+ it ( 'resets size limit on finish' , async function ( ) {
196+ const buffer = createEventBuffer ( {
197+ useCompression : true ,
198+ } ) as EventBufferProxy ;
199+
200+ expect ( buffer ) . toBeInstanceOf ( EventBufferProxy ) ;
201+ await buffer . ensureWorkerIsLoaded ( ) ;
202+
203+ const largeEvent = {
204+ data : { a : 'a' . repeat ( REPLAY_MAX_EVENT_BUFFER_SIZE / 3 ) } ,
205+ timestamp : BASE_TIMESTAMP ,
206+ type : 3 ,
207+ } ;
208+
209+ await buffer . addEvent ( largeEvent ) ;
210+ await buffer . addEvent ( largeEvent ) ;
211+
212+ await buffer . finish ( ) ;
213+
214+ await buffer . addEvent ( largeEvent ) ;
215+ } ) ;
216+ } ) ;
149217} ) ;
0 commit comments