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  }