• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #[cfg(not(any(
2     target_os = "redox",
3     target_os = "fuchsia",
4     target_os = "illumos",
5     target_os = "haiku"
6 )))]
7 use nix::sys::resource::{getrlimit, setrlimit, Resource};
8 
9 /// Tests the RLIMIT_NOFILE functionality of getrlimit(), where the resource RLIMIT_NOFILE refers
10 /// to the maximum file descriptor number that can be opened by the process (aka the maximum number
11 /// of file descriptors that the process can open, since Linux 4.5).
12 ///
13 /// We first fetch the existing file descriptor maximum values using getrlimit(), then edit the
14 /// soft limit to make sure it has a new and distinct value to the hard limit. We then setrlimit()
15 /// to put the new soft limit in effect, and then getrlimit() once more to ensure the limits have
16 /// been updated.
17 #[test]
18 #[cfg(not(any(
19     target_os = "redox",
20     target_os = "fuchsia",
21     target_os = "illumos",
22     target_os = "haiku"
23 )))]
test_resource_limits_nofile()24 pub fn test_resource_limits_nofile() {
25     let (mut soft_limit, hard_limit) =
26         getrlimit(Resource::RLIMIT_NOFILE).unwrap();
27 
28     soft_limit -= 1;
29     assert_ne!(soft_limit, hard_limit);
30     setrlimit(Resource::RLIMIT_NOFILE, soft_limit, hard_limit).unwrap();
31 
32     let (new_soft_limit, _) = getrlimit(Resource::RLIMIT_NOFILE).unwrap();
33     assert_eq!(new_soft_limit, soft_limit);
34 }
35