Add tests ensuring zero-Duration timeouts result in errors.
Part of https://github.com/rust-lang/rust/issues/48311
This commit is contained in:
@@ -1545,6 +1545,26 @@ mod tests {
|
|||||||
drop(listener);
|
drop(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ensure the `set_read_timeout` and `set_write_timeout` calls return errors
|
||||||
|
// when passed zero Durations
|
||||||
|
#[test]
|
||||||
|
fn test_timeout_zero_duration() {
|
||||||
|
let addr = next_test_ip4();
|
||||||
|
|
||||||
|
let listener = t!(TcpListener::bind(&addr));
|
||||||
|
let stream = t!(TcpStream::connect(&addr));
|
||||||
|
|
||||||
|
let result = stream.set_write_timeout(Some(Duration::new(0, 0)));
|
||||||
|
let err = result.unwrap_err();
|
||||||
|
assert_eq!(err.kind(), ErrorKind::InvalidInput);
|
||||||
|
|
||||||
|
let result = stream.set_read_timeout(Some(Duration::new(0, 0)));
|
||||||
|
let err = result.unwrap_err();
|
||||||
|
assert_eq!(err.kind(), ErrorKind::InvalidInput);
|
||||||
|
|
||||||
|
drop(listener);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn nodelay() {
|
fn nodelay() {
|
||||||
let addr = next_test_ip4();
|
let addr = next_test_ip4();
|
||||||
|
|||||||
@@ -1024,6 +1024,23 @@ mod tests {
|
|||||||
assert!(start.elapsed() > Duration::from_millis(400));
|
assert!(start.elapsed() > Duration::from_millis(400));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ensure the `set_read_timeout` and `set_write_timeout` calls return errors
|
||||||
|
// when passed zero Durations
|
||||||
|
#[test]
|
||||||
|
fn test_timeout_zero_duration() {
|
||||||
|
let addr = next_test_ip4();
|
||||||
|
|
||||||
|
let socket = t!(UdpSocket::bind(&addr));
|
||||||
|
|
||||||
|
let result = socket.set_write_timeout(Some(Duration::new(0, 0)));
|
||||||
|
let err = result.unwrap_err();
|
||||||
|
assert_eq!(err.kind(), ErrorKind::InvalidInput);
|
||||||
|
|
||||||
|
let result = socket.set_read_timeout(Some(Duration::new(0, 0)));
|
||||||
|
let err = result.unwrap_err();
|
||||||
|
assert_eq!(err.kind(), ErrorKind::InvalidInput);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn connect_send_recv() {
|
fn connect_send_recv() {
|
||||||
let addr = next_test_ip4();
|
let addr = next_test_ip4();
|
||||||
|
|||||||
@@ -1410,7 +1410,7 @@ impl IntoRawFd for UnixDatagram {
|
|||||||
#[cfg(all(test, not(target_os = "emscripten")))]
|
#[cfg(all(test, not(target_os = "emscripten")))]
|
||||||
mod test {
|
mod test {
|
||||||
use thread;
|
use thread;
|
||||||
use io;
|
use io::{self, ErrorKind};
|
||||||
use io::prelude::*;
|
use io::prelude::*;
|
||||||
use time::Duration;
|
use time::Duration;
|
||||||
use sys_common::io::test::tmpdir;
|
use sys_common::io::test::tmpdir;
|
||||||
@@ -1613,6 +1613,27 @@ mod test {
|
|||||||
assert!(kind == io::ErrorKind::WouldBlock || kind == io::ErrorKind::TimedOut);
|
assert!(kind == io::ErrorKind::WouldBlock || kind == io::ErrorKind::TimedOut);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ensure the `set_read_timeout` and `set_write_timeout` calls return errors
|
||||||
|
// when passed zero Durations
|
||||||
|
#[test]
|
||||||
|
fn test_unix_stream_timeout_zero_duration() {
|
||||||
|
let dir = tmpdir();
|
||||||
|
let socket_path = dir.path().join("sock");
|
||||||
|
|
||||||
|
let listener = or_panic!(UnixListener::bind(&socket_path));
|
||||||
|
let stream = or_panic!(UnixStream::connect(&socket_path));
|
||||||
|
|
||||||
|
let result = stream.set_write_timeout(Some(Duration::new(0, 0)));
|
||||||
|
let err = result.unwrap_err();
|
||||||
|
assert_eq!(err.kind(), ErrorKind::InvalidInput);
|
||||||
|
|
||||||
|
let result = stream.set_read_timeout(Some(Duration::new(0, 0)));
|
||||||
|
let err = result.unwrap_err();
|
||||||
|
assert_eq!(err.kind(), ErrorKind::InvalidInput);
|
||||||
|
|
||||||
|
drop(listener);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_unix_datagram() {
|
fn test_unix_datagram() {
|
||||||
let dir = tmpdir();
|
let dir = tmpdir();
|
||||||
@@ -1712,6 +1733,24 @@ mod test {
|
|||||||
thread.join().unwrap();
|
thread.join().unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ensure the `set_read_timeout` and `set_write_timeout` calls return errors
|
||||||
|
// when passed zero Durations
|
||||||
|
#[test]
|
||||||
|
fn test_unix_datagram_timeout_zero_duration() {
|
||||||
|
let dir = tmpdir();
|
||||||
|
let path = dir.path().join("sock");
|
||||||
|
|
||||||
|
let datagram = or_panic!(UnixDatagram::bind(&path));
|
||||||
|
|
||||||
|
let result = datagram.set_write_timeout(Some(Duration::new(0, 0)));
|
||||||
|
let err = result.unwrap_err();
|
||||||
|
assert_eq!(err.kind(), ErrorKind::InvalidInput);
|
||||||
|
|
||||||
|
let result = datagram.set_read_timeout(Some(Duration::new(0, 0)));
|
||||||
|
let err = result.unwrap_err();
|
||||||
|
assert_eq!(err.kind(), ErrorKind::InvalidInput);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn abstract_namespace_not_allowed() {
|
fn abstract_namespace_not_allowed() {
|
||||||
assert!(UnixStream::connect("\0asdf").is_err());
|
assert!(UnixStream::connect("\0asdf").is_err());
|
||||||
|
|||||||
Reference in New Issue
Block a user