()
| 551 | |
| 552 | #[test] |
| 553 | fn batch_deferred_writes_and_flush() { |
| 554 | let dir = tempfile::tempdir().unwrap(); |
| 555 | let dwb_path = dir.path().join("batch.dwb"); |
| 556 | |
| 557 | let mut dwb = open_buffered(&dwb_path); |
| 558 | |
| 559 | for lsn in 1..=5u64 { |
| 560 | let record = WalRecord::new( |
| 561 | RecordType::Put as u32, |
| 562 | lsn, |
| 563 | 1, |
| 564 | 0, |
| 565 | 0, |
| 566 | format!("batch-{lsn}").into_bytes(), |
| 567 | None, |
| 568 | None, |
| 569 | ) |
| 570 | .unwrap(); |
| 571 | dwb.write_record_deferred(&record).unwrap(); |
| 572 | } |
| 573 | |
| 574 | assert!(dwb.dirty); |
| 575 | dwb.flush().unwrap(); |
| 576 | assert!(!dwb.dirty); |
| 577 | |
| 578 | for lsn in 1..=5u64 { |
| 579 | let recovered = dwb.recover_record(lsn).unwrap(); |
| 580 | assert!(recovered.is_some(), "LSN {lsn} should be recoverable"); |
| 581 | assert_eq!( |
| 582 | recovered.unwrap().payload, |
| 583 | format!("batch-{lsn}").into_bytes() |
| 584 | ); |
| 585 | } |
| 586 | } |
| 587 | |
| 588 | #[test] |
| 589 | fn flush_is_idempotent() { |
nothing calls this directly
no test coverage detected