12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package system
- import (
- "context"
- "os"
- "testing"
- "github.com/docker/docker/api/types"
- "github.com/docker/docker/api/types/container"
- "github.com/docker/docker/internal/test/daemon"
- "github.com/gotestyourself/gotestyourself/assert"
- )
- // hasSystemd checks whether the host was booted with systemd as its init
- // system. Stolen from
- // https://github.com/coreos/go-systemd/blob/176f85496f4e/util/util.go#L68
- func hasSystemd() bool {
- fi, err := os.Lstat("/run/systemd/system")
- if err != nil {
- return false
- }
- return fi.IsDir()
- }
- // TestCgroupDriverSystemdMemoryLimit checks that container
- // memory limit can be set when using systemd cgroupdriver.
- // https://github.com/moby/moby/issues/35123
- func TestCgroupDriverSystemdMemoryLimit(t *testing.T) {
- t.Parallel()
- if !hasSystemd() {
- t.Skip("systemd not available")
- }
- d := daemon.New(t)
- client, err := d.NewClient()
- assert.NilError(t, err)
- d.StartWithBusybox(t, "--exec-opt", "native.cgroupdriver=systemd", "--iptables=false")
- defer d.Stop(t)
- const mem = 64 * 1024 * 1024 // 64 MB
- cfg := container.Config{
- Image: "busybox",
- Cmd: []string{"top"},
- }
- hostcfg := container.HostConfig{
- Resources: container.Resources{
- Memory: mem,
- },
- }
- ctx := context.Background()
- ctr, err := client.ContainerCreate(ctx, &cfg, &hostcfg, nil, "")
- assert.NilError(t, err)
- defer client.ContainerRemove(ctx, ctr.ID, types.ContainerRemoveOptions{Force: true})
- err = client.ContainerStart(ctx, ctr.ID, types.ContainerStartOptions{})
- assert.NilError(t, err)
- s, err := client.ContainerInspect(ctx, ctr.ID)
- assert.NilError(t, err)
- assert.Equal(t, s.HostConfig.Memory, mem)
- }
|