github.com/rish1988/moby@v25.0.2+incompatible/integration/system/cgroupdriver_systemd_test.go (about) 1 package system 2 3 import ( 4 "os" 5 "testing" 6 7 containertypes "github.com/docker/docker/api/types/container" 8 "github.com/docker/docker/integration/internal/container" 9 "github.com/docker/docker/testutil" 10 "github.com/docker/docker/testutil/daemon" 11 12 "gotest.tools/v3/assert" 13 "gotest.tools/v3/skip" 14 ) 15 16 // hasSystemd checks whether the host was booted with systemd as its init 17 // system. Stolen from 18 // https://github.com/coreos/go-systemd/blob/176f85496f4e/util/util.go#L68 19 func hasSystemd() bool { 20 fi, err := os.Lstat("/run/systemd/system") 21 if err != nil { 22 return false 23 } 24 return fi.IsDir() 25 } 26 27 // TestCgroupDriverSystemdMemoryLimit checks that container 28 // memory limit can be set when using systemd cgroupdriver. 29 // https://github.com/moby/moby/issues/35123 30 func TestCgroupDriverSystemdMemoryLimit(t *testing.T) { 31 skip.If(t, testEnv.DaemonInfo.OSType == "windows") 32 skip.If(t, !hasSystemd()) 33 t.Parallel() 34 35 ctx := testutil.StartSpan(baseContext, t) 36 37 d := daemon.New(t) 38 c := d.NewClientT(t) 39 40 d.StartWithBusybox(ctx, t, "--exec-opt", "native.cgroupdriver=systemd", "--iptables=false") 41 defer d.Stop(t) 42 43 const mem = int64(64 * 1024 * 1024) // 64 MB 44 45 ctrID := container.Create(ctx, t, c, func(ctr *container.TestContainerConfig) { 46 ctr.HostConfig.Resources.Memory = mem 47 }) 48 defer c.ContainerRemove(ctx, ctrID, containertypes.RemoveOptions{Force: true}) 49 50 err := c.ContainerStart(ctx, ctrID, containertypes.StartOptions{}) 51 assert.NilError(t, err) 52 53 s, err := c.ContainerInspect(ctx, ctrID) 54 assert.NilError(t, err) 55 assert.Equal(t, s.HostConfig.Memory, mem) 56 }