mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-08-13 02:33:05 -07:00
108 lines
2.4 KiB
Rust
108 lines
2.4 KiB
Rust
use lsm_tree::{AbstractTree, Guard, SeqNo, SequenceNumberCounter, get_tmp_folder};
|
|
use test_log::test;
|
|
|
|
#[test]
|
|
fn tree_weak_delete_queue() -> lsm_tree::Result<()> {
|
|
let folder = get_tmp_folder();
|
|
|
|
let path = folder.path();
|
|
|
|
let tree = lsm_tree::Config::new(
|
|
path,
|
|
SequenceNumberCounter::default(),
|
|
SequenceNumberCounter::default(),
|
|
)
|
|
.open()?;
|
|
|
|
tree.insert("a", "a", 0);
|
|
tree.insert("b", "b", 0);
|
|
tree.insert("c", "c", 0);
|
|
tree.insert("d", "d", 0);
|
|
tree.insert("e", "e", 0);
|
|
assert_eq!(
|
|
b"a",
|
|
&*tree.first_key_value(SeqNo::MAX, None).unwrap().key()?
|
|
);
|
|
|
|
tree.remove_weak("a", 1);
|
|
assert_eq!(
|
|
b"b",
|
|
&*tree.first_key_value(SeqNo::MAX, None).unwrap().key()?
|
|
);
|
|
|
|
tree.remove_weak("b", 1);
|
|
assert_eq!(
|
|
b"c",
|
|
&*tree.first_key_value(SeqNo::MAX, None).unwrap().key()?
|
|
);
|
|
|
|
tree.remove_weak("c", 1);
|
|
assert_eq!(
|
|
b"d",
|
|
&*tree.first_key_value(SeqNo::MAX, None).unwrap().key()?
|
|
);
|
|
|
|
tree.remove_weak("d", 1);
|
|
assert_eq!(
|
|
b"e",
|
|
&*tree.first_key_value(SeqNo::MAX, None).unwrap().key()?
|
|
);
|
|
|
|
tree.remove_weak("e", 1);
|
|
assert!(tree.is_empty(SeqNo::MAX, None)?);
|
|
|
|
Ok(())
|
|
}
|
|
|
|
#[test]
|
|
fn tree_weak_delete_queue_reverse() -> lsm_tree::Result<()> {
|
|
let folder = tempfile::tempdir()?;
|
|
let path = folder.path();
|
|
|
|
let tree = lsm_tree::Config::new(
|
|
path,
|
|
SequenceNumberCounter::default(),
|
|
SequenceNumberCounter::default(),
|
|
)
|
|
.open()?;
|
|
|
|
tree.insert("a", "a", 0);
|
|
tree.insert("b", "b", 0);
|
|
tree.insert("c", "c", 0);
|
|
tree.insert("d", "d", 0);
|
|
tree.insert("e", "e", 0);
|
|
assert_eq!(
|
|
b"e",
|
|
&*tree.last_key_value(SeqNo::MAX, None).unwrap().key()?
|
|
);
|
|
|
|
tree.remove_weak("e", 1);
|
|
assert_eq!(
|
|
b"d",
|
|
&*tree.last_key_value(SeqNo::MAX, None).unwrap().key()?
|
|
);
|
|
|
|
tree.remove_weak("d", 1);
|
|
assert_eq!(
|
|
b"c",
|
|
&*tree.last_key_value(SeqNo::MAX, None).unwrap().key()?
|
|
);
|
|
|
|
tree.remove_weak("c", 1);
|
|
assert_eq!(
|
|
b"b",
|
|
&*tree.last_key_value(SeqNo::MAX, None).unwrap().key()?
|
|
);
|
|
|
|
tree.remove_weak("b", 1);
|
|
assert_eq!(
|
|
b"a",
|
|
&*tree.last_key_value(SeqNo::MAX, None).unwrap().key()?
|
|
);
|
|
|
|
tree.remove_weak("a", 1);
|
|
assert!(tree.is_empty(SeqNo::MAX, None)?);
|
|
|
|
Ok(())
|
|
}
|