mirror of
https://github.com/rustfs/rustfs.git
synced 2026-01-17 09:40:32 +00:00
test metacache
This commit is contained in:
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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(())),
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user