diff options
| author | Tamir Duberstein <tamird@google.com> | 2022-01-27 15:29:04 +0000 |
|---|---|---|
| committer | Ian Lance Taylor <iant@golang.org> | 2022-02-09 22:06:20 +0000 |
| commit | ea3c546e9e2b507d497f8093f8414cb31c112062 (patch) | |
| tree | 2d0653eedb6d9f014941e6c774a71f0ea931baf8 /src/syscall | |
| parent | 2e2ef31778800856d9db87ad06cc963ef2530eeb (diff) | |
| download | go-ea3c546e9e2b507d497f8093f8414cb31c112062.tar.xz | |
syscall: use RLIMIT_CPU instead of RLIMIT_NOFILE
The latter is subject to kern.maxfilelimit restrictions on darwin which
are not reflected in the return value. This makes it difficult to
reliably restore the default after the test is complete. RLIMIT_CPU
should hopefully sidestep this problem.
Updates #40564.
Change-Id: Ifb33c7d46f2708130cef366dc245c643a2d5e465
Reviewed-on: https://go-review.googlesource.com/c/go/+/383234
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
Trust: Bryan Mills <bcmills@google.com>
Diffstat (limited to 'src/syscall')
| -rw-r--r-- | src/syscall/syscall_unix_test.go | 21 |
1 files changed, 4 insertions, 17 deletions
diff --git a/src/syscall/syscall_unix_test.go b/src/syscall/syscall_unix_test.go index e4af0ba4a5..1ef2634fa1 100644 --- a/src/syscall/syscall_unix_test.go +++ b/src/syscall/syscall_unix_test.go @@ -328,8 +328,7 @@ func TestUnixRightsRoundtrip(t *testing.T) { func TestRlimit(t *testing.T) { var rlimit, zero syscall.Rlimit - err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rlimit) - if err != nil { + if err := syscall.Getrlimit(syscall.RLIMIT_CPU, &rlimit); err != nil { t.Fatalf("Getrlimit: save failed: %v", err) } if zero == rlimit { @@ -337,31 +336,19 @@ func TestRlimit(t *testing.T) { } set := rlimit set.Cur = set.Max - 1 - if (runtime.GOOS == "darwin" || runtime.GOOS == "ios") && set.Cur > 4096 { - // rlim_min for RLIMIT_NOFILE should be equal to - // or lower than kern.maxfilesperproc, which on - // some machines are 4096. See #40564. - set.Cur = 4096 - } - err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &set) - if err != nil { + if err := syscall.Setrlimit(syscall.RLIMIT_CPU, &set); err != nil { t.Fatalf("Setrlimit: set failed: %#v %v", set, err) } var get syscall.Rlimit - err = syscall.Getrlimit(syscall.RLIMIT_NOFILE, &get) - if err != nil { + if err := syscall.Getrlimit(syscall.RLIMIT_CPU, &get); err != nil { t.Fatalf("Getrlimit: get failed: %v", err) } set = rlimit set.Cur = set.Max - 1 - if (runtime.GOOS == "darwin" || runtime.GOOS == "ios") && set.Cur > 4096 { - set.Cur = 4096 - } if set != get { t.Fatalf("Rlimit: change failed: wanted %#v got %#v", set, get) } - err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rlimit) - if err != nil { + if err := syscall.Setrlimit(syscall.RLIMIT_CPU, &rlimit); err != nil { t.Fatalf("Setrlimit: restore failed: %#v %v", rlimit, err) } } |
