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  }