use crate::{
ConfirmDestructiveAction,
tests::{test_db::TestDB, util::random_bytes},
util::fs::DirectoryIter,
};
#[tokio::test]
async fn delete_data_files() {
let chunk_size = 100;
let max_file_size = 1_000;
let test_db = TestDB::open("delete_data_files", Some(chunk_size), Some(max_file_size))
.await
.unwrap();
macro_rules! assert_data_file_count_is {
($n:expr) => {
match DirectoryIter::new(&test_db.block_db.path.join("data_files")).await {
Ok(mut data_files_dir_iter) => {
let mut count = 0;
while let Some(_) = data_files_dir_iter.next().await.unwrap() {
count += 1;
}
assert_eq!(count, $n, "Invalid DataFile count");
}
_ => {
assert_eq!(0, $n, "Invalid DataFileCount");
}
}
};
}
let data_file_id = test_db
.block_db
.write(random_bytes(max_file_size))
.await
.unwrap()
.data_file_id;
test_db
.block_db
.write(random_bytes(max_file_size))
.await
.unwrap()
.data_file_id;
test_db
.block_db
.delete_data_file(data_file_id, ConfirmDestructiveAction::IKnowWhatImDoing)
.await
.unwrap();
assert_data_file_count_is!(1);
for _ in 0..10 {
test_db
.block_db
.write(random_bytes(max_file_size))
.await
.unwrap()
.data_file_id;
}
test_db
.block_db
.delete_data_files(ConfirmDestructiveAction::IKnowWhatImDoing)
.await
.unwrap();
assert_data_file_count_is!(0);
test_db.cleanup().await.unwrap();
}