Skip to content

Commit 3564317

Browse files
authored
tests: Add test for #154
* Test to prevent double registration from unregistering source * amending to clippy + fmt and windows borrow_mut rules * moving to TcpListener * new register instead of binding to same address
1 parent a5da16f commit 3564317

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

tests/async.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,3 +356,30 @@ fn shutdown() -> io::Result<()> {
356356
Ok(())
357357
})
358358
}
359+
360+
// prevent source from unregistering by trying to register it twice
361+
#[test]
362+
fn duplicate_socket_insert() -> io::Result<()> {
363+
future::block_on(async {
364+
let listener = Async::<TcpListener>::bind(([127, 0, 0, 1], 0))?;
365+
let addr = listener.as_ref().local_addr()?;
366+
367+
// attempt to register twice
368+
assert!(Async::new(&listener).is_err(), "fails upon second insert");
369+
370+
// Read and Write to confirm socket did not deregister on duplication attempt
371+
// Write to stream_w
372+
let mut stream_w = Async::<TcpStream>::connect(addr).await?;
373+
stream_w.write(LOREM_IPSUM).await?;
374+
stream_w.get_ref().shutdown(Shutdown::Write)?;
375+
376+
// Read from stream_r
377+
let mut stream_r = listener.accept().await?.0;
378+
let mut buffer = vec![0; LOREM_IPSUM.len()];
379+
stream_r.read_exact(&mut buffer).await?;
380+
381+
assert_eq!(buffer, LOREM_IPSUM);
382+
383+
Ok(())
384+
})
385+
}

0 commit comments

Comments
 (0)