github.com/devdivbcp/moby@v17.12.0-ce-rc1.0.20200726071732-2d4bfdc789ad+incompatible/integration/container/run_linux_test.go (about) 1 package container // import "github.com/docker/docker/integration/container" 2 3 import ( 4 "context" 5 "strconv" 6 "strings" 7 "testing" 8 "time" 9 10 containertypes "github.com/docker/docker/api/types/container" 11 "github.com/docker/docker/api/types/versions" 12 "github.com/docker/docker/integration/internal/container" 13 "gotest.tools/assert" 14 is "gotest.tools/assert/cmp" 15 "gotest.tools/poll" 16 "gotest.tools/skip" 17 ) 18 19 func TestKernelTCPMemory(t *testing.T) { 20 skip.If(t, testEnv.DaemonInfo.OSType != "linux") 21 skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.40"), "skip test from new feature") 22 skip.If(t, !testEnv.DaemonInfo.KernelMemoryTCP) 23 24 defer setupTest(t)() 25 client := testEnv.APIClient() 26 ctx := context.Background() 27 28 const ( 29 kernelMemoryTCP int64 = 200 * 1024 * 1024 30 ) 31 32 cID := container.Run(ctx, t, client, func(c *container.TestContainerConfig) { 33 c.HostConfig.Resources = containertypes.Resources{ 34 KernelMemoryTCP: kernelMemoryTCP, 35 } 36 }) 37 38 poll.WaitOn(t, container.IsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) 39 40 inspect, err := client.ContainerInspect(ctx, cID) 41 assert.NilError(t, err) 42 assert.Check(t, is.Equal(kernelMemoryTCP, inspect.HostConfig.KernelMemoryTCP)) 43 44 res, err := container.Exec(ctx, client, cID, 45 []string{"cat", "/sys/fs/cgroup/memory/memory.kmem.tcp.limit_in_bytes"}) 46 assert.NilError(t, err) 47 assert.Assert(t, is.Len(res.Stderr(), 0)) 48 assert.Equal(t, 0, res.ExitCode) 49 assert.Check(t, is.Equal(strconv.FormatInt(kernelMemoryTCP, 10), strings.TrimSpace(res.Stdout()))) 50 } 51 52 func TestNISDomainname(t *testing.T) { 53 // Older versions of the daemon would concatenate hostname and domainname, 54 // so hostname "foobar" and domainname "baz.cyphar.com" would produce 55 // `foobar.baz.cyphar.com` as hostname. 56 skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.40"), "skip test from new feature") 57 skip.If(t, testEnv.DaemonInfo.OSType != "linux") 58 59 defer setupTest(t)() 60 client := testEnv.APIClient() 61 ctx := context.Background() 62 63 const ( 64 hostname = "foobar" 65 domainname = "baz.cyphar.com" 66 ) 67 68 cID := container.Run(ctx, t, client, func(c *container.TestContainerConfig) { 69 c.Config.Hostname = hostname 70 c.Config.Domainname = domainname 71 }) 72 73 poll.WaitOn(t, container.IsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) 74 75 inspect, err := client.ContainerInspect(ctx, cID) 76 assert.NilError(t, err) 77 assert.Check(t, is.Equal(hostname, inspect.Config.Hostname)) 78 assert.Check(t, is.Equal(domainname, inspect.Config.Domainname)) 79 80 // Check hostname. 81 res, err := container.Exec(ctx, client, cID, 82 []string{"cat", "/proc/sys/kernel/hostname"}) 83 assert.NilError(t, err) 84 assert.Assert(t, is.Len(res.Stderr(), 0)) 85 assert.Equal(t, 0, res.ExitCode) 86 assert.Check(t, is.Equal(hostname, strings.TrimSpace(res.Stdout()))) 87 88 // Check domainname. 89 res, err = container.Exec(ctx, client, cID, 90 []string{"cat", "/proc/sys/kernel/domainname"}) 91 assert.NilError(t, err) 92 assert.Assert(t, is.Len(res.Stderr(), 0)) 93 assert.Equal(t, 0, res.ExitCode) 94 assert.Check(t, is.Equal(domainname, strings.TrimSpace(res.Stdout()))) 95 }