From 6623004cd45ae6fe2cbb3743e4176dc8e1ff683d Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin Date: Mon, 12 Mar 2018 14:48:49 -0700 Subject: [PATCH 1/2] integration/TestContainerShmNoLeak: use --iptables=false As mentioned in commit 9e31938, test cases that use t.Parallel() and start a docker daemon might step on each other toes as they try to configure iptables during startup, resulting in flaky tests. To avoid this, --iptables=false should be used while starting daemon. Fixes: eaa5192856c1 ("Make container resource mounts unbindable") Signed-off-by: Kir Kolyshkin Upstream-commit: c125e10a0486623ba3badebf974ea6e582373151 Component: engine --- components/engine/integration/container/mounts_linux_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/engine/integration/container/mounts_linux_test.go b/components/engine/integration/container/mounts_linux_test.go index 71bdccc71b..c36dd2761c 100644 --- a/components/engine/integration/container/mounts_linux_test.go +++ b/components/engine/integration/container/mounts_linux_test.go @@ -30,7 +30,7 @@ func TestContainerShmNoLeak(t *testing.T) { if err != nil { t.Fatal(err) } - d.StartWithBusybox(t) + d.StartWithBusybox(t, "--iptables=false") defer d.Stop(t) ctx := context.Background() From 2052fc87747d3f0ebf00dd1a527169c3635abb01 Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin Date: Mon, 12 Mar 2018 18:08:59 -0700 Subject: [PATCH 2/2] TestLinksEtcHostsContentMatch: use container.Exec() I am not quite sure why but this test is sometimes failing like this: > 15:21:41 --- FAIL: TestLinksEtcHostsContentMatch (0.53s) > 15:21:41 assertions.go:226: > > Error Trace: links_linux_test.go:46 > 15:21:41 > Error: Not equal: > 15:21:41 > expected: "127.0.0.1\tlocalhost\n::1\tlocalhost > ip6-localhost > ip6-loopback\nfe00::0\tip6-localnet\nff00::0\tip6-mcastprefix\nff02::1\tip6-allnodes\nff02::2\tip6-allrouters\n172.17.0.2\tf53feb6df161\n" > 15:21:41 > received: "" To eliminate some possible failures (like ignoring stderr from `cat` or its exit code), let's use container.Exec() to read a file from a container. Fixes: e6bd20edcbf ("Migrate some integration-cli test to api tests") Signed-off-by: Kir Kolyshkin Upstream-commit: ad2f88d8ccbd9dd0a8d9c4f96ece3956f60489df Component: engine --- .../integration/container/links_linux_test.go | 22 +++++-------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/components/engine/integration/container/links_linux_test.go b/components/engine/integration/container/links_linux_test.go index d230898ed0..c844c4916f 100644 --- a/components/engine/integration/container/links_linux_test.go +++ b/components/engine/integration/container/links_linux_test.go @@ -1,19 +1,15 @@ package container // import "github.com/docker/docker/integration/container" import ( - "bytes" "context" "io/ioutil" "os" "testing" - "time" "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/filters" "github.com/docker/docker/integration/internal/container" "github.com/docker/docker/integration/internal/request" - "github.com/docker/docker/pkg/stdcopy" - "github.com/gotestyourself/gotestyourself/poll" "github.com/gotestyourself/gotestyourself/skip" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -29,21 +25,13 @@ func TestLinksEtcHostsContentMatch(t *testing.T) { client := request.NewAPIClient(t) ctx := context.Background() - cID := container.Run(t, ctx, client, container.WithCmd("cat", "/etc/hosts"), container.WithNetworkMode("host")) - - poll.WaitOn(t, container.IsStopped(ctx, client, cID), poll.WithDelay(100*time.Millisecond)) - - body, err := client.ContainerLogs(ctx, cID, types.ContainerLogsOptions{ - ShowStdout: true, - }) + cID := container.Run(t, ctx, client, container.WithNetworkMode("host")) + res, err := container.Exec(ctx, client, cID, []string{"cat", "/etc/hosts"}) require.NoError(t, err) - defer body.Close() + require.Empty(t, res.Stderr()) + require.Equal(t, 0, res.ExitCode) - var b bytes.Buffer - _, err = stdcopy.StdCopy(&b, ioutil.Discard, body) - require.NoError(t, err) - - assert.Equal(t, string(hosts), b.String()) + assert.Equal(t, string(hosts), res.Stdout()) } func TestLinksContainerNames(t *testing.T) {