Update mod.rs

+ added dummy tokio server.
+ added async test for socket sender with no transformers.
This commit is contained in:
michael-bailey 2021-08-07 17:20:33 +01:00
parent 7a0f92510b
commit 1e173586f1
1 changed files with 55 additions and 0 deletions

View File

@ -99,4 +99,59 @@ impl Debug for SocketHandler {
-> std::result::Result<(), std::fmt::Error> {
write!(f, "[SocketSender]")
}
}
#[cfg(test)]
mod test {
use std::time::Duration;
use tokio::net::TcpStream;
use tokio::net::TcpListener;
use tokio::time::sleep;
use tokio::io::{AsyncReadExt, AsyncWriteExt};
use super::SocketHandler;
use crate::prelude::StreamMessageSender;
async fn start_server() {
let listener = TcpListener::bind("127.0.0.1:5600").await.expect("failed to create listener");
let mut buf = [0; 1024];
loop {
let (mut socket, _) = listener.accept().await.expect("failed to accept connection");
tokio::spawn(async move {
let n = match socket.read(&mut buf).await {
// socket closed
Ok(n) if n == 0 => return,
Ok(n) => n,
Err(e) => {
println!("failed to read from socket; err = {:?}", e);
return;
}
};
// Write the data back
if let Err(e) = socket.write_all(&buf[0..n]).await {
println!("failed to write to socket; err = {:?}", e);
return;
}
});
}
}
#[tokio::test]
async fn test_socket_sender() {
tokio::spawn(start_server());
let socket = TcpStream::connect("localhost:5600").await.expect("failed to connect");
sleep(Duration::from_secs(1)).await;
let handle = SocketHandler::new(socket);
let _ = handle.send::<bool>(true).await;
let message = handle.recv::<bool>().await.unwrap();
assert!(message);
}
}