cmd/utils: add check on fd hard limit, skip test if below target (#15684)
* cmd/utils: Add check on hard limit, skip test if below target * cmd/utils: Cross platform compatible fd limit test * cmd/utils: Remove syscall.Rlimit in test * cmd/utils: comment fd utility method
This commit is contained in:
parent
542d51895f
commit
14852810b4
@ -52,3 +52,13 @@ func getFdLimit() (int, error) {
|
|||||||
}
|
}
|
||||||
return int(limit.Cur), nil
|
return int(limit.Cur), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// getFdMaxLimit retrieves the maximum number of file descriptors this process is
|
||||||
|
// allowed to request for itself.
|
||||||
|
func getFdMaxLimit() (int, error) {
|
||||||
|
var limit syscall.Rlimit
|
||||||
|
if err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &limit); err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
return int(limit.Max), nil
|
||||||
|
}
|
||||||
|
@ -16,12 +16,22 @@
|
|||||||
|
|
||||||
package utils
|
package utils
|
||||||
|
|
||||||
import "testing"
|
import (
|
||||||
|
"fmt"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
// TestFileDescriptorLimits simply tests whether the file descriptor allowance
|
// TestFileDescriptorLimits simply tests whether the file descriptor allowance
|
||||||
// per this process can be retrieved.
|
// per this process can be retrieved.
|
||||||
func TestFileDescriptorLimits(t *testing.T) {
|
func TestFileDescriptorLimits(t *testing.T) {
|
||||||
target := 4096
|
target := 4096
|
||||||
|
hardlimit, err := getFdMaxLimit()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if hardlimit < target {
|
||||||
|
t.Skip(fmt.Sprintf("system limit is less than desired test target: %d < %d", hardlimit, target))
|
||||||
|
}
|
||||||
|
|
||||||
if limit, err := getFdLimit(); err != nil || limit <= 0 {
|
if limit, err := getFdLimit(); err != nil || limit <= 0 {
|
||||||
t.Fatalf("failed to retrieve file descriptor limit (%d): %v", limit, err)
|
t.Fatalf("failed to retrieve file descriptor limit (%d): %v", limit, err)
|
||||||
|
@ -48,3 +48,13 @@ func getFdLimit() (int, error) {
|
|||||||
}
|
}
|
||||||
return int(limit.Cur), nil
|
return int(limit.Cur), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// getFdMaxLimit retrieves the maximum number of file descriptors this process is
|
||||||
|
// allowed to request for itself.
|
||||||
|
func getFdMaxLimit() (int, error) {
|
||||||
|
var limit syscall.Rlimit
|
||||||
|
if err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &limit); err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
return int(limit.Max), nil
|
||||||
|
}
|
||||||
|
@ -39,3 +39,9 @@ func getFdLimit() (int, error) {
|
|||||||
// Please see raiseFdLimit for the reason why we use hard coded 16K as the limit
|
// Please see raiseFdLimit for the reason why we use hard coded 16K as the limit
|
||||||
return 16384, nil
|
return 16384, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// getFdMaxLimit retrieves the maximum number of file descriptors this process is
|
||||||
|
// allowed to request for itself.
|
||||||
|
func getFdMaxLimit() (int, error) {
|
||||||
|
return getFdLimit()
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user