summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/sys/mod.rs1
-rw-r--r--test/sys/test_sockopt.rs14
2 files changed, 15 insertions, 0 deletions
diff --git a/test/sys/mod.rs b/test/sys/mod.rs
index fd4e984d..a5f3351d 100644
--- a/test/sys/mod.rs
+++ b/test/sys/mod.rs
@@ -1,4 +1,5 @@
mod test_socket;
+mod test_sockopt;
mod test_termios;
mod test_ioctl;
mod test_wait;
diff --git a/test/sys/test_sockopt.rs b/test/sys/test_sockopt.rs
new file mode 100644
index 00000000..92769e52
--- /dev/null
+++ b/test/sys/test_sockopt.rs
@@ -0,0 +1,14 @@
+use rand::{thread_rng, Rng};
+use nix::sys::socket::{socket, sockopt, getsockopt, setsockopt, AddressFamily, SockType, SockFlag, SockLevel};
+
+#[test]
+fn test_so_buf() {
+ let fd = socket(AddressFamily::Inet, SockType::Datagram, SockFlag::empty(), SockLevel::Udp as i32).unwrap();
+ let bufsize: usize = thread_rng().gen_range(4096, 131072);
+ setsockopt(fd, sockopt::SndBuf, &bufsize).unwrap();
+ let actual = getsockopt(fd, sockopt::SndBuf).unwrap();
+ assert!(actual >= bufsize);
+ setsockopt(fd, sockopt::RcvBuf, &bufsize).unwrap();
+ let actual = getsockopt(fd, sockopt::RcvBuf).unwrap();
+ assert!(actual >= bufsize);
+}