mirror of https://github.com/fafhrd91/actix-net
update test. Fix index matching
This commit is contained in:
parent
ac4b6dcd6a
commit
0522f50f64
|
@ -404,16 +404,19 @@ impl Future for ServerWorker {
|
||||||
let factory_id = restart.factory_id;
|
let factory_id = restart.factory_id;
|
||||||
let token = restart.token;
|
let token = restart.token;
|
||||||
|
|
||||||
let mut item = ready!(restart.fut.as_mut().poll(cx)).unwrap_or_else(|_| {
|
let service = ready!(restart.fut.as_mut().poll(cx))
|
||||||
|
.unwrap_or_else(|_| {
|
||||||
panic!(
|
panic!(
|
||||||
"Can not restart {:?} service",
|
"Can not restart {:?} service",
|
||||||
this.factories[factory_id].name(token)
|
this.factories[factory_id].name(token)
|
||||||
)
|
)
|
||||||
});
|
})
|
||||||
|
.into_iter()
|
||||||
// Token should have a matching index with returned item vec.
|
// Find the same token from vector. There should be only one
|
||||||
debug_assert_eq!(item.get(token.0).unwrap().0, token);
|
// So the first match would be enough.
|
||||||
let (token, service) = item.remove(token.0);
|
.find(|(t, _)| *t == token)
|
||||||
|
.map(|(_, service)| service)
|
||||||
|
.expect("No BoxedServerService found");
|
||||||
|
|
||||||
trace!(
|
trace!(
|
||||||
"Service {:?} has been restarted",
|
"Service {:?} has been restarted",
|
||||||
|
|
|
@ -365,11 +365,14 @@ fn test_service_restart() {
|
||||||
let _ = server.stop(false);
|
let _ = server.stop(false);
|
||||||
let _ = h.join().unwrap();
|
let _ = h.join().unwrap();
|
||||||
|
|
||||||
let addr = unused_addr();
|
let addr1 = unused_addr();
|
||||||
|
let addr2 = unused_addr();
|
||||||
let (tx, rx) = mpsc::channel();
|
let (tx, rx) = mpsc::channel();
|
||||||
let num = Arc::new(AtomicUsize::new(0));
|
let num = Arc::new(AtomicUsize::new(0));
|
||||||
|
let num2 = Arc::new(AtomicUsize::new(0));
|
||||||
|
|
||||||
let num_clone = num.clone();
|
let num_clone = num.clone();
|
||||||
|
let num2_clone = num2.clone();
|
||||||
|
|
||||||
let h = thread::spawn(move || {
|
let h = thread::spawn(move || {
|
||||||
let num = num.clone();
|
let num = num.clone();
|
||||||
|
@ -377,7 +380,7 @@ fn test_service_restart() {
|
||||||
let server = Server::build()
|
let server = Server::build()
|
||||||
.backlog(1)
|
.backlog(1)
|
||||||
.disable_signals()
|
.disable_signals()
|
||||||
.bind("addr", addr, move || {
|
.bind("addr1", addr1, move || {
|
||||||
let num = num.clone();
|
let num = num.clone();
|
||||||
fn_factory(move || {
|
fn_factory(move || {
|
||||||
let num = num.clone();
|
let num = num.clone();
|
||||||
|
@ -385,6 +388,14 @@ fn test_service_restart() {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.unwrap()
|
.unwrap()
|
||||||
|
.bind("addr2", addr2, move || {
|
||||||
|
let num2 = num2.clone();
|
||||||
|
fn_factory(move || {
|
||||||
|
let num2 = num2.clone();
|
||||||
|
async move { Ok::<_, ()>(TestService(num2)) }
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.unwrap()
|
||||||
.workers(1)
|
.workers(1)
|
||||||
.run();
|
.run();
|
||||||
|
|
||||||
|
@ -397,13 +408,16 @@ fn test_service_restart() {
|
||||||
thread::sleep(time::Duration::from_millis(500));
|
thread::sleep(time::Duration::from_millis(500));
|
||||||
|
|
||||||
for _ in 0..5 {
|
for _ in 0..5 {
|
||||||
let conn = net::TcpStream::connect(addr).unwrap();
|
let conn = net::TcpStream::connect(addr1).unwrap();
|
||||||
|
conn.shutdown(Shutdown::Both).unwrap();
|
||||||
|
let conn = net::TcpStream::connect(addr2).unwrap();
|
||||||
conn.shutdown(Shutdown::Both).unwrap();
|
conn.shutdown(Shutdown::Both).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
thread::sleep(time::Duration::from_secs(1));
|
thread::sleep(time::Duration::from_secs(1));
|
||||||
|
|
||||||
assert!(num_clone.load(Ordering::SeqCst) > 5);
|
assert!(num_clone.load(Ordering::SeqCst) > 5);
|
||||||
|
assert!(num2_clone.load(Ordering::SeqCst) > 5);
|
||||||
|
|
||||||
sys.stop();
|
sys.stop();
|
||||||
let _ = server.stop(false);
|
let _ = server.stop(false);
|
||||||
|
|
Loading…
Reference in New Issue