pidmode_linux_test.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. package container // import "github.com/docker/docker/integration/container"
  2. import (
  3. "context"
  4. "os"
  5. "testing"
  6. "time"
  7. "github.com/docker/docker/integration/internal/container"
  8. "gotest.tools/v3/assert"
  9. "gotest.tools/v3/poll"
  10. "gotest.tools/v3/skip"
  11. )
  12. func TestPidHost(t *testing.T) {
  13. skip.If(t, testEnv.DaemonInfo.OSType != "linux")
  14. skip.If(t, testEnv.IsRemoteDaemon())
  15. hostPid, err := os.Readlink("/proc/1/ns/pid")
  16. assert.NilError(t, err)
  17. defer setupTest(t)()
  18. client := testEnv.APIClient()
  19. ctx := context.Background()
  20. cID := container.Run(ctx, t, client, func(c *container.TestContainerConfig) {
  21. c.HostConfig.PidMode = "host"
  22. })
  23. poll.WaitOn(t, container.IsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond))
  24. cPid := container.GetContainerNS(ctx, t, client, cID, "pid")
  25. assert.Assert(t, hostPid == cPid)
  26. cID = container.Run(ctx, t, client)
  27. poll.WaitOn(t, container.IsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond))
  28. cPid = container.GetContainerNS(ctx, t, client, cID, "pid")
  29. assert.Assert(t, hostPid != cPid)
  30. }