diff --git a/spec.go b/spec.go index 9c482b5cd80..4987d30d0bf 100644 --- a/spec.go +++ b/spec.go @@ -341,10 +341,11 @@ func createCgroupConfig(name string, spec *specs.LinuxSpec) (*configs.Cgroup, er if err != nil { return nil, err } + myCgroupPath = filepath.Join(myCgroupPath, name) } c := &configs.Cgroup{ - Path: filepath.Join(myCgroupPath, name), + Path: myCgroupPath, Resources: &configs.Resources{}, } c.Resources.AllowedDevices = allowedDevices diff --git a/spec_test.go b/spec_test.go new file mode 100644 index 00000000000..6905d301221 --- /dev/null +++ b/spec_test.go @@ -0,0 +1,39 @@ +// build +linux + +package main + +import ( + "strings" + "testing" + + "github.com/opencontainers/specs" +) + +func TestLinuxCgroupsPathSpecified(t *testing.T) { + cgroupsPath := "/user/cgroups/path/id" + + spec := &specs.LinuxSpec{} + spec.Linux.CgroupsPath = &cgroupsPath + + cgroup, err := createCgroupConfig("ContainerID", spec) + if err != nil { + t.Errorf("Couldn't create Cgroup config: %v", err) + } + + if cgroup.Path != cgroupsPath { + t.Errorf("Wrong cgroupsPath, expected '%s' got '%s'", cgroupsPath, cgroup.Path) + } +} + +func TestLinuxCgroupsPathNotSpecified(t *testing.T) { + spec := &specs.LinuxSpec{} + + cgroup, err := createCgroupConfig("ContainerID", spec) + if err != nil { + t.Errorf("Couldn't create Cgroup config: %v", err) + } + + if !strings.HasSuffix(cgroup.Path, "/ContainerID") { + t.Errorf("Wrong cgroupsPath, expected it to have suffix '%s' got '%s'", "/ContainerID", cgroup.Path) + } +}