@@ -362,6 +362,58 @@ mod tests {
362
362
assert_eq ! ( log. len( ) , 2 ) ;
363
363
}
364
364
365
+ #[ test]
366
+ fn should_not_fail ( ) {
367
+ let max_segment_size = 1024 * 100 ; // 100K
368
+ let packet_size: u64 = 1024 ;
369
+ // 1 as active only
370
+ let mut log = CommitLog :: new ( max_segment_size, 1 ) . unwrap ( ) ;
371
+
372
+ for i in 0 ..10 {
373
+ log. append ( random_payload ( i, packet_size) ) ;
374
+ }
375
+
376
+ assert_eq ! ( log. active_segment( ) . len( ) , 10 ) ;
377
+ assert_eq ! ( log. active_segment( ) . size( ) , packet_size * 10 ) ;
378
+
379
+ // Read one by one
380
+ let mut out = Vec :: new ( ) ;
381
+ let mut last_read_cursor = ( 0 , 0 ) ;
382
+ for i in 0 ..10 {
383
+ let offset = i as u64 ;
384
+ let next = log. readv ( ( 0 , offset) , 1 , & mut out) . unwrap ( ) ;
385
+ let data = out. pop ( ) . unwrap ( ) ;
386
+ verify ( i, packet_size, data) ;
387
+
388
+ if i == 9 {
389
+ if let Done { start : _, end } = next {
390
+ last_read_cursor = end;
391
+ } ;
392
+ assert_eq ! (
393
+ next,
394
+ Done {
395
+ start: ( 0 , 9 ) ,
396
+ end: ( 1 , 10 )
397
+ }
398
+ ) ;
399
+ continue ;
400
+ }
401
+
402
+ assert_eq ! (
403
+ next,
404
+ Next {
405
+ start: ( 0 , i as u64 ) ,
406
+ end: ( 0 , i as u64 + 1 )
407
+ }
408
+ ) ;
409
+ }
410
+
411
+ log. append ( random_payload ( 10 , packet_size) ) ;
412
+ log. readv ( last_read_cursor, 1 , & mut out) . unwrap ( ) ;
413
+ let data = out. pop ( ) . unwrap ( ) ;
414
+ verify ( 10 , packet_size, data) ;
415
+ }
416
+
365
417
#[ test]
366
418
fn active_segment_appends_and_reads_works ( ) {
367
419
let max_segment_size = 1024 * 100 ; // 100K
0 commit comments