mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Migrate several resize tests from integration-cli to integration
This fix migrates several resize tests from integration-cli to api tests. Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
This commit is contained in:
parent
e8d1f35718
commit
8f800c9415
2 changed files with 102 additions and 0 deletions
|
@ -1,11 +1,17 @@
|
||||||
package container
|
package container
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/docker/docker/api/types"
|
||||||
|
"github.com/docker/docker/api/types/container"
|
||||||
|
"github.com/docker/docker/api/types/network"
|
||||||
|
"github.com/docker/docker/client"
|
||||||
"github.com/docker/docker/internal/test/environment"
|
"github.com/docker/docker/internal/test/environment"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
var testEnv *environment.Execution
|
var testEnv *environment.Execution
|
||||||
|
@ -31,3 +37,32 @@ func setupTest(t *testing.T) func() {
|
||||||
environment.ProtectAll(t, testEnv)
|
environment.ProtectAll(t, testEnv)
|
||||||
return func() { testEnv.Clean(t) }
|
return func() { testEnv.Clean(t) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type containerConstructor func(config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig)
|
||||||
|
|
||||||
|
func createSimpleContainer(ctx context.Context, t *testing.T, client client.APIClient, name string, f ...containerConstructor) string {
|
||||||
|
config := &container.Config{
|
||||||
|
Cmd: []string{"top"},
|
||||||
|
Image: "busybox",
|
||||||
|
}
|
||||||
|
hostConfig := &container.HostConfig{}
|
||||||
|
networkingConfig := &network.NetworkingConfig{}
|
||||||
|
|
||||||
|
for _, fn := range f {
|
||||||
|
fn(config, hostConfig, networkingConfig)
|
||||||
|
}
|
||||||
|
|
||||||
|
c, err := client.ContainerCreate(ctx, config, hostConfig, networkingConfig, name)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
return c.ID
|
||||||
|
}
|
||||||
|
|
||||||
|
func runSimpleContainer(ctx context.Context, t *testing.T, client client.APIClient, name string, f ...containerConstructor) string {
|
||||||
|
cID := createSimpleContainer(ctx, t, client, name, f...)
|
||||||
|
|
||||||
|
err := client.ContainerStart(ctx, cID, types.ContainerStartOptions{})
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
return cID
|
||||||
|
}
|
||||||
|
|
67
integration/container/resize_test.go
Normal file
67
integration/container/resize_test.go
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
package container
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"net/http"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/docker/docker/api/types"
|
||||||
|
"github.com/docker/docker/api/types/container"
|
||||||
|
"github.com/docker/docker/api/types/network"
|
||||||
|
req "github.com/docker/docker/integration-cli/request"
|
||||||
|
"github.com/docker/docker/integration/util/request"
|
||||||
|
"github.com/docker/docker/internal/testutil"
|
||||||
|
"github.com/gotestyourself/gotestyourself/poll"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestResize(t *testing.T) {
|
||||||
|
defer setupTest(t)()
|
||||||
|
client := request.NewAPIClient(t)
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
cID := runSimpleContainer(ctx, t, client, "")
|
||||||
|
|
||||||
|
poll.WaitOn(t, containerIsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond))
|
||||||
|
|
||||||
|
err := client.ContainerResize(ctx, cID, types.ResizeOptions{
|
||||||
|
Height: 40,
|
||||||
|
Width: 40,
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestResizeWithInvalidSize(t *testing.T) {
|
||||||
|
defer setupTest(t)()
|
||||||
|
client := request.NewAPIClient(t)
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
cID := runSimpleContainer(ctx, t, client, "")
|
||||||
|
|
||||||
|
poll.WaitOn(t, containerIsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond))
|
||||||
|
|
||||||
|
endpoint := "/containers/" + cID + "/resize?h=foo&w=bar"
|
||||||
|
res, _, err := req.Post(endpoint)
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, res.StatusCode, http.StatusBadRequest)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestResizeWhenContainerNotStarted(t *testing.T) {
|
||||||
|
defer setupTest(t)()
|
||||||
|
client := request.NewAPIClient(t)
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
cID := runSimpleContainer(ctx, t, client, "", func(config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig) {
|
||||||
|
config.Cmd = []string{"echo"}
|
||||||
|
})
|
||||||
|
|
||||||
|
poll.WaitOn(t, containerIsInState(ctx, client, cID, "exited"), poll.WithDelay(100*time.Millisecond))
|
||||||
|
|
||||||
|
err := client.ContainerResize(ctx, cID, types.ResizeOptions{
|
||||||
|
Height: 40,
|
||||||
|
Width: 40,
|
||||||
|
})
|
||||||
|
testutil.ErrorContains(t, err, "is not running")
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue