allow dynamic port setting

This commit is contained in:
Kristian Gaylord 2023-01-06 16:17:57 -05:00
parent 08c2cdf641
commit 95e40141eb
2 changed files with 11 additions and 2 deletions

View File

@ -2,6 +2,7 @@
## Unreleased - 2022-xx-xx ## Unreleased - 2022-xx-xx
- Minimum supported Rust version (MSRV) is now 1.59 due to transitive `time` dependency. - Minimum supported Rust version (MSRV) is now 1.59 due to transitive `time` dependency.
- Ability to set port number in TestServerConfig
## 0.1.0 - 2022-07-24 ## 0.1.0 - 2022-07-24

View File

@ -145,10 +145,11 @@ where
// run server in separate orphaned thread // run server in separate orphaned thread
thread::spawn(move || { thread::spawn(move || {
rt::System::new().block_on(async move { rt::System::new().block_on(async move {
let tcp = net::TcpListener::bind("127.0.0.1:0").unwrap(); let srv_cfg = cfg.clone();
let port = srv_cfg.port;
let tcp = net::TcpListener::bind(format!("127.0.0.1:{port}")).unwrap();
let local_addr = tcp.local_addr().unwrap(); let local_addr = tcp.local_addr().unwrap();
let factory = factory.clone(); let factory = factory.clone();
let srv_cfg = cfg.clone();
let timeout = cfg.client_request_timeout; let timeout = cfg.client_request_timeout;
let builder = Server::build().workers(1).disable_signals().system_exit(); let builder = Server::build().workers(1).disable_signals().system_exit();
@ -390,6 +391,7 @@ pub struct TestServerConfig {
tp: HttpVer, tp: HttpVer,
stream: StreamType, stream: StreamType,
client_request_timeout: Duration, client_request_timeout: Duration,
port: u16,
} }
impl Default for TestServerConfig { impl Default for TestServerConfig {
@ -405,6 +407,7 @@ impl TestServerConfig {
tp: HttpVer::Both, tp: HttpVer::Both,
stream: StreamType::Tcp, stream: StreamType::Tcp,
client_request_timeout: Duration::from_secs(5), client_request_timeout: Duration::from_secs(5),
port: 0,
} }
} }
@ -439,6 +442,11 @@ impl TestServerConfig {
self.client_request_timeout = dur; self.client_request_timeout = dur;
self self
} }
pub fn port(mut self, _port: u16) -> Self {
self.port = _port;
self
}
} }
/// A basic HTTP server controller that simplifies the process of writing integration tests for /// A basic HTTP server controller that simplifies the process of writing integration tests for