Skip to content

Commit 143f344

Browse files
Seulgi Kimsgkim126
Seulgi Kim
authored andcommittedFeb 3, 2019
Add test cases to check mio behavior
1 parent 17036ab commit 143f344

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed
 

‎util/io/src/service.rs

+44
Original file line numberDiff line numberDiff line change
@@ -497,3 +497,47 @@ where
497497
self.stop()
498498
}
499499
}
500+
501+
#[cfg(test)]
502+
mod tests {
503+
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
504+
505+
use super::*;
506+
507+
#[test]
508+
fn register_and_deregister() {
509+
let addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 1000);
510+
let stream = mio::net::TcpStream::connect(&addr).unwrap();
511+
512+
let mut event_loop = EventLoopBuilder::new().build::<IoManager<()>>().unwrap();
513+
event_loop.register(&stream, Token(1), Ready::empty(), PollOpt::edge()).unwrap();
514+
event_loop.deregister(&stream).unwrap();
515+
}
516+
517+
#[test]
518+
fn cannot_move_socket_to_other_event_loop() {
519+
let addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 1000);
520+
let stream = mio::net::TcpStream::connect(&addr).unwrap();
521+
522+
let mut event_loop1 = EventLoopBuilder::new().build::<IoManager<()>>().unwrap();
523+
event_loop1.register(&stream, Token(1), Ready::empty(), PollOpt::edge()).unwrap();
524+
event_loop1.reregister(&stream, Token(1), Ready::empty(), PollOpt::edge()).unwrap();
525+
event_loop1.deregister(&stream).unwrap();
526+
527+
let mut event_loop2 = EventLoopBuilder::new().build::<IoManager<()>>().unwrap();
528+
let result = event_loop2.register(&stream, Token(2), Ready::empty(), PollOpt::edge());
529+
assert!(result.is_err());
530+
}
531+
532+
#[test]
533+
fn register_to_the_same_event_loop() {
534+
let addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 1000);
535+
let stream = mio::net::TcpStream::connect(&addr).unwrap();
536+
537+
let mut event_loop = EventLoopBuilder::new().build::<IoManager<()>>().unwrap();
538+
event_loop.register(&stream, Token(1), Ready::empty(), PollOpt::edge()).unwrap();
539+
event_loop.deregister(&stream).unwrap();
540+
541+
event_loop.register(&stream, Token(2), Ready::empty(), PollOpt::edge()).unwrap();
542+
}
543+
}

0 commit comments

Comments
 (0)
Please sign in to comment.