1
0
mirror of https://github.com/fafhrd91/actix-net synced 2025-06-26 19:47:43 +02:00

simplify test server (#431)

This commit is contained in:
Rob Ede
2021-12-27 18:27:54 +00:00
committed by GitHub
parent e92b5aaf31
commit 01d2f18f68
9 changed files with 120 additions and 116 deletions

View File

@ -79,35 +79,6 @@ fn test_listen() {
h.join().unwrap().unwrap();
}
// #[test]
// fn test_bind() {
// let addr = unused_addr();
// let (tx, rx) = mpsc::channel();
// let h = thread::spawn(move || {
// actix_rt::System::new().block_on(async {
// let srv = Server::build()
// .workers(1)
// .disable_signals()
// .bind("test", addr, move || {
// fn_service(|_| async { Ok::<_, ()>(()) })
// })?
// .run();
// let _ = tx.send(srv.handle());
// srv.await
// })
// });
// let srv = rx.recv().unwrap();
// thread::sleep(Duration::from_millis(500));
// assert!(net::TcpStream::connect(addr).is_ok());
// let _ = srv.stop(true);
// h.join().unwrap().unwrap();
// }
#[test]
fn plain_tokio_runtime() {
let addr = unused_addr();
@ -143,38 +114,6 @@ fn plain_tokio_runtime() {
h.join().unwrap().unwrap();
}
// #[test]
// fn test_listen() {
// let addr = unused_addr();
// let lst = net::TcpListener::bind(addr).unwrap();
// let (tx, rx) = mpsc::channel();
// let h = thread::spawn(move || {
// actix_rt::System::new().block_on(async {
// let srv = Server::build()
// .disable_signals()
// .workers(1)
// .listen("test", lst, move || {
// fn_service(|_| async { Ok::<_, ()>(()) })
// })?
// .run();
// let _ = tx.send(srv.handle());
// srv.await
// })
// });
// let srv = rx.recv().unwrap();
// thread::sleep(Duration::from_millis(500));
// assert!(net::TcpStream::connect(addr).is_ok());
// let _ = srv.stop(true);
// h.join().unwrap().unwrap();
// }
#[test]
#[cfg(unix)]
fn test_start() {

View File

@ -0,0 +1,73 @@
use std::net;
use actix_rt::net::TcpStream;
use actix_server::{Server, TestServer};
use actix_service::fn_service;
use bytes::BytesMut;
use tokio::io::{AsyncReadExt as _, AsyncWriteExt as _};
macro_rules! await_timeout_ms {
($fut:expr, $limit:expr) => {
::actix_rt::time::timeout(::std::time::Duration::from_millis($limit), $fut)
.await
.unwrap()
.unwrap();
};
}
#[tokio::test]
async fn testing_server_echo() {
let srv = TestServer::start(|| {
fn_service(move |mut stream: TcpStream| async move {
let mut size = 0;
let mut buf = BytesMut::new();
match stream.read_buf(&mut buf).await {
Ok(0) => return Err(()),
Ok(bytes_read) => {
stream.write_all(&buf[size..]).await.unwrap();
size += bytes_read;
}
Err(_) => return Err(()),
}
Ok((buf.freeze(), size))
})
});
let mut conn = srv.connect().unwrap();
await_timeout_ms!(conn.write_all(b"test"), 200);
let mut buf = Vec::new();
await_timeout_ms!(conn.read_to_end(&mut buf), 200);
assert_eq!(&buf, b"test".as_ref());
}
#[tokio::test]
async fn new_with_builder() {
let alt_addr = TestServer::unused_addr();
let srv = TestServer::start_with_builder(
Server::build()
.bind("alt", alt_addr, || {
fn_service(|_| async { Ok::<_, ()>(()) })
})
.unwrap(),
|| {
fn_service(|mut sock: TcpStream| async move {
let mut buf = [0u8; 16];
sock.read_exact(&mut buf).await
})
},
);
// connect to test server
srv.connect().unwrap();
// connect to alt service defined in custom ServerBuilder
TcpStream::from_std(net::TcpStream::connect(alt_addr).unwrap()).unwrap();
}