links_linux_test.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package container // import "github.com/docker/docker/integration/container"
  2. import (
  3. "bytes"
  4. "context"
  5. "io/ioutil"
  6. "os"
  7. "testing"
  8. "time"
  9. "github.com/docker/docker/api/types"
  10. "github.com/docker/docker/integration/internal/container"
  11. "github.com/docker/docker/integration/internal/request"
  12. "github.com/docker/docker/pkg/stdcopy"
  13. "github.com/gotestyourself/gotestyourself/poll"
  14. "github.com/gotestyourself/gotestyourself/skip"
  15. "github.com/stretchr/testify/assert"
  16. "github.com/stretchr/testify/require"
  17. )
  18. func TestLinksEtcHostsContentMatch(t *testing.T) {
  19. skip.If(t, !testEnv.IsLocalDaemon())
  20. hosts, err := ioutil.ReadFile("/etc/hosts")
  21. skip.If(t, os.IsNotExist(err))
  22. defer setupTest(t)()
  23. client := request.NewAPIClient(t)
  24. ctx := context.Background()
  25. cID := container.Run(t, ctx, client, container.WithCmd("cat", "/etc/hosts"), container.WithNetworkMode("host"))
  26. poll.WaitOn(t, containerIsStopped(ctx, client, cID), poll.WithDelay(100*time.Millisecond))
  27. body, err := client.ContainerLogs(ctx, cID, types.ContainerLogsOptions{
  28. ShowStdout: true,
  29. })
  30. require.NoError(t, err)
  31. defer body.Close()
  32. var b bytes.Buffer
  33. _, err = stdcopy.StdCopy(&b, ioutil.Discard, body)
  34. require.NoError(t, err)
  35. assert.Equal(t, string(hosts), b.String())
  36. }