@@ -273,4 +273,38 @@ mod tests {
273273 "Buffers should be empty after a checkpointed file"
274274 ) ;
275275 }
276+
277+ #[ tokio:: test]
278+ async fn test_build_multiple_files ( ) {
279+ let wal_dir = setup_test_wal_dir ( "multiple_files" ) ;
280+
281+ // 일부러 페이지 사이즈를 작게 설정
282+ let mut config = get_test_config ( & wal_dir) ;
283+ config. wal_segment_size = 20 ; // 20 바이트
284+
285+ let builder = WALBuilder :: new ( & config) ;
286+ let encoder = BitcodeEncoder :: new ( ) ;
287+ let decoder = BitcodeDecoder :: new ( ) ;
288+
289+ let wal_manager = builder
290+ . build ( decoder, encoder)
291+ . await
292+ . expect ( "Failed to build WAL manager" ) ;
293+
294+ assert_eq ! ( wal_manager. sequence, 1 , "Sequence should be 1" ) ;
295+
296+ // 여러개로 분산 처리 되는지 확인
297+ let entries_seq1 = vec ! [
298+ create_entry( EntryType :: Insert , Some ( "helloworld" ) ) , // 10바이트
299+ create_entry( EntryType :: Set , Some ( "data2" ) ) , // 5바이트
300+ ] ;
301+ write_wal_file ( & config, 1 , & entries_seq1) ;
302+
303+ // 여기서 기본 페이지 사이즈보다 크게
304+ let entries_seq2 = vec ! [
305+ create_entry( EntryType :: Insert , Some ( "helloworld" ) ) , // 10바이트
306+ create_entry( EntryType :: Set , Some ( "data2" ) ) , // 5바이트
307+ ] ;
308+ write_wal_file ( & config, 2 , & entries_seq2) ;
309+ }
276310}
0 commit comments