use aok::Void;
use tempfile::tempdir;
use wedb_embed::{Compression, Conf, PersistMode, WeDb, prelude::*};
#[test]
fn test_conf_enum_and_unified_open() -> Void {
let dir = tempdir()?;
let db = WeDb::open(
dir.path(),
[
Conf::CacheSize(64 * 1024 * 1024),
Conf::DataBlockSize(4 * 1024),
Conf::MetaBlockSize(4 * 1024),
Conf::DataMemtableSize(16 * 1024 * 1024),
Conf::MetaMemtableSize(8 * 1024 * 1024),
Conf::KvSeparationThreshold(2048),
Conf::DataHashRatio(0.8),
Conf::ExpectPointReadHits(true),
Conf::PersistIntervalMs(20),
Conf::PersistMode(PersistMode::SyncData),
Conf::Compression(Compression::Lz4),
Conf::JournalCompression(Compression::None),
Conf::Temporary(false),
],
)?;
db.set("conf_key", "conf_val", &[])?;
let val = db.get("conf_key")?;
assert_eq!(val, Some(b"conf_val".to_vec()));
Ok(())
}
#[test]
fn test_default_conf_open() -> Void {
let dir = tempdir()?;
let db = WeDb::open(dir.path(), [])?;
db.set("default_key", "default_val", &[])?;
assert_eq!(db.get("default_key")?, Some(b"default_val".to_vec()));
Ok(())
}
#[test]
fn test_conf_extended_options() -> Void {
let dir = tempdir()?;
let db = WeDb::open(
dir.path(),
[
Conf::WorkerThreads(2),
Conf::MaxJournalingSize(64 * 1024 * 1024),
Conf::MaxCachedFiles(128),
Conf::DisableKvSeparation,
Conf::ManualJournalPersist(false),
Conf::PersistMode(PersistMode::Buffer),
Conf::Temporary(true),
],
)?;
db.set("ext_key", "ext_val", &[])?;
assert_eq!(db.get("ext_key")?, Some(b"ext_val".to_vec()));
Ok(())
}