test metacache

This commit is contained in:
weisd
2024-12-16 09:29:44 +08:00
committed by weisd
parent a46aaf3f11
commit adf4cfd76a
2 changed files with 20 additions and 14 deletions

View File

@@ -2325,8 +2325,10 @@ async fn get_disk_info(drive_path: PathBuf) -> Result<(Info, bool)> {
#[cfg(test)]
mod test {
use tokio::io::BufWriter;
use utils::fs::open_file;
use utils::fs::O_RDWR;
use utils::fs::O_TRUNC;
use super::*;
@@ -2423,7 +2425,7 @@ mod test {
}
};
let mut f = match open_file("./testfile.txt", O_CREATE | O_RDWR).await {
let f = match open_file("./testfile.txt", O_CREATE | O_RDWR | O_TRUNC).await {
Ok(res) => res,
Err(err) => {
println!("openfile err {:?}", err);
@@ -2431,6 +2433,8 @@ mod test {
}
};
let buf = BufWriter::new(Vec::new());
let opts = WalkDirOptions {
bucket: "dada".to_owned(),
recursive: true,
@@ -2439,5 +2443,7 @@ mod test {
if let Err(err) = disk.walk_dir(opts, crate::io::Writer::File(f)).await {
println!("walk_dir err {:?}", err);
}
MetacacheReader::new()
}
}

View File

@@ -3,6 +3,8 @@ use std::io::Write;
use std::pin::Pin;
use std::task::{Context, Poll};
use tokio::fs::File;
use tokio::io::BufReader;
use tokio::io::BufWriter;
use tokio::io::{self, AsyncRead, AsyncWrite, ReadBuf};
#[derive(Default)]
@@ -10,6 +12,7 @@ pub enum Reader {
#[default]
NotUse,
File(File),
Buffer(BufReader<Vec<u8>>),
}
impl AsyncRead for Reader {
@@ -19,6 +22,9 @@ impl AsyncRead for Reader {
let file = Pin::new(file);
file.poll_read(cx, buf)
}
Reader::Buffer(buffer) => {
todo!()
}
Reader::NotUse => Poll::Ready(Ok(())),
}
}
@@ -29,36 +35,30 @@ pub enum Writer {
#[default]
NotUse,
File(File),
Buffer(BufWriter<Vec<u8>>),
}
impl AsyncWrite for Writer {
fn poll_write(self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8]) -> Poll<io::Result<usize>> {
match self.get_mut() {
Writer::File(file) => {
// Create a pinned reference from the file
let file = Pin::new(file);
file.poll_write(cx, buf)
}
Writer::File(file) => Pin::new(file).poll_write(cx, buf),
Writer::Buffer(buff) => Pin::new(buff).poll_write(cx, buf),
Writer::NotUse => Poll::Ready(Ok(0)),
}
}
fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<io::Result<()>> {
match self.get_mut() {
Writer::File(file) => {
let file = Pin::new(file);
file.poll_flush(cx)
}
Writer::File(file) => Pin::new(file).poll_flush(cx),
Writer::Buffer(buff) => Pin::new(buff).poll_flush(cx),
Writer::NotUse => Poll::Ready(Ok(())),
}
}
fn poll_shutdown(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<io::Result<()>> {
match self.get_mut() {
Writer::File(file) => {
let file = Pin::new(file);
file.poll_shutdown(cx)
}
Writer::File(file) => Pin::new(file).poll_shutdown(cx),
Writer::Buffer(buff) => Pin::new(buff).poll_shutdown(cx),
Writer::NotUse => Poll::Ready(Ok(())),
}
}