mirror of https://github.com/fafhrd91/actix-web
run test servers in io-uring rt friendly way
This commit is contained in:
parent
452331b745
commit
1f28bea3a5
|
@ -66,12 +66,13 @@ pub async fn test_server_with_addr<F: ServiceFactory<TcpStream>>(
|
|||
|
||||
// run server in separate thread
|
||||
thread::spawn(move || {
|
||||
let sys = System::new();
|
||||
System::new().block_on(async move {
|
||||
let local_addr = tcp.local_addr().unwrap();
|
||||
|
||||
let srv = Server::build()
|
||||
.workers(1)
|
||||
.disable_signals()
|
||||
.system_exit()
|
||||
.listen("test", tcp, factory)
|
||||
.expect("test server could not be created");
|
||||
|
||||
|
@ -81,10 +82,8 @@ pub async fn test_server_with_addr<F: ServiceFactory<TcpStream>>(
|
|||
.unwrap();
|
||||
|
||||
// drive server loop
|
||||
sys.block_on(srv).unwrap();
|
||||
|
||||
// start system event loop
|
||||
sys.run().unwrap();
|
||||
srv.await.unwrap();
|
||||
});
|
||||
|
||||
// notify TestServer that server and system have shut down
|
||||
// all thread managed resources should be dropped at this point
|
||||
|
|
|
@ -146,19 +146,23 @@ where
|
|||
|
||||
// run server in separate orphaned thread
|
||||
thread::spawn(move || {
|
||||
let sys = rt::System::new();
|
||||
rt::System::new().block_on(async move {
|
||||
let tcp = net::TcpListener::bind("127.0.0.1:0").unwrap();
|
||||
let local_addr = tcp.local_addr().unwrap();
|
||||
let factory = factory.clone();
|
||||
let srv_cfg = cfg.clone();
|
||||
let timeout = cfg.client_timeout;
|
||||
|
||||
let builder = Server::build().workers(1).disable_signals().system_exit();
|
||||
|
||||
let srv = match srv_cfg.stream {
|
||||
StreamType::Tcp => match srv_cfg.tp {
|
||||
HttpVer::Http1 => builder.listen("test", tcp, move || {
|
||||
let app_cfg =
|
||||
AppConfig::__priv_test_new(false, local_addr.to_string(), local_addr);
|
||||
let app_cfg = AppConfig::__priv_test_new(
|
||||
false,
|
||||
local_addr.to_string(),
|
||||
local_addr,
|
||||
);
|
||||
|
||||
let fac = factory()
|
||||
.into_factory()
|
||||
|
@ -170,8 +174,11 @@ where
|
|||
.tcp()
|
||||
}),
|
||||
HttpVer::Http2 => builder.listen("test", tcp, move || {
|
||||
let app_cfg =
|
||||
AppConfig::__priv_test_new(false, local_addr.to_string(), local_addr);
|
||||
let app_cfg = AppConfig::__priv_test_new(
|
||||
false,
|
||||
local_addr.to_string(),
|
||||
local_addr,
|
||||
);
|
||||
|
||||
let fac = factory()
|
||||
.into_factory()
|
||||
|
@ -183,8 +190,11 @@ where
|
|||
.tcp()
|
||||
}),
|
||||
HttpVer::Both => builder.listen("test", tcp, move || {
|
||||
let app_cfg =
|
||||
AppConfig::__priv_test_new(false, local_addr.to_string(), local_addr);
|
||||
let app_cfg = AppConfig::__priv_test_new(
|
||||
false,
|
||||
local_addr.to_string(),
|
||||
local_addr,
|
||||
);
|
||||
|
||||
let fac = factory()
|
||||
.into_factory()
|
||||
|
@ -199,8 +209,11 @@ where
|
|||
#[cfg(feature = "openssl")]
|
||||
StreamType::Openssl(acceptor) => match cfg.tp {
|
||||
HttpVer::Http1 => builder.listen("test", tcp, move || {
|
||||
let app_cfg =
|
||||
AppConfig::__priv_test_new(false, local_addr.to_string(), local_addr);
|
||||
let app_cfg = AppConfig::__priv_test_new(
|
||||
false,
|
||||
local_addr.to_string(),
|
||||
local_addr,
|
||||
);
|
||||
|
||||
let fac = factory()
|
||||
.into_factory()
|
||||
|
@ -212,8 +225,11 @@ where
|
|||
.openssl(acceptor.clone())
|
||||
}),
|
||||
HttpVer::Http2 => builder.listen("test", tcp, move || {
|
||||
let app_cfg =
|
||||
AppConfig::__priv_test_new(false, local_addr.to_string(), local_addr);
|
||||
let app_cfg = AppConfig::__priv_test_new(
|
||||
false,
|
||||
local_addr.to_string(),
|
||||
local_addr,
|
||||
);
|
||||
|
||||
let fac = factory()
|
||||
.into_factory()
|
||||
|
@ -225,8 +241,11 @@ where
|
|||
.openssl(acceptor.clone())
|
||||
}),
|
||||
HttpVer::Both => builder.listen("test", tcp, move || {
|
||||
let app_cfg =
|
||||
AppConfig::__priv_test_new(false, local_addr.to_string(), local_addr);
|
||||
let app_cfg = AppConfig::__priv_test_new(
|
||||
false,
|
||||
local_addr.to_string(),
|
||||
local_addr,
|
||||
);
|
||||
|
||||
let fac = factory()
|
||||
.into_factory()
|
||||
|
@ -241,8 +260,11 @@ where
|
|||
#[cfg(feature = "rustls")]
|
||||
StreamType::Rustls(config) => match cfg.tp {
|
||||
HttpVer::Http1 => builder.listen("test", tcp, move || {
|
||||
let app_cfg =
|
||||
AppConfig::__priv_test_new(false, local_addr.to_string(), local_addr);
|
||||
let app_cfg = AppConfig::__priv_test_new(
|
||||
false,
|
||||
local_addr.to_string(),
|
||||
local_addr,
|
||||
);
|
||||
|
||||
let fac = factory()
|
||||
.into_factory()
|
||||
|
@ -254,8 +276,11 @@ where
|
|||
.rustls(config.clone())
|
||||
}),
|
||||
HttpVer::Http2 => builder.listen("test", tcp, move || {
|
||||
let app_cfg =
|
||||
AppConfig::__priv_test_new(false, local_addr.to_string(), local_addr);
|
||||
let app_cfg = AppConfig::__priv_test_new(
|
||||
false,
|
||||
local_addr.to_string(),
|
||||
local_addr,
|
||||
);
|
||||
|
||||
let fac = factory()
|
||||
.into_factory()
|
||||
|
@ -267,8 +292,11 @@ where
|
|||
.rustls(config.clone())
|
||||
}),
|
||||
HttpVer::Both => builder.listen("test", tcp, move || {
|
||||
let app_cfg =
|
||||
AppConfig::__priv_test_new(false, local_addr.to_string(), local_addr);
|
||||
let app_cfg = AppConfig::__priv_test_new(
|
||||
false,
|
||||
local_addr.to_string(),
|
||||
local_addr,
|
||||
);
|
||||
|
||||
let fac = factory()
|
||||
.into_factory()
|
||||
|
@ -289,13 +317,12 @@ where
|
|||
.unwrap();
|
||||
|
||||
// drive server loop
|
||||
sys.block_on(srv).unwrap();
|
||||
|
||||
// start system event loop
|
||||
sys.run().unwrap();
|
||||
srv.await.unwrap();
|
||||
|
||||
// notify TestServer that server and system have shut down
|
||||
// all thread managed resources should be dropped at this point
|
||||
});
|
||||
|
||||
let _ = thread_stop_tx.send(());
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in New Issue