links_linux_test.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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/api/types/filters"
  11. "github.com/docker/docker/integration/internal/container"
  12. "github.com/docker/docker/integration/internal/request"
  13. "github.com/docker/docker/pkg/stdcopy"
  14. "github.com/gotestyourself/gotestyourself/poll"
  15. "github.com/gotestyourself/gotestyourself/skip"
  16. "github.com/stretchr/testify/assert"
  17. "github.com/stretchr/testify/require"
  18. )
  19. func TestLinksEtcHostsContentMatch(t *testing.T) {
  20. skip.If(t, testEnv.IsRemoteDaemon())
  21. hosts, err := ioutil.ReadFile("/etc/hosts")
  22. skip.If(t, os.IsNotExist(err))
  23. defer setupTest(t)()
  24. client := request.NewAPIClient(t)
  25. ctx := context.Background()
  26. cID := container.Run(t, ctx, client, container.WithCmd("cat", "/etc/hosts"), container.WithNetworkMode("host"))
  27. poll.WaitOn(t, container.IsStopped(ctx, client, cID), poll.WithDelay(100*time.Millisecond))
  28. body, err := client.ContainerLogs(ctx, cID, types.ContainerLogsOptions{
  29. ShowStdout: true,
  30. })
  31. require.NoError(t, err)
  32. defer body.Close()
  33. var b bytes.Buffer
  34. _, err = stdcopy.StdCopy(&b, ioutil.Discard, body)
  35. require.NoError(t, err)
  36. assert.Equal(t, string(hosts), b.String())
  37. }
  38. func TestLinksContainerNames(t *testing.T) {
  39. skip.If(t, testEnv.DaemonInfo.OSType != "linux")
  40. defer setupTest(t)()
  41. client := request.NewAPIClient(t)
  42. ctx := context.Background()
  43. container.Run(t, ctx, client, container.WithName("first"))
  44. container.Run(t, ctx, client, container.WithName("second"), container.WithLinks("first:first"))
  45. f := filters.NewArgs(filters.Arg("name", "first"))
  46. containers, err := client.ContainerList(ctx, types.ContainerListOptions{
  47. Filters: f,
  48. })
  49. require.NoError(t, err)
  50. assert.Equal(t, 1, len(containers))
  51. assert.Equal(t, []string{"/first", "/second/first"}, containers[0].Names)
  52. }