Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
marius-meissner committed Feb 1, 2024
1 parent 9912ebc commit 42732a0
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 95 deletions.
4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ readme = "README.md"
documentation = "https://docs.rs/embedded-redis"

[dependencies]
embedded-nal = "0.6.0"
embedded-nal = "0.8.0"
embedded-time = "0.12.1"
nb = "1.0.0"
redis-protocol-mm = { version = "4.2.0", default-features = false, features = ["libm", "hashbrown", "alloc"] }
bytes = { version = "1.2.1", default-features = false }
mockall = { version = "0.12.1", optional=true }

[dev-dependencies]
std-embedded-nal = "0.1.3"
std-embedded-nal = { git="https://github.com/marius-meissner/std-embedded-nal", version = "0.3.0" }
std-embedded-time = "0.1.0"
mockall = { version = "0.12.1" }

Expand Down
4 changes: 0 additions & 4 deletions src/network/handler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -198,10 +198,6 @@ where
return;
}

if !network.is_connected(self.socket.as_ref().unwrap()).unwrap_or(false) {
return self.disconnect(network);
}

if self.use_ping && self.ping(network, clock).is_err() {
self.disconnect(network);
}
Expand Down
69 changes: 1 addition & 68 deletions src/network/tests/handler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -181,11 +181,7 @@ fn test_resp3_connect_auth_failed_socket_closed() {
fn test_connect_resp2_socket_reused() {
let clock = TestClock::new(vec![]);

let mut stack = NetworkMockBuilder::default()
.socket(167)
.connect(167)
.expect_is_connected(167, true)
.into_mock();
let mut stack = NetworkMockBuilder::default().socket(167).connect(167).into_mock();

let mut handler = ConnectionHandler::resp2(SocketAddr::from_str("127.0.0.1:6379").unwrap());

Expand All @@ -205,7 +201,6 @@ fn test_connect_resp3_socket_reused() {
.response_ok() // Auth response
.send_hello(167)
.response_hello()
.expect_is_connected(167, true)
.into_mock();

let mut handler = ConnectionHandler::resp3(SocketAddr::from_str("127.0.0.1:6379").unwrap());
Expand All @@ -224,33 +219,13 @@ fn test_connect_resp3_socket_reused() {
assert!(client.get_hello_response().modules.is_empty());
}

#[test]
fn test_connect_socket_is_connected_error() {
let clock = TestClock::new(vec![]);

let mut stack = NetworkMockBuilder::default()
.socket(167)
.connect(167)
.expect_is_connected_error(167)
.close(167)
.socket(297)
.connect(297)
.into_mock();

let mut handler = ConnectionHandler::resp2(SocketAddr::from_str("127.0.0.1:6379").unwrap());

handler.connect(&mut stack, Some(&clock)).unwrap();
handler.connect(&mut stack, Some(&clock)).unwrap();
}

#[test]
fn test_connect_socket_ping_tcp_error() {
let clock = TestClock::new(vec![]);

let mut stack = NetworkMockBuilder::default()
.socket(167)
.connect(167)
.expect_is_connected(167, true)
.send_error()
.close(167)
.socket(297)
Expand All @@ -271,7 +246,6 @@ fn test_connect_socket_ping_tcp_error_response() {
let mut stack = NetworkMockBuilder::default()
.socket(167)
.connect(167)
.expect_is_connected(167, true)
.send(167, "*1\r\n$4\r\nPING\r\n")
.response_error()
.close(167)
Expand All @@ -297,7 +271,6 @@ fn test_connect_socket_ping_timeout() {
let mut stack = NetworkMockBuilder::default()
.socket(167)
.connect(167)
.expect_is_connected(167, true)
.send(167, "*1\r\n$4\r\nPING\r\n")
.response_no_data()
.response_no_data()
Expand All @@ -321,7 +294,6 @@ fn test_connect_socket_ping_successful() {
let mut stack = NetworkMockBuilder::default()
.socket(167)
.connect(167)
.expect_is_connected(167, true)
.send(167, "*1\r\n$4\r\nPING\r\n")
.response_string("PONG")
.into_mock();
Expand All @@ -332,42 +304,3 @@ fn test_connect_socket_ping_successful() {
handler.connect(&mut stack, Some(&clock)).unwrap();
handler.connect(&mut stack, Some(&clock)).unwrap();
}

#[test]
fn test_connect_cached_socket_not_connected_without_ping() {
let clock = TestClock::new(vec![]);

let mut stack = NetworkMockBuilder::default()
.socket(167)
.connect(167)
.expect_is_connected(167, false)
.close(167)
.socket(297)
.connect(297)
.into_mock();

let mut handler = ConnectionHandler::resp2(SocketAddr::from_str("127.0.0.1:6379").unwrap());

handler.connect(&mut stack, Some(&clock)).unwrap();
handler.connect(&mut stack, Some(&clock)).unwrap();
}

#[test]
fn test_connect_cached_socket_not_connected_with_ping() {
let clock = TestClock::new(vec![]);

let mut stack = NetworkMockBuilder::default()
.socket(167)
.connect(167)
.expect_is_connected(167, false)
.close(167)
.socket(297)
.connect(297)
.into_mock();

let mut handler = ConnectionHandler::resp2(SocketAddr::from_str("127.0.0.1:6379").unwrap());
handler.use_ping();

handler.connect(&mut stack, Some(&clock)).unwrap();
handler.connect(&mut stack, Some(&clock)).unwrap();
}
28 changes: 7 additions & 21 deletions src/network/tests/mocks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ use alloc::vec::Vec;
use alloc::{format, vec};
use bytes::{BufMut, Bytes, BytesMut};
use core::cell::RefCell;
use embedded_nal::SocketAddr;
use embedded_nal::TcpClientStack;
use embedded_nal::{SocketAddr, TcpError, TcpErrorKind};
use embedded_time::clock::Error;
use embedded_time::duration::{Duration, Extensions};
use embedded_time::fixed_point::FixedPoint;
Expand Down Expand Up @@ -41,6 +41,12 @@ pub enum MockTcpError {
Error1,
}

impl TcpError for MockTcpError {
fn kind(&self) -> TcpErrorKind {
TcpErrorKind::Other
}
}

mock! {
#[derive(Debug)]
pub NetworkStack {}
Expand All @@ -57,8 +63,6 @@ mock! {
remote: SocketAddr,
) -> nb::Result<(), <Self as TcpClientStack>::Error>;

fn is_connected(&mut self, socket: &SocketMock) -> Result<bool, <Self as TcpClientStack>::Error>;

fn send(
&mut self,
socket: &mut SocketMock,
Expand Down Expand Up @@ -114,24 +118,6 @@ impl NetworkMockBuilder {
self
}

/// Asserts that is_connected is called
pub fn expect_is_connected(mut self, socket_id: i32, is_connected: bool) -> Self {
self.stack.expect_is_connected().times(1).returning(move |socket| {
assert_eq!(socket_id, socket.id);
Ok(is_connected)
});
self
}

/// Simulates an error on is_connected call
pub fn expect_is_connected_error(mut self, socket_id: i32) -> Self {
self.stack.expect_is_connected().times(1).returning(move |socket| {
assert_eq!(socket_id, socket.id);
Err(Error1)
});
self
}

/// Asserts that close is called
pub fn close(mut self, socket_id: i32) -> Self {
self.stack.expect_close().times(1).returning(move |socket| {
Expand Down

0 comments on commit 42732a0

Please sign in to comment.