1
0
mirror of https://github.com/fafhrd91/actix-web synced 2025-01-18 05:41:50 +01:00

restore server start test

This commit is contained in:
Nikolay Kim 2017-12-26 20:07:31 -08:00
parent 29adc20581
commit 3abd0db6b1
2 changed files with 25 additions and 2 deletions

View File

@ -81,7 +81,7 @@ impl TestServer {
// run server in separate thread // run server in separate thread
let join = thread::spawn(move || { let join = thread::spawn(move || {
let sys = System::new("actix-test-server"); let sys = System::new("actix-test-server");
let tcp = net::TcpListener::bind("0.0.0.0:0").unwrap(); let tcp = net::TcpListener::bind("127.0.0.1:0").unwrap();
let local_addr = tcp.local_addr().unwrap(); let local_addr = tcp.local_addr().unwrap();
let tcp = TcpListener::from_listener(tcp, &local_addr, Arbiter::handle()).unwrap(); let tcp = TcpListener::from_listener(tcp, &local_addr, Arbiter::handle()).unwrap();
@ -113,7 +113,7 @@ impl TestServer {
let join = thread::spawn(move || { let join = thread::spawn(move || {
let sys = System::new("actix-test-server"); let sys = System::new("actix-test-server");
let tcp = net::TcpListener::bind("0.0.0.0:0").unwrap(); let tcp = net::TcpListener::bind("127.0.0.1:0").unwrap();
let local_addr = tcp.local_addr().unwrap(); let local_addr = tcp.local_addr().unwrap();
let tcp = TcpListener::from_listener(tcp, &local_addr, Arbiter::handle()).unwrap(); let tcp = TcpListener::from_listener(tcp, &local_addr, Arbiter::handle()).unwrap();
@ -135,6 +135,12 @@ impl TestServer {
} }
} }
/// Get firat available unused address
pub fn unused_addr() -> net::SocketAddr {
let tcp = net::TcpListener::bind("127.0.0.1:0").unwrap();
tcp.local_addr().unwrap()
}
/// Construct test server url /// Construct test server url
pub fn url(&self, uri: &str) -> String { pub fn url(&self, uri: &str) -> String {
if uri.starts_with('/') { if uri.starts_with('/') {

View File

@ -3,10 +3,27 @@ extern crate actix_web;
extern crate tokio_core; extern crate tokio_core;
extern crate reqwest; extern crate reqwest;
use std::thread;
use std::sync::Arc; use std::sync::Arc;
use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::atomic::{AtomicUsize, Ordering};
use actix_web::*; use actix_web::*;
use actix::System;
#[test]
fn test_start() {
let addr = test::TestServer::unused_addr();
let srv_addr = addr.clone();
thread::spawn(move || {
let sys = System::new("test");
let srv = HttpServer::new(
|| vec![Application::new()
.resource("/", |r| r.method(Method::GET).h(httpcodes::HTTPOk))]);
srv.bind(srv_addr).unwrap().start();
sys.run();
});
assert!(reqwest::get(&format!("http://{}/", addr)).unwrap().status().is_success());
}
#[test] #[test]
fn test_simple() { fn test_simple() {