| // Copyright 2022 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| //go:build unix | |
| package syscall_test | |
| import ( | |
| "os" | |
| "runtime" | |
| "testing" | |
| ) | |
| func TestOpenFileLimit(t *testing.T) { | |
| // For open file count, | |
| // macOS sets the default soft limit to 256 and no hard limit. | |
| // CentOS and Fedora set the default soft limit to 1024, | |
| // with hard limits of 4096 and 524288, respectively. | |
| // Check that we can open 1200 files, which proves | |
| // that the rlimit is being raised appropriately on those systems. | |
| fileCount := 1200 | |
| // OpenBSD has a default soft limit of 512 and hard limit of 1024. | |
| if runtime.GOOS == "openbsd" { | |
| fileCount = 768 | |
| } | |
| var files []*os.File | |
| for i := 0; i < fileCount; i++ { | |
| f, err := os.Open("rlimit.go") | |
| if err != nil { | |
| t.Error(err) | |
| break | |
| } | |
| files = append(files, f) | |
| } | |
| for _, f := range files { | |
| f.Close() | |
| } | |
| } |