Skip to content

Commit

Permalink
add test for get + use read() from AsyncReadExt
Browse files Browse the repository at this point in the history
  • Loading branch information
immanelg committed Jan 6, 2024
1 parent 86851c5 commit c94e19a
Showing 1 changed file with 29 additions and 7 deletions.
36 changes: 29 additions & 7 deletions memcrab-protocol/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use std::io;
use tokio::net::tcp::OwnedReadHalf;
use tokio::io::AsyncReadExt;

type Bytes = Vec<u8>;

Expand All @@ -22,8 +23,7 @@ pub trait AsyncReader {
#[async_trait::async_trait]
impl AsyncReader for OwnedReadHalf {
async fn read(&mut self, buf: &mut [u8]) -> Result<usize> {
self.readable().await?;
self.try_read(buf)
AsyncReadExt::read(self, buf).await
}
}

Expand Down Expand Up @@ -120,28 +120,50 @@ mod tests {
use super::*;

struct MockReader {
data: Vec<Vec<u8>>,
parts: Vec<Vec<u8>>,
}

#[async_trait::async_trait]
impl AsyncReader for MockReader {
async fn read(&mut self, buf: &mut [u8]) -> Result<usize> {
if !self.data.is_empty() {
let part = self.data.remove(0);
if !self.parts.is_empty() {
let part = self.parts.remove(0);
for (i, b) in part.iter().enumerate() {
buf[i] = *b;
}
Ok(100)
Ok(part.len())
} else {
Ok(0)
}
}
}

#[tokio::test]
async fn test_get() {
let mock_reader = MockReader {
parts: vec![vec![0, 2, 1, 1].into()],
};
let mut producer = Producer::new(mock_reader);

let msg = producer.next_msg().await;
assert_eq!(msg.unwrap().unwrap(), Msg::Get(vec![1, 1]))
}

#[tokio::test]
async fn test_get_with_partitions() {
let mock_reader = MockReader {
parts: vec![vec![0].into(), vec![3, 1].into(), vec![2, 3].into()],
};
let mut producer = Producer::new(mock_reader);

let msg = producer.next_msg().await;
assert_eq!(msg.unwrap().unwrap(), Msg::Get(vec![1, 2, 3]))
}

#[tokio::test]
async fn test_set() {
let mock_reader = MockReader {
data: vec![vec![1, 1, 1, 0, 0, 0, 3, 8, 8, 8]].into(),
parts: vec![vec![1, 1, 1, 0, 0, 0, 3, 8, 8, 8]].into(),
};
let mut producer = Producer::new(mock_reader);

Expand Down

0 comments on commit c94e19a

Please sign in to comment.