mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-08-13 02:33:05 -07:00
60 lines
1.9 KiB
Rust
60 lines
1.9 KiB
Rust
use lsm_tree::{AbstractTree, Config, SeqNo, SequenceNumberCounter, get_tmp_folder};
|
|
use test_log::test;
|
|
|
|
#[test]
|
|
fn tree_write_and_read() -> lsm_tree::Result<()> {
|
|
let folder = get_tmp_folder();
|
|
|
|
let tree = Config::new(
|
|
&folder,
|
|
SequenceNumberCounter::default(),
|
|
SequenceNumberCounter::default(),
|
|
)
|
|
.open()?;
|
|
|
|
tree.insert("a".as_bytes(), nanoid::nanoid!().as_bytes(), 0);
|
|
tree.insert("b".as_bytes(), nanoid::nanoid!().as_bytes(), 1);
|
|
tree.insert("c".as_bytes(), nanoid::nanoid!().as_bytes(), 2);
|
|
|
|
let item = tree.get_internal_entry(b"a", SeqNo::MAX)?.unwrap();
|
|
assert_eq!(&*item.key.user_key, "a".as_bytes());
|
|
assert!(!item.is_tombstone());
|
|
assert_eq!(item.key.seqno, 0);
|
|
|
|
let item = tree.get_internal_entry(b"b", SeqNo::MAX)?.unwrap();
|
|
assert_eq!(&*item.key.user_key, "b".as_bytes());
|
|
assert!(!item.is_tombstone());
|
|
assert_eq!(item.key.seqno, 1);
|
|
|
|
let item = tree.get_internal_entry(b"c", SeqNo::MAX)?.unwrap();
|
|
assert_eq!(&*item.key.user_key, "c".as_bytes());
|
|
assert!(!item.is_tombstone());
|
|
assert_eq!(item.key.seqno, 2);
|
|
|
|
tree.flush_active_memtable(0)?;
|
|
|
|
let tree = Config::new(
|
|
&folder,
|
|
SequenceNumberCounter::default(),
|
|
SequenceNumberCounter::default(),
|
|
)
|
|
.open()?;
|
|
|
|
let item = tree.get_internal_entry(b"a", SeqNo::MAX)?.unwrap();
|
|
assert_eq!(&*item.key.user_key, "a".as_bytes());
|
|
assert!(!item.is_tombstone());
|
|
assert_eq!(item.key.seqno, 0);
|
|
|
|
let item = tree.get_internal_entry(b"b", SeqNo::MAX)?.unwrap();
|
|
assert_eq!(&*item.key.user_key, "b".as_bytes());
|
|
assert!(!item.is_tombstone());
|
|
assert_eq!(item.key.seqno, 1);
|
|
|
|
let item = tree.get_internal_entry(b"c", SeqNo::MAX)?.unwrap();
|
|
assert_eq!(&*item.key.user_key, "c".as_bytes());
|
|
assert!(!item.is_tombstone());
|
|
assert_eq!(item.key.seqno, 2);
|
|
|
|
Ok(())
|
|
}
|