mirror of
https://github.com/actix/actix-web.git
synced 2024-11-22 09:31:10 +00:00
actix-test: allow the configuration of the TestServer address (#3351)
* actix-test: allow the configuration of the TestServer address This is useful if you're running (say) Selenium tests against a running TestServer, and the Selenium workers are Docker containers elsewhere in the network. Not a *particularly* common use case, perhaps, but one that I can attest happens every now and then. * Update CHANGES.md * Adjust default listen address to avoid test failures --------- Co-authored-by: Rob Ede <robjtede@icloud.com>
This commit is contained in:
parent
37577dcb89
commit
758ae1dac1
2 changed files with 15 additions and 3 deletions
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
|
- Add `TestServerConfig::listen_address()` method.
|
||||||
|
|
||||||
## 0.1.4
|
## 0.1.4
|
||||||
|
|
||||||
- Add `TestServerConfig::rustls_0_23()` method for Rustls v0.23 support behind new `rustls-0_23` crate feature.
|
- Add `TestServerConfig::rustls_0_23()` method for Rustls v0.23 support behind new `rustls-0_23` crate feature.
|
||||||
|
|
|
@ -154,7 +154,7 @@ 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", cfg.port)).unwrap();
|
let tcp = net::TcpListener::bind((cfg.listen_address.clone(), cfg.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 srv_cfg = cfg.clone();
|
||||||
|
@ -514,6 +514,7 @@ pub struct TestServerConfig {
|
||||||
tp: HttpVer,
|
tp: HttpVer,
|
||||||
stream: StreamType,
|
stream: StreamType,
|
||||||
client_request_timeout: Duration,
|
client_request_timeout: Duration,
|
||||||
|
listen_address: String,
|
||||||
port: u16,
|
port: u16,
|
||||||
workers: usize,
|
workers: usize,
|
||||||
disable_redirects: bool,
|
disable_redirects: bool,
|
||||||
|
@ -532,6 +533,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),
|
||||||
|
listen_address: "127.0.0.1".to_string(),
|
||||||
port: 0,
|
port: 0,
|
||||||
workers: 1,
|
workers: 1,
|
||||||
disable_redirects: false,
|
disable_redirects: false,
|
||||||
|
@ -607,6 +609,14 @@ impl TestServerConfig {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Sets the address the server will listen on.
|
||||||
|
///
|
||||||
|
/// By default, only listens on `127.0.0.1`.
|
||||||
|
pub fn listen_address(mut self, addr: impl Into<String>) -> Self {
|
||||||
|
self.listen_address = addr.into();
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
/// Sets test server port.
|
/// Sets test server port.
|
||||||
///
|
///
|
||||||
/// By default, a random free port is determined by the OS.
|
/// By default, a random free port is determined by the OS.
|
||||||
|
@ -657,9 +667,9 @@ impl TestServer {
|
||||||
let scheme = if self.tls { "https" } else { "http" };
|
let scheme = if self.tls { "https" } else { "http" };
|
||||||
|
|
||||||
if uri.starts_with('/') {
|
if uri.starts_with('/') {
|
||||||
format!("{}://localhost:{}{}", scheme, self.addr.port(), uri)
|
format!("{}://{}{}", scheme, self.addr, uri)
|
||||||
} else {
|
} else {
|
||||||
format!("{}://localhost:{}/{}", scheme, self.addr.port(), uri)
|
format!("{}://{}/{}", scheme, self.addr, uri)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue