stop_test.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package container // import "github.com/docker/docker/integration/container"
  2. import (
  3. "context"
  4. "testing"
  5. "time"
  6. containertypes "github.com/docker/docker/api/types/container"
  7. "github.com/docker/docker/integration/internal/container"
  8. "gotest.tools/v3/assert"
  9. "gotest.tools/v3/poll"
  10. )
  11. // hcs can sometimes take a long time to stop container.
  12. const StopContainerWindowsPollTimeout = 75 * time.Second
  13. func TestStopContainerWithRestartPolicyAlways(t *testing.T) {
  14. defer setupTest(t)()
  15. apiClient := testEnv.APIClient()
  16. ctx := context.Background()
  17. names := []string{"verifyRestart1-" + t.Name(), "verifyRestart2-" + t.Name()}
  18. for _, name := range names {
  19. container.Run(ctx, t, apiClient,
  20. container.WithName(name),
  21. container.WithCmd("false"),
  22. container.WithRestartPolicy("always"),
  23. )
  24. }
  25. for _, name := range names {
  26. poll.WaitOn(t, container.IsInState(ctx, apiClient, name, "running", "restarting"), poll.WithDelay(100*time.Millisecond))
  27. }
  28. for _, name := range names {
  29. err := apiClient.ContainerStop(ctx, name, containertypes.StopOptions{})
  30. assert.NilError(t, err)
  31. }
  32. for _, name := range names {
  33. poll.WaitOn(t, container.IsStopped(ctx, apiClient, name), poll.WithDelay(100*time.Millisecond))
  34. }
  35. }