summaryrefslogtreecommitdiffhomepage
path: root/test/root
diff options
context:
space:
mode:
authorFabricio Voznika <fvoznika@google.com>2021-05-05 17:36:58 -0700
committergVisor bot <gvisor-bot@google.com>2021-05-05 17:39:29 -0700
commit9f33fe64f221de0eb2a290fd54357c954d9f38f8 (patch)
treed255ccc4bc5c546a73f82dd32caee4b9a2596c94 /test/root
parent47d1b8b4b8f2d4faaccaee10d2ad94cb79ce587a (diff)
Fixes to runsc cgroups
When loading cgroups for another process, `/proc/self` was used in a few places, causing the end state to be a mix of the process and self. This is now fixes to always use the proper `/proc/[pid]` path. Added net_prio and net_cls to the list of optional controllers. This is to allow runsc to execute then these cgroups are disabled as long as there are no net_prio and net_cls limits that need to be applied. Deflake TestMultiContainerEvent. Closes #5875 Closes #5887 PiperOrigin-RevId: 372242687
Diffstat (limited to 'test/root')
-rw-r--r--test/root/cgroup_test.go16
1 files changed, 10 insertions, 6 deletions
diff --git a/test/root/cgroup_test.go b/test/root/cgroup_test.go
index a74d6b1c1..39e838582 100644
--- a/test/root/cgroup_test.go
+++ b/test/root/cgroup_test.go
@@ -308,8 +308,8 @@ func TestCgroup(t *testing.T) {
}
}
-// TestCgroupParent sets the "CgroupParent" option and checks that the child and parent's
-// cgroups are created correctly relative to each other.
+// TestCgroupParent sets the "CgroupParent" option and checks that the child and
+// parent's cgroups are created correctly relative to each other.
func TestCgroupParent(t *testing.T) {
ctx := context.Background()
d := dockerutil.MakeContainer(ctx, t)
@@ -343,15 +343,19 @@ func TestCgroupParent(t *testing.T) {
// Finds cgroup for the sandbox's parent process to check that cgroup is
// created in the right location relative to the parent.
cmd := fmt.Sprintf("grep PPid: /proc/%d/status | sed 's/PPid:\\s//'", pid)
- ppid, err := exec.Command("bash", "-c", cmd).CombinedOutput()
+ ppidStr, err := exec.Command("bash", "-c", cmd).CombinedOutput()
if err != nil {
t.Fatalf("Executing %q: %v", cmd, err)
}
- cgroups, err := cgroup.LoadPaths(strings.TrimSpace(string(ppid)))
+ ppid, err := strconv.Atoi(strings.TrimSpace(string(ppidStr)))
if err != nil {
- t.Fatalf("cgroup.LoadPath(%s): %v", ppid, err)
+ t.Fatalf("invalid PID (%s): %v", ppidStr, err)
}
- path := filepath.Join("/sys/fs/cgroup/memory", cgroups["memory"], parent, gid, "cgroup.procs")
+ cgroups, err := cgroup.NewFromPid(ppid)
+ if err != nil {
+ t.Fatalf("cgroup.NewFromPid(%d): %v", ppid, err)
+ }
+ path := filepath.Join(cgroups.MakePath("cpuacct"), parent, gid, "cgroup.procs")
if err := verifyPid(pid, path); err != nil {
t.Errorf("cgroup control %q processes: %v", "memory", err)
}