ソースを参照

Merge pull request #46422 from thaJeztah/fix_resize_tests

integration/container: fix flaky resize tests, and some cleaning up
Sebastiaan van Stijn 1 年間 前
コミット
97e782ee2b
1 ファイル変更31 行追加36 行削除
  1. 31 36
      integration/container/resize_test.go

+ 31 - 36
integration/container/resize_test.go

@@ -3,15 +3,14 @@ package container // import "github.com/docker/docker/integration/container"
 import (
 import (
 	"net/http"
 	"net/http"
 	"testing"
 	"testing"
-	"time"
 
 
 	"github.com/docker/docker/api/types"
 	"github.com/docker/docker/api/types"
 	"github.com/docker/docker/api/types/versions"
 	"github.com/docker/docker/api/types/versions"
+	"github.com/docker/docker/errdefs"
 	"github.com/docker/docker/integration/internal/container"
 	"github.com/docker/docker/integration/internal/container"
 	req "github.com/docker/docker/testutil/request"
 	req "github.com/docker/docker/testutil/request"
 	"gotest.tools/v3/assert"
 	"gotest.tools/v3/assert"
 	is "gotest.tools/v3/assert/cmp"
 	is "gotest.tools/v3/assert/cmp"
-	"gotest.tools/v3/poll"
 	"gotest.tools/v3/skip"
 	"gotest.tools/v3/skip"
 )
 )
 
 
@@ -19,43 +18,39 @@ func TestResize(t *testing.T) {
 	ctx := setupTest(t)
 	ctx := setupTest(t)
 	apiClient := testEnv.APIClient()
 	apiClient := testEnv.APIClient()
 
 
-	cID := container.Run(ctx, t, apiClient, container.WithTty(true))
-
-	poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "running"), poll.WithDelay(100*time.Millisecond))
-
-	err := apiClient.ContainerResize(ctx, cID, types.ResizeOptions{
-		Height: 40,
-		Width:  40,
+	t.Run("success", func(t *testing.T) {
+		cID := container.Run(ctx, t, apiClient, container.WithTty(true))
+		err := apiClient.ContainerResize(ctx, cID, types.ResizeOptions{
+			Height: 40,
+			Width:  40,
+		})
+		assert.NilError(t, err)
+		// TODO(thaJeztah): also check if the resize happened
+		//
+		// Note: container inspect shows the initial size that was
+		// set when creating the container. Actual resize happens in
+		// containerd, and currently does not update the container's
+		// config after running (but does send a "resize" event).
 	})
 	})
-	assert.NilError(t, err)
-}
-
-func TestResizeWithInvalidSize(t *testing.T) {
-	skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.32"), "broken in earlier versions")
-	ctx := setupTest(t)
-	apiClient := testEnv.APIClient()
-
-	cID := container.Run(ctx, t, apiClient)
 
 
-	poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "running"), poll.WithDelay(100*time.Millisecond))
+	t.Run("invalid size", func(t *testing.T) {
+		skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.32"), "broken in earlier versions")
+		cID := container.Run(ctx, t, apiClient)
 
 
-	endpoint := "/containers/" + cID + "/resize?h=foo&w=bar"
-	res, _, err := req.Post(ctx, endpoint)
-	assert.NilError(t, err)
-	assert.Check(t, is.DeepEqual(http.StatusBadRequest, res.StatusCode))
-}
-
-func TestResizeWhenContainerNotStarted(t *testing.T) {
-	ctx := setupTest(t)
-	apiClient := testEnv.APIClient()
-
-	cID := container.Run(ctx, t, apiClient, container.WithCmd("echo"))
-
-	poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "exited"), poll.WithDelay(100*time.Millisecond))
+		// Manually creating a request here, as the APIClient would invalidate
+		// these values before they're sent.
+		res, _, err := req.Post(ctx, "/containers/"+cID+"/resize?h=foo&w=bar")
+		assert.NilError(t, err)
+		assert.Check(t, is.DeepEqual(http.StatusBadRequest, res.StatusCode))
+	})
 
 
-	err := apiClient.ContainerResize(ctx, cID, types.ResizeOptions{
-		Height: 40,
-		Width:  40,
+	t.Run("invalid state", func(t *testing.T) {
+		cID := container.Create(ctx, t, apiClient, container.WithCmd("echo"))
+		err := apiClient.ContainerResize(ctx, cID, types.ResizeOptions{
+			Height: 40,
+			Width:  40,
+		})
+		assert.Check(t, is.ErrorType(err, errdefs.IsConflict))
+		assert.Check(t, is.ErrorContains(err, "is not running"))
 	})
 	})
-	assert.Check(t, is.ErrorContains(err, "is not running"))
 }
 }