MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / batch_deferred_writes_and_flush

Function batch_deferred_writes_and_flush

nodedb-wal/src/double_write.rs:553–586  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

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() {

Callers

nothing calls this directly

Calls 6

open_bufferedFunction · 0.85
joinMethod · 0.80
write_record_deferredMethod · 0.80
recover_recordMethod · 0.80
pathMethod · 0.45
flushMethod · 0.45

Tested by

no test coverage detected