Skip to content

Commit 253daa6

Browse files
committed
add simple test for WAL API bindings
1 parent ae16b5b commit 253daa6

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

libsql/src/local/connection.rs

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -706,3 +706,54 @@ impl fmt::Debug for Connection {
706706
f.debug_struct("Connection").finish()
707707
}
708708
}
709+
710+
#[cfg(test)]
711+
mod tests {
712+
use crate::{
713+
local::{Connection, Database},
714+
params::Params,
715+
OpenFlags,
716+
};
717+
718+
#[tokio::test]
719+
pub async fn test_kek() {
720+
let temp_dir = tempfile::tempdir().unwrap();
721+
let path1 = temp_dir.path().join("local1.db");
722+
let db1 = Database::new(path1.to_str().unwrap().to_string(), OpenFlags::default());
723+
let conn1 = Connection::connect(&db1).unwrap();
724+
conn1
725+
.query("PRAGMA journal_mode = WAL", Params::None)
726+
.unwrap();
727+
conn1.wal_disable_checkpoint().unwrap();
728+
729+
let path2 = temp_dir.path().join("local2.db");
730+
let db2 = Database::new(path2.to_str().unwrap().to_string(), OpenFlags::default());
731+
let conn2 = Connection::connect(&db2).unwrap();
732+
conn2
733+
.query("PRAGMA journal_mode = WAL", Params::None)
734+
.unwrap();
735+
conn2.wal_disable_checkpoint().unwrap();
736+
737+
conn1.execute("CREATE TABLE t(x)", Params::None).unwrap();
738+
const CNT: usize = 32;
739+
for _ in 0..CNT {
740+
conn1
741+
.execute(
742+
"INSERT INTO t VALUES (randomblob(1024 * 1024))",
743+
Params::None,
744+
)
745+
.unwrap();
746+
}
747+
let handle = conn2.wal_insert_handle().unwrap();
748+
let frame_count = conn1.wal_frame_count();
749+
for frame_no in 0..frame_count {
750+
let frame = conn1.wal_get_frame(frame_no + 1, 4096).unwrap();
751+
handle.insert_at(frame_no as u32 + 1, &frame).unwrap();
752+
}
753+
let result = conn2.query("SELECT COUNT(*) FROM t", Params::None).unwrap();
754+
let row = result.unwrap().next().unwrap().unwrap();
755+
let column = row.get_value(0).unwrap();
756+
let cnt = *column.as_integer().unwrap();
757+
assert_eq!(cnt, 32 as i64);
758+
}
759+
}

0 commit comments

Comments
 (0)