github.com/rita33cool1/iot-system-gateway@v0.0.0-20200911033302-e65bde238cc5/docker-engine/integration/system/cgroupdriver_systemd_test.go (about) 1 package system 2 3 import ( 4 "context" 5 "os" 6 "testing" 7 8 "github.com/docker/docker/api/types" 9 "github.com/docker/docker/integration/internal/container" 10 "github.com/docker/docker/internal/test/daemon" 11 12 "github.com/gotestyourself/gotestyourself/assert" 13 ) 14 15 // hasSystemd checks whether the host was booted with systemd as its init 16 // system. Stolen from 17 // https://github.com/coreos/go-systemd/blob/176f85496f4e/util/util.go#L68 18 func hasSystemd() bool { 19 fi, err := os.Lstat("/run/systemd/system") 20 if err != nil { 21 return false 22 } 23 return fi.IsDir() 24 } 25 26 // TestCgroupDriverSystemdMemoryLimit checks that container 27 // memory limit can be set when using systemd cgroupdriver. 28 // https://github.com/moby/moby/issues/35123 29 func TestCgroupDriverSystemdMemoryLimit(t *testing.T) { 30 t.Parallel() 31 32 if !hasSystemd() { 33 t.Skip("systemd not available") 34 } 35 36 d := daemon.New(t) 37 client, err := d.NewClient() 38 assert.NilError(t, err) 39 d.StartWithBusybox(t, "--exec-opt", "native.cgroupdriver=systemd", "--iptables=false") 40 defer d.Stop(t) 41 42 const mem = 64 * 1024 * 1024 // 64 MB 43 44 ctx := context.Background() 45 ctrID := container.Create(t, ctx, client, func(c *container.TestContainerConfig) { 46 c.HostConfig.Resources.Memory = mem 47 }) 48 defer client.ContainerRemove(ctx, ctrID, types.ContainerRemoveOptions{Force: true}) 49 50 err = client.ContainerStart(ctx, ctrID, types.ContainerStartOptions{}) 51 assert.NilError(t, err) 52 53 s, err := client.ContainerInspect(ctx, ctrID) 54 assert.NilError(t, err) 55 assert.Equal(t, s.HostConfig.Memory, mem) 56 }