mirror of
https://github.com/moby/moby.git
synced 2026-01-11 18:51:37 +00:00
use container.ContainerState consts in tests
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
@@ -1981,8 +1981,10 @@ func containerExit(ctx context.Context, apiclient client.APIClient, name string)
|
||||
return poll.Error(err)
|
||||
}
|
||||
switch ctr.State.Status {
|
||||
case "created", "running":
|
||||
case container.StateCreated, container.StateRunning:
|
||||
return poll.Continue("container %s is %s, waiting for exit", name, ctr.State.Status)
|
||||
case container.StatePaused, container.StateRestarting, container.StateRemoving, container.StateExited, container.StateDead:
|
||||
// done
|
||||
}
|
||||
return poll.Success()
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ func TestNoNewPrivileges(t *testing.T) {
|
||||
container.WithSecurityOpt("no-new-privileges=true"),
|
||||
)
|
||||
cid := container.Run(ctx, t, client, opts...)
|
||||
poll.WaitOn(t, container.IsInState(ctx, client, cid, "exited"))
|
||||
poll.WaitOn(t, container.IsInState(ctx, client, cid, containertypes.StateExited))
|
||||
|
||||
// Assert on outputs
|
||||
logReader, err := client.ContainerLogs(ctx, cid, containertypes.LogsOptions{
|
||||
|
||||
@@ -104,7 +104,7 @@ func TestCheckpoint(t *testing.T) {
|
||||
})
|
||||
assert.NilError(t, err)
|
||||
|
||||
poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "exited"))
|
||||
poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, containertypes.StateExited))
|
||||
|
||||
inspect, err = apiClient.ContainerInspect(ctx, cID)
|
||||
assert.NilError(t, err)
|
||||
|
||||
@@ -339,7 +339,7 @@ func TestCreateWithCustomMaskedPaths(t *testing.T) {
|
||||
err = apiClient.ContainerStart(ctx, c.ID, container.StartOptions{})
|
||||
assert.NilError(t, err)
|
||||
|
||||
poll.WaitOn(t, testContainer.IsInState(ctx, apiClient, c.ID, "exited"))
|
||||
poll.WaitOn(t, testContainer.IsInState(ctx, apiClient, c.ID, container.StateExited))
|
||||
|
||||
checkInspect(t, ctx, name, tc.expected)
|
||||
}
|
||||
@@ -417,7 +417,7 @@ func TestCreateWithCustomReadonlyPaths(t *testing.T) {
|
||||
err = apiClient.ContainerStart(ctx, c.ID, container.StartOptions{})
|
||||
assert.NilError(t, err)
|
||||
|
||||
poll.WaitOn(t, testContainer.IsInState(ctx, apiClient, c.ID, "exited"))
|
||||
poll.WaitOn(t, testContainer.IsInState(ctx, apiClient, c.ID, container.StateExited))
|
||||
|
||||
checkInspect(t, ctx, name, tc.expected)
|
||||
}
|
||||
|
||||
@@ -269,7 +269,7 @@ func TestHardRestartWhenContainerIsRunning(t *testing.T) {
|
||||
defer cancel()
|
||||
inspect, err := apiClient.ContainerInspect(ctx, noPolicy)
|
||||
assert.NilError(t, err)
|
||||
assert.Check(t, is.Equal(inspect.State.Status, "exited"))
|
||||
assert.Check(t, is.Equal(inspect.State.Status, containertypes.StateExited))
|
||||
assert.Check(t, is.Equal(inspect.State.ExitCode, 255))
|
||||
finishedAt, err := time.Parse(time.RFC3339Nano, inspect.State.FinishedAt)
|
||||
if assert.Check(t, err) {
|
||||
@@ -283,7 +283,7 @@ func TestHardRestartWhenContainerIsRunning(t *testing.T) {
|
||||
defer cancel()
|
||||
inspect, err := apiClient.ContainerInspect(ctx, onFailure)
|
||||
assert.NilError(t, err)
|
||||
assert.Check(t, is.Equal(inspect.State.Status, "running"))
|
||||
assert.Check(t, is.Equal(inspect.State.Status, containertypes.StateRunning))
|
||||
assert.Check(t, is.Equal(inspect.State.ExitCode, 0))
|
||||
finishedAt, err := time.Parse(time.RFC3339Nano, inspect.State.FinishedAt)
|
||||
if assert.Check(t, err) {
|
||||
|
||||
@@ -38,7 +38,7 @@ func TestDiffStoppedContainer(t *testing.T) {
|
||||
|
||||
cID := container.Run(ctx, t, apiClient, container.WithCmd("sh", "-c", `mkdir /foo; echo xyzzy > /foo/bar`))
|
||||
|
||||
poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "exited"), poll.WithTimeout(60*time.Second))
|
||||
poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, containertypes.StateExited), poll.WithTimeout(60*time.Second))
|
||||
|
||||
expected := []containertypes.FilesystemChange{
|
||||
{Kind: containertypes.ChangeAdd, Path: "/foo"},
|
||||
|
||||
@@ -22,12 +22,12 @@ func TestKillContainerInvalidSignal(t *testing.T) {
|
||||
err := apiClient.ContainerKill(ctx, id, "0")
|
||||
assert.ErrorContains(t, err, "Error response from daemon:")
|
||||
assert.ErrorContains(t, err, "nvalid signal: 0") // match "(I|i)nvalid" case-insensitive to allow testing against older daemons.
|
||||
poll.WaitOn(t, container.IsInState(ctx, apiClient, id, "running"))
|
||||
poll.WaitOn(t, container.IsInState(ctx, apiClient, id, containertypes.StateRunning))
|
||||
|
||||
err = apiClient.ContainerKill(ctx, id, "SIG42")
|
||||
assert.ErrorContains(t, err, "Error response from daemon:")
|
||||
assert.ErrorContains(t, err, "nvalid signal: SIG42") // match "(I|i)nvalid" case-insensitive to allow testing against older daemons.
|
||||
poll.WaitOn(t, container.IsInState(ctx, apiClient, id, "running"))
|
||||
poll.WaitOn(t, container.IsInState(ctx, apiClient, id, containertypes.StateRunning))
|
||||
}
|
||||
|
||||
func TestKillContainer(t *testing.T) {
|
||||
@@ -37,25 +37,25 @@ func TestKillContainer(t *testing.T) {
|
||||
testCases := []struct {
|
||||
doc string
|
||||
signal string
|
||||
status string
|
||||
status containertypes.ContainerState
|
||||
skipOs string
|
||||
}{
|
||||
{
|
||||
doc: "no signal",
|
||||
signal: "",
|
||||
status: "exited",
|
||||
status: containertypes.StateExited,
|
||||
skipOs: "",
|
||||
},
|
||||
{
|
||||
doc: "non killing signal",
|
||||
signal: "SIGWINCH",
|
||||
status: "running",
|
||||
status: containertypes.StateRunning,
|
||||
skipOs: "windows",
|
||||
},
|
||||
{
|
||||
doc: "killing signal",
|
||||
signal: "SIGTERM",
|
||||
status: "exited",
|
||||
status: containertypes.StateExited,
|
||||
skipOs: "",
|
||||
},
|
||||
}
|
||||
@@ -142,7 +142,7 @@ func TestKillDifferentUserContainer(t *testing.T) {
|
||||
|
||||
err := apiClient.ContainerKill(ctx, id, "SIGKILL")
|
||||
assert.NilError(t, err)
|
||||
poll.WaitOn(t, container.IsInState(ctx, apiClient, id, "exited"))
|
||||
poll.WaitOn(t, container.IsInState(ctx, apiClient, id, containertypes.StateExited))
|
||||
}
|
||||
|
||||
func TestInspectOomKilledTrue(t *testing.T) {
|
||||
@@ -158,7 +158,7 @@ func TestInspectOomKilledTrue(t *testing.T) {
|
||||
c.HostConfig.Resources.Memory = 32 * 1024 * 1024
|
||||
})
|
||||
|
||||
poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "exited"))
|
||||
poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, containertypes.StateExited))
|
||||
|
||||
inspect, err := apiClient.ContainerInspect(ctx, cID)
|
||||
assert.NilError(t, err)
|
||||
@@ -173,7 +173,7 @@ func TestInspectOomKilledFalse(t *testing.T) {
|
||||
|
||||
cID := container.Run(ctx, t, apiClient, container.WithCmd("sh", "-c", "echo hello world"))
|
||||
|
||||
poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "exited"))
|
||||
poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, containertypes.StateExited))
|
||||
|
||||
inspect, err := apiClient.ContainerInspect(ctx, cID)
|
||||
assert.NilError(t, err)
|
||||
|
||||
@@ -35,7 +35,7 @@ func TestRemoveContainerWithRemovedVolume(t *testing.T) {
|
||||
tempDir := fs.NewDir(t, "test-rm-container-with-removed-volume", fs.WithMode(0o755))
|
||||
|
||||
cID := container.Run(ctx, t, apiClient, container.WithCmd("true"), container.WithBind(tempDir.Path(), prefix+slash+"test"))
|
||||
poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "exited"))
|
||||
poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, containertypes.StateExited))
|
||||
|
||||
err := os.RemoveAll(tempDir.Path())
|
||||
assert.NilError(t, err)
|
||||
@@ -58,7 +58,7 @@ func TestRemoveContainerWithVolume(t *testing.T) {
|
||||
prefix, slash := getPrefixAndSlashFromDaemonPlatform()
|
||||
|
||||
cID := container.Run(ctx, t, apiClient, container.WithCmd("true"), container.WithVolume(prefix+slash+"srv"))
|
||||
poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "exited"))
|
||||
poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, containertypes.StateExited))
|
||||
|
||||
insp, _, err := apiClient.ContainerInspectWithRaw(ctx, cID, true)
|
||||
assert.NilError(t, err)
|
||||
|
||||
@@ -144,7 +144,7 @@ func TestRenameAnonymousContainer(t *testing.T) {
|
||||
}
|
||||
c.HostConfig.NetworkMode = containertypes.NetworkMode(networkName)
|
||||
}, container.WithCmd("ping", count, "1", container1Name))
|
||||
poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "exited"))
|
||||
poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, containertypes.StateExited))
|
||||
|
||||
inspect, err := apiClient.ContainerInspect(ctx, cID)
|
||||
assert.NilError(t, err)
|
||||
|
||||
@@ -202,9 +202,9 @@ func TestContainerWithAutoRemoveCanBeRestarted(t *testing.T) {
|
||||
|
||||
inspect, err := apiClient.ContainerInspect(ctx, cID)
|
||||
assert.NilError(t, err)
|
||||
assert.Assert(t, inspect.State.Status != "removing", "Container should not be removing yet")
|
||||
assert.Assert(t, inspect.State.Status != container.StateRemoving, "Container should not be removing yet")
|
||||
|
||||
poll.WaitOn(t, testContainer.IsInState(ctx, apiClient, cID, "running"))
|
||||
poll.WaitOn(t, testContainer.IsInState(ctx, apiClient, cID, container.StateRunning))
|
||||
|
||||
err = tc.doSth(ctx, cID)
|
||||
assert.NilError(t, err)
|
||||
@@ -281,5 +281,5 @@ func TestContainerRestartWithCancelledRequest(t *testing.T) {
|
||||
// Container should be restarted (running).
|
||||
inspect, err := apiClient.ContainerInspect(ctx, cID)
|
||||
assert.NilError(t, err)
|
||||
assert.Check(t, is.Equal(inspect.State.Status, "running"))
|
||||
assert.Check(t, is.Equal(inspect.State.Status, container.StateRunning))
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ func TestStopContainerWithRestartPolicyAlways(t *testing.T) {
|
||||
}
|
||||
|
||||
for _, name := range names {
|
||||
poll.WaitOn(t, container.IsInState(ctx, apiClient, name, "running", "restarting"))
|
||||
poll.WaitOn(t, container.IsInState(ctx, apiClient, name, containertypes.StateRunning, containertypes.StateRestarting))
|
||||
}
|
||||
|
||||
for _, name := range names {
|
||||
|
||||
@@ -36,7 +36,7 @@ func TestUpdateRestartPolicy(t *testing.T) {
|
||||
timeout = 180 * time.Second
|
||||
}
|
||||
|
||||
poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "exited"), poll.WithTimeout(timeout))
|
||||
poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, containertypes.StateExited), poll.WithTimeout(timeout))
|
||||
|
||||
inspect, err := apiClient.ContainerInspect(ctx, cID)
|
||||
assert.NilError(t, err)
|
||||
|
||||
@@ -42,7 +42,7 @@ func TestWaitNonBlocked(t *testing.T) {
|
||||
|
||||
ctx := testutil.StartSpan(ctx, t)
|
||||
containerID := container.Run(ctx, t, cli, container.WithCmd("sh", "-c", tc.cmd))
|
||||
poll.WaitOn(t, container.IsInState(ctx, cli, containerID, "exited"), poll.WithTimeout(30*time.Second))
|
||||
poll.WaitOn(t, container.IsInState(ctx, cli, containerID, containertypes.StateExited), poll.WithTimeout(30*time.Second))
|
||||
|
||||
waitResC, errC := cli.ContainerWait(ctx, containerID, "")
|
||||
select {
|
||||
@@ -158,7 +158,7 @@ func TestWaitConditions(t *testing.T) {
|
||||
}
|
||||
|
||||
info, _ := cli.ContainerInspect(ctx, containerID)
|
||||
assert.Equal(t, "running", info.State.Status)
|
||||
assert.Equal(t, info.State.Status, containertypes.StateRunning)
|
||||
|
||||
_, err = streams.Conn.Write([]byte("\n"))
|
||||
assert.NilError(t, err)
|
||||
@@ -169,8 +169,8 @@ func TestWaitConditions(t *testing.T) {
|
||||
case waitRes := <-waitResC:
|
||||
assert.Check(t, is.Equal(int64(99), waitRes.StatusCode))
|
||||
case <-time.After(StopContainerWindowsPollTimeout):
|
||||
info, _ := cli.ContainerInspect(ctx, containerID)
|
||||
t.Fatalf("Timed out waiting for container exit code (status = %q)", info.State.Status)
|
||||
ctr, _ := cli.ContainerInspect(ctx, containerID)
|
||||
t.Fatalf("Timed out waiting for container exit code (status = %q)", ctr.State.Status)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"strings"
|
||||
|
||||
"github.com/docker/docker/api/types/container"
|
||||
"github.com/docker/docker/client"
|
||||
"github.com/docker/docker/errdefs"
|
||||
"github.com/pkg/errors"
|
||||
@@ -32,7 +33,7 @@ func IsStopped(ctx context.Context, apiClient client.APIClient, containerID stri
|
||||
}
|
||||
|
||||
// IsInState verifies the container is in one of the specified state, e.g., "running", "exited", etc.
|
||||
func IsInState(ctx context.Context, apiClient client.APIClient, containerID string, state ...string) func(log poll.LogT) poll.Result {
|
||||
func IsInState(ctx context.Context, apiClient client.APIClient, containerID string, state ...container.ContainerState) func(log poll.LogT) poll.Result {
|
||||
return func(log poll.LogT) poll.Result {
|
||||
inspect, err := apiClient.ContainerInspect(ctx, containerID)
|
||||
if err != nil {
|
||||
@@ -58,13 +59,13 @@ func IsSuccessful(ctx context.Context, apiClient client.APIClient, containerID s
|
||||
if err != nil {
|
||||
return poll.Error(err)
|
||||
}
|
||||
if inspect.State.Status == "exited" {
|
||||
if inspect.State.Status == container.StateExited {
|
||||
if inspect.State.ExitCode == 0 {
|
||||
return poll.Success()
|
||||
}
|
||||
return poll.Error(errors.Errorf("expected exit code 0, got %d", inspect.State.ExitCode))
|
||||
}
|
||||
return poll.Continue("waiting for container to be \"exited\", currently %s", inspect.State.Status)
|
||||
return poll.Continue("waiting for container to be %q, currently %s", container.StateExited, inspect.State.Status)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -520,7 +520,7 @@ func TestPublishedPortAlreadyInUse(t *testing.T) {
|
||||
|
||||
inspect, err := apiClient.ContainerInspect(ctx, ctr2)
|
||||
assert.NilError(t, err)
|
||||
assert.Check(t, is.Equal(inspect.State.Status, "created"))
|
||||
assert.Check(t, is.Equal(inspect.State.Status, containertypes.StateCreated))
|
||||
}
|
||||
|
||||
// TestAllPortMappingsAreReturned check that dual-stack ports mapped through
|
||||
|
||||
Reference in New Issue
Block a user