pidmode_linux_test.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435
  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 TestPIDModeHost(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. apiClient := testEnv.APIClient()
  19. ctx := context.Background()
  20. cID := container.Run(ctx, t, apiClient, container.WithPIDMode("host"))
  21. poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "running"), poll.WithDelay(100*time.Millisecond))
  22. cPid := container.GetContainerNS(ctx, t, apiClient, cID, "pid")
  23. assert.Assert(t, hostPid == cPid)
  24. cID = container.Run(ctx, t, apiClient)
  25. poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "running"), poll.WithDelay(100*time.Millisecond))
  26. cPid = container.GetContainerNS(ctx, t, apiClient, cID, "pid")
  27. assert.Assert(t, hostPid != cPid)
  28. }