Skip to content

Commit

Permalink
Merge pull request #282 from dcantah/rm-after-tests
Browse files Browse the repository at this point in the history
Cgroup2: Remove lingering cgroups after tests
  • Loading branch information
kzys authored May 22, 2023
2 parents a6075af + 1232b35 commit 0f00bce
Showing 1 changed file with 30 additions and 6 deletions.
36 changes: 30 additions & 6 deletions cgroup2/manager_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,9 @@ func TestKill(t *testing.T) {
checkCgroupMode(t)
manager, err := NewManager(defaultCgroup2Path, "/test1", ToResources(&specs.LinuxResources{}))
require.NoError(t, err)
t.Cleanup(func() {
_ = manager.Delete()
})

var (
procs []*exec.Cmd
Expand Down Expand Up @@ -187,17 +190,35 @@ func TestKill(t *testing.T) {

func TestMoveTo(t *testing.T) {
checkCgroupMode(t)
manager, err := NewManager(defaultCgroup2Path, "/test1", ToResources(&specs.LinuxResources{}))

src, err := NewManager(defaultCgroup2Path, "/test-moveto-src", ToResources(&specs.LinuxResources{}))
require.NoError(t, err)
t.Cleanup(func() {
_ = src.Kill()
_ = src.Delete()
})

proc := os.Getpid()
err = manager.AddProc(uint64(proc))
cmd := exec.Command("sleep", "infinity")
// Don't leak the process if we fail to join the cg,
// send sigkill after tests over.
cmd.SysProcAttr = &syscall.SysProcAttr{
Pdeathsig: syscall.SIGKILL,
}
err = cmd.Start()
require.NoError(t, err)

destination, err := NewManager(defaultCgroup2Path, "/test2", ToResources(&specs.LinuxResources{}))
proc := cmd.Process.Pid
err = src.AddProc(uint64(proc))
require.NoError(t, err)

err = manager.MoveTo(destination)
destination, err := NewManager(defaultCgroup2Path, "/test-moveto-dest", ToResources(&specs.LinuxResources{}))
require.NoError(t, err)
t.Cleanup(func() {
_ = destination.Kill()
_ = destination.Delete()
})

err = src.MoveTo(destination)
require.NoError(t, err)

desProcs, err := destination.Procs(true)
Expand All @@ -214,8 +235,11 @@ func TestMoveTo(t *testing.T) {

func TestCgroupType(t *testing.T) {
checkCgroupMode(t)
manager, err := NewManager(defaultCgroup2Path, "/test1", ToResources(&specs.LinuxResources{}))
manager, err := NewManager(defaultCgroup2Path, "/test-type", ToResources(&specs.LinuxResources{}))
require.NoError(t, err)
t.Cleanup(func() {
os.RemoveAll(manager.path)
})

cgType, err := manager.GetType()
require.NoError(t, err)
Expand Down

0 comments on commit 0f00bce

Please sign in to comment.