mirror of
https://github.com/golang/go
synced 2024-11-18 20:44:45 -07:00
syscall: fix skipping TestUseCgroupFD
The check in prepareCgroupFD tried to find out if clone3 with CLONE_INTO_CGROUP flag is supported, by supplying arguments in SysProcAttr that will make ForkExec use clone3 with CLONE_INTO_CGROUP and fail. CL 456375 inadvertently broke the above check by adding more errno values to ignore. As a result, TestUseCgroupFD is always skipped, even when the test could in fact be run. Fix by removing the check entirely, instead let's use the functionality and figure out from the errno if this has failed because of unsupported syscall, lack of permissions, or other reason. Change-Id: I108b27b6cfeec390ebd3f161ac39e8597569b666 Reviewed-on: https://go-review.googlesource.com/c/go/+/520265 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Run-TryBot: Kirill Kolyshkin <kolyshkin@gmail.com> Reviewed-by: Ian Lance Taylor <iant@google.com> Auto-Submit: Ian Lance Taylor <iant@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Bryan Mills <bcmills@google.com>
This commit is contained in:
parent
62fb281cf7
commit
38b623f42d
@ -410,17 +410,6 @@ func prepareCgroupFD(t *testing.T) (int, string) {
|
||||
t.Skipf("cgroup v2 not available (/proc/self/cgroup contents: %q)", selfCg)
|
||||
}
|
||||
|
||||
// Need clone3 with CLONE_INTO_CGROUP support.
|
||||
_, err = syscall.ForkExec("non-existent binary", nil, &syscall.ProcAttr{
|
||||
Sys: &syscall.SysProcAttr{
|
||||
UseCgroupFD: true,
|
||||
CgroupFD: -1,
|
||||
},
|
||||
})
|
||||
if testenv.SyscallIsNotSupported(err) {
|
||||
t.Skipf("clone3 with CLONE_INTO_CGROUP not available: %v", err)
|
||||
}
|
||||
|
||||
// Need an ability to create a sub-cgroup.
|
||||
subCgroup, err := os.MkdirTemp(prefix+string(bytes.TrimSpace(cg)), "subcg-")
|
||||
if err != nil {
|
||||
@ -459,6 +448,13 @@ func TestUseCgroupFD(t *testing.T) {
|
||||
}
|
||||
out, err := cmd.CombinedOutput()
|
||||
if err != nil {
|
||||
if err != syscall.EINVAL && testenv.SyscallIsNotSupported(err) {
|
||||
// Can be one of:
|
||||
// - clone3 not supported (old kernel);
|
||||
// - clone3 not allowed (by e.g. seccomp);
|
||||
// - lack of CAP_SYS_ADMIN.
|
||||
t.Skipf("clone3 with CLONE_INTO_CGROUP not available: %v", err)
|
||||
}
|
||||
t.Fatalf("Cmd failed with err %v, output: %s", err, out)
|
||||
}
|
||||
// NB: this wouldn't work with cgroupns.
|
||||
|
Loading…
Reference in New Issue
Block a user