mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-10 15:16:56 +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)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
|
|
||||||
|
use tokio::io::BufWriter;
|
||||||
use utils::fs::open_file;
|
use utils::fs::open_file;
|
||||||
use utils::fs::O_RDWR;
|
use utils::fs::O_RDWR;
|
||||||
|
use utils::fs::O_TRUNC;
|
||||||
|
|
||||||
use super::*;
|
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,
|
Ok(res) => res,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
println!("openfile err {:?}", err);
|
println!("openfile err {:?}", err);
|
||||||
@@ -2431,6 +2433,8 @@ mod test {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let buf = BufWriter::new(Vec::new());
|
||||||
|
|
||||||
let opts = WalkDirOptions {
|
let opts = WalkDirOptions {
|
||||||
bucket: "dada".to_owned(),
|
bucket: "dada".to_owned(),
|
||||||
recursive: true,
|
recursive: true,
|
||||||
@@ -2439,5 +2443,7 @@ mod test {
|
|||||||
if let Err(err) = disk.walk_dir(opts, crate::io::Writer::File(f)).await {
|
if let Err(err) = disk.walk_dir(opts, crate::io::Writer::File(f)).await {
|
||||||
println!("walk_dir err {:?}", err);
|
println!("walk_dir err {:?}", err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MetacacheReader::new()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+13
-13
@@ -3,6 +3,8 @@ use std::io::Write;
|
|||||||
use std::pin::Pin;
|
use std::pin::Pin;
|
||||||
use std::task::{Context, Poll};
|
use std::task::{Context, Poll};
|
||||||
use tokio::fs::File;
|
use tokio::fs::File;
|
||||||
|
use tokio::io::BufReader;
|
||||||
|
use tokio::io::BufWriter;
|
||||||
use tokio::io::{self, AsyncRead, AsyncWrite, ReadBuf};
|
use tokio::io::{self, AsyncRead, AsyncWrite, ReadBuf};
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
@@ -10,6 +12,7 @@ pub enum Reader {
|
|||||||
#[default]
|
#[default]
|
||||||
NotUse,
|
NotUse,
|
||||||
File(File),
|
File(File),
|
||||||
|
Buffer(BufReader<Vec<u8>>),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AsyncRead for Reader {
|
impl AsyncRead for Reader {
|
||||||
@@ -19,6 +22,9 @@ impl AsyncRead for Reader {
|
|||||||
let file = Pin::new(file);
|
let file = Pin::new(file);
|
||||||
file.poll_read(cx, buf)
|
file.poll_read(cx, buf)
|
||||||
}
|
}
|
||||||
|
Reader::Buffer(buffer) => {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
Reader::NotUse => Poll::Ready(Ok(())),
|
Reader::NotUse => Poll::Ready(Ok(())),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -29,36 +35,30 @@ pub enum Writer {
|
|||||||
#[default]
|
#[default]
|
||||||
NotUse,
|
NotUse,
|
||||||
File(File),
|
File(File),
|
||||||
|
Buffer(BufWriter<Vec<u8>>),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AsyncWrite for Writer {
|
impl AsyncWrite for Writer {
|
||||||
fn poll_write(self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8]) -> Poll<io::Result<usize>> {
|
fn poll_write(self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8]) -> Poll<io::Result<usize>> {
|
||||||
match self.get_mut() {
|
match self.get_mut() {
|
||||||
Writer::File(file) => {
|
Writer::File(file) => Pin::new(file).poll_write(cx, buf),
|
||||||
// Create a pinned reference from the file
|
Writer::Buffer(buff) => Pin::new(buff).poll_write(cx, buf),
|
||||||
let file = Pin::new(file);
|
|
||||||
file.poll_write(cx, buf)
|
|
||||||
}
|
|
||||||
Writer::NotUse => Poll::Ready(Ok(0)),
|
Writer::NotUse => Poll::Ready(Ok(0)),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<io::Result<()>> {
|
fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<io::Result<()>> {
|
||||||
match self.get_mut() {
|
match self.get_mut() {
|
||||||
Writer::File(file) => {
|
Writer::File(file) => Pin::new(file).poll_flush(cx),
|
||||||
let file = Pin::new(file);
|
Writer::Buffer(buff) => Pin::new(buff).poll_flush(cx),
|
||||||
file.poll_flush(cx)
|
|
||||||
}
|
|
||||||
Writer::NotUse => Poll::Ready(Ok(())),
|
Writer::NotUse => Poll::Ready(Ok(())),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn poll_shutdown(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<io::Result<()>> {
|
fn poll_shutdown(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<io::Result<()>> {
|
||||||
match self.get_mut() {
|
match self.get_mut() {
|
||||||
Writer::File(file) => {
|
Writer::File(file) => Pin::new(file).poll_shutdown(cx),
|
||||||
let file = Pin::new(file);
|
Writer::Buffer(buff) => Pin::new(buff).poll_shutdown(cx),
|
||||||
file.poll_shutdown(cx)
|
|
||||||
}
|
|
||||||
Writer::NotUse => Poll::Ready(Ok(())),
|
Writer::NotUse => Poll::Ready(Ok(())),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user