@@ -362,6 +362,58 @@ mod tests {
362362 assert_eq ! ( log. len( ) , 2 ) ;
363363 }
364364
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+
365417 #[ test]
366418 fn active_segment_appends_and_reads_works ( ) {
367419 let max_segment_size = 1024 * 100 ; // 100K
0 commit comments