links_linux_test.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package container // import "github.com/docker/docker/integration/container"
  2. import (
  3. "os"
  4. "testing"
  5. containertypes "github.com/docker/docker/api/types/container"
  6. "github.com/docker/docker/api/types/filters"
  7. "github.com/docker/docker/integration/internal/container"
  8. "gotest.tools/v3/assert"
  9. is "gotest.tools/v3/assert/cmp"
  10. "gotest.tools/v3/skip"
  11. )
  12. func TestLinksEtcHostsContentMatch(t *testing.T) {
  13. skip.If(t, testEnv.IsRemoteDaemon)
  14. skip.If(t, testEnv.IsRootless, "rootless mode has different view of /etc/hosts")
  15. hosts, err := os.ReadFile("/etc/hosts")
  16. skip.If(t, os.IsNotExist(err))
  17. ctx := setupTest(t)
  18. apiClient := testEnv.APIClient()
  19. cID := container.Run(ctx, t, apiClient, container.WithNetworkMode("host"))
  20. res, err := container.Exec(ctx, apiClient, cID, []string{"cat", "/etc/hosts"})
  21. assert.NilError(t, err)
  22. assert.Assert(t, is.Len(res.Stderr(), 0))
  23. assert.Equal(t, 0, res.ExitCode)
  24. assert.Check(t, is.Equal(string(hosts), res.Stdout()))
  25. }
  26. func TestLinksContainerNames(t *testing.T) {
  27. skip.If(t, testEnv.DaemonInfo.OSType == "windows")
  28. ctx := setupTest(t)
  29. apiClient := testEnv.APIClient()
  30. containerA := "first_" + t.Name()
  31. containerB := "second_" + t.Name()
  32. container.Run(ctx, t, apiClient, container.WithName(containerA))
  33. container.Run(ctx, t, apiClient, container.WithName(containerB), container.WithLinks(containerA+":"+containerA))
  34. containers, err := apiClient.ContainerList(ctx, containertypes.ListOptions{
  35. Filters: filters.NewArgs(filters.Arg("name", containerA)),
  36. })
  37. assert.NilError(t, err)
  38. assert.Check(t, is.Equal(1, len(containers)))
  39. assert.Check(t, is.DeepEqual([]string{"/" + containerA, "/" + containerB + "/" + containerA}, containers[0].Names))
  40. }