mirror of
https://github.com/aljazceru/turso.git
synced 2025-12-27 04:54:21 +01:00
core/mvcc/logical-log: refactor get log path in tests
This commit is contained in:
@@ -7,6 +7,7 @@ use parking_lot::RwLock;
|
||||
pub(crate) struct MvccTestDbNoConn {
|
||||
pub(crate) db: Option<Arc<Database>>,
|
||||
path: Option<String>,
|
||||
log_path: Option<String>,
|
||||
// Stored mainly to not drop the temp dir before the test is done.
|
||||
_temp_dir: Option<tempfile::TempDir>,
|
||||
}
|
||||
@@ -37,6 +38,7 @@ impl MvccTestDbNoConn {
|
||||
Self {
|
||||
db: Some(db),
|
||||
path: None,
|
||||
log_path: None,
|
||||
_temp_dir: None,
|
||||
}
|
||||
}
|
||||
@@ -52,9 +54,17 @@ impl MvccTestDbNoConn {
|
||||
println!("path: {}", path.as_os_str().to_str().unwrap());
|
||||
let db = Database::open_file(io.clone(), path.as_os_str().to_str().unwrap(), true, true)
|
||||
.unwrap();
|
||||
let mut log_path = path.clone();
|
||||
let log_path_filename = log_path
|
||||
.file_name()
|
||||
.and_then(|name| name.to_str())
|
||||
.map(|s| format!("{s}-lg"))
|
||||
.unwrap();
|
||||
log_path.set_file_name(log_path_filename);
|
||||
Self {
|
||||
db: Some(db),
|
||||
path: Some(path.to_str().unwrap().to_string()),
|
||||
log_path: Some(log_path.to_str().unwrap().to_string()),
|
||||
_temp_dir: Some(temp_dir),
|
||||
}
|
||||
}
|
||||
@@ -79,6 +89,10 @@ impl MvccTestDbNoConn {
|
||||
pub fn get_mvcc_store(&self) -> Arc<MvStore<LocalClock>> {
|
||||
self.get_db().mv_store.as_ref().unwrap().clone()
|
||||
}
|
||||
|
||||
pub fn get_log_path(&self) -> &str {
|
||||
self.log_path.as_ref().unwrap().as_str()
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn generate_simple_string_row(table_id: u64, id: i64, data: &str) -> Row {
|
||||
|
||||
@@ -470,7 +470,7 @@ pub fn load_logical_log(
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use std::{collections::HashSet, path::PathBuf, sync::Arc};
|
||||
use std::{collections::HashSet, sync::Arc};
|
||||
|
||||
use rand::{thread_rng, Rng};
|
||||
use rand_chacha::{
|
||||
@@ -498,7 +498,7 @@ mod tests {
|
||||
// Load a transaction
|
||||
// let's not drop db as we don't want files to be removed
|
||||
let db = MvccTestDbNoConn::new_with_random_db();
|
||||
let (db_path, io, pager) = {
|
||||
let (io, pager) = {
|
||||
let conn = db.connect();
|
||||
let pager = conn.pager.read().clone();
|
||||
let mvcc_store = db.get_mvcc_store();
|
||||
@@ -509,22 +509,13 @@ mod tests {
|
||||
commit_tx(mvcc_store.clone(), &conn, tx_id).unwrap();
|
||||
conn.close().unwrap();
|
||||
let db = db.get_db();
|
||||
(db.path.clone(), db.io.clone(), pager)
|
||||
(db.io.clone(), pager)
|
||||
};
|
||||
|
||||
// Now try to read it back
|
||||
let db_path = PathBuf::from(db_path);
|
||||
let mut log_file = db_path.clone();
|
||||
let filename = log_file
|
||||
.file_name()
|
||||
.and_then(|name| name.to_str())
|
||||
.map(|s| format!("{s}-lg"))
|
||||
.unwrap();
|
||||
log_file.set_file_name(filename);
|
||||
let log_file = db.get_log_path();
|
||||
|
||||
let file = io
|
||||
.open_file(log_file.to_str().unwrap(), OpenFlags::ReadOnly, false)
|
||||
.unwrap();
|
||||
let file = io.open_file(log_file, OpenFlags::ReadOnly, false).unwrap();
|
||||
let mvcc_store = Arc::new(MvStore::new(LocalClock::new(), Storage::new(file.clone())));
|
||||
load_logical_log(&mvcc_store, file, &io, &pager).unwrap();
|
||||
let tx = mvcc_store.begin_tx(pager.clone()).unwrap();
|
||||
@@ -545,7 +536,7 @@ mod tests {
|
||||
.collect::<Vec<(RowID, String)>>();
|
||||
// let's not drop db as we don't want files to be removed
|
||||
let db = MvccTestDbNoConn::new_with_random_db();
|
||||
let (db_path, io, pager) = {
|
||||
let (io, pager) = {
|
||||
let conn = db.connect();
|
||||
let pager = conn.pager.read().clone();
|
||||
let mvcc_store = db.get_mvcc_store();
|
||||
@@ -560,22 +551,13 @@ mod tests {
|
||||
|
||||
conn.close().unwrap();
|
||||
let db = db.get_db();
|
||||
(db.path.clone(), db.io.clone(), pager)
|
||||
(db.io.clone(), pager)
|
||||
};
|
||||
|
||||
// Now try to read it back
|
||||
let db_path = PathBuf::from(db_path);
|
||||
let mut log_file = db_path.clone();
|
||||
let filename = log_file
|
||||
.file_name()
|
||||
.and_then(|name| name.to_str())
|
||||
.map(|s| format!("{s}-lg"))
|
||||
.unwrap();
|
||||
log_file.set_file_name(filename);
|
||||
let log_file = db.get_log_path();
|
||||
|
||||
let file = io
|
||||
.open_file(log_file.to_str().unwrap(), OpenFlags::ReadOnly, false)
|
||||
.unwrap();
|
||||
let file = io.open_file(log_file, OpenFlags::ReadOnly, false).unwrap();
|
||||
let mvcc_store = Arc::new(MvStore::new(LocalClock::new(), Storage::new(file.clone())));
|
||||
load_logical_log(&mvcc_store, file, &io, &pager).unwrap();
|
||||
for (rowid, value) in &values {
|
||||
@@ -636,7 +618,7 @@ mod tests {
|
||||
}
|
||||
// let's not drop db as we don't want files to be removed
|
||||
let db = MvccTestDbNoConn::new_with_random_db();
|
||||
let (db_path, io, pager) = {
|
||||
let (io, pager) = {
|
||||
let conn = db.connect();
|
||||
let pager = conn.pager.read().clone();
|
||||
let mvcc_store = db.get_mvcc_store();
|
||||
@@ -660,22 +642,13 @@ mod tests {
|
||||
|
||||
conn.close().unwrap();
|
||||
let db = db.get_db();
|
||||
(db.path.clone(), db.io.clone(), pager)
|
||||
(db.io.clone(), pager)
|
||||
};
|
||||
|
||||
// Now try to read it back
|
||||
let db_path = PathBuf::from(db_path);
|
||||
let mut log_file = db_path.clone();
|
||||
let filename = log_file
|
||||
.file_name()
|
||||
.and_then(|name| name.to_str())
|
||||
.map(|s| format!("{s}-lg"))
|
||||
.unwrap();
|
||||
log_file.set_file_name(filename);
|
||||
let log_file = db.get_log_path();
|
||||
|
||||
let file = io
|
||||
.open_file(log_file.to_str().unwrap(), OpenFlags::ReadOnly, false)
|
||||
.unwrap();
|
||||
let file = io.open_file(log_file, OpenFlags::ReadOnly, false).unwrap();
|
||||
let mvcc_store = Arc::new(MvStore::new(LocalClock::new(), Storage::new(file.clone())));
|
||||
load_logical_log(&mvcc_store, file, &io, &pager).unwrap();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user