Merge pull request #569 from mlaventure/fix-cgroupspath-as-cgroupsparent

Fix CgroupsPath interpretation
This commit is contained in:
Alexander Morozov 2016-02-17 12:54:51 -08:00
commit 382880b250
2 changed files with 41 additions and 1 deletions

View File

@ -343,10 +343,11 @@ func createCgroupConfig(name string, spec *specs.LinuxSpec) (*configs.Cgroup, er
if err != nil { if err != nil {
return nil, err return nil, err
} }
myCgroupPath = filepath.Join(myCgroupPath, name)
} }
c := &configs.Cgroup{ c := &configs.Cgroup{
Path: filepath.Join(myCgroupPath, name), Path: myCgroupPath,
Resources: &configs.Resources{}, Resources: &configs.Resources{},
} }
c.Resources.AllowedDevices = allowedDevices c.Resources.AllowedDevices = allowedDevices

39
spec_test.go Normal file
View File

@ -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)
}
}