resize_test.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package container // import "github.com/docker/docker/integration/container"
  2. import (
  3. "context"
  4. "net/http"
  5. "testing"
  6. "time"
  7. "github.com/docker/docker/api/types"
  8. "github.com/docker/docker/api/types/versions"
  9. "github.com/docker/docker/integration/internal/container"
  10. "github.com/docker/docker/internal/test/request"
  11. req "github.com/docker/docker/internal/test/request"
  12. "gotest.tools/assert"
  13. is "gotest.tools/assert/cmp"
  14. "gotest.tools/poll"
  15. "gotest.tools/skip"
  16. )
  17. func TestResize(t *testing.T) {
  18. skip.If(t, testEnv.OSType == "windows", "FIXME")
  19. defer setupTest(t)()
  20. client := request.NewAPIClient(t)
  21. ctx := context.Background()
  22. cID := container.Run(t, ctx, client)
  23. poll.WaitOn(t, container.IsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond))
  24. err := client.ContainerResize(ctx, cID, types.ResizeOptions{
  25. Height: 40,
  26. Width: 40,
  27. })
  28. assert.NilError(t, err)
  29. }
  30. func TestResizeWithInvalidSize(t *testing.T) {
  31. skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.32"), "broken in earlier versions")
  32. skip.If(t, testEnv.OSType == "windows", "FIXME")
  33. defer setupTest(t)()
  34. client := request.NewAPIClient(t)
  35. ctx := context.Background()
  36. cID := container.Run(t, ctx, client)
  37. poll.WaitOn(t, container.IsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond))
  38. endpoint := "/containers/" + cID + "/resize?h=foo&w=bar"
  39. res, _, err := req.Post(endpoint)
  40. assert.NilError(t, err)
  41. assert.Check(t, is.DeepEqual(http.StatusBadRequest, res.StatusCode))
  42. }
  43. func TestResizeWhenContainerNotStarted(t *testing.T) {
  44. defer setupTest(t)()
  45. client := request.NewAPIClient(t)
  46. ctx := context.Background()
  47. cID := container.Run(t, ctx, client, container.WithCmd("echo"))
  48. poll.WaitOn(t, container.IsInState(ctx, client, cID, "exited"), poll.WithDelay(100*time.Millisecond))
  49. err := client.ContainerResize(ctx, cID, types.ResizeOptions{
  50. Height: 40,
  51. Width: 40,
  52. })
  53. assert.Check(t, is.ErrorContains(err, "is not running"))
  54. }