This fix moves helper functions containerIsStopped and
containerIsInState to integration/internal/container,
so that they could be used outside of integration/container.
Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
| ... | ... |
@@ -29,7 +29,7 @@ func TestDiffFilenameShownInOutput(t *testing.T) {
|
| 29 | 29 |
// a "Files/" prefix. |
| 30 | 30 |
lookingFor := containertypes.ContainerChangeResponseItem{Kind: archive.ChangeAdd, Path: "/foo/bar"}
|
| 31 | 31 |
if testEnv.OSType == "windows" {
|
| 32 |
- poll.WaitOn(t, containerIsInState(ctx, client, cID, "exited"), poll.WithDelay(100*time.Millisecond), poll.WithTimeout(60*time.Second)) |
|
| 32 |
+ poll.WaitOn(t, container.IsInState(ctx, client, cID, "exited"), poll.WithDelay(100*time.Millisecond), poll.WithTimeout(60*time.Second)) |
|
| 33 | 33 |
lookingFor = containertypes.ContainerChangeResponseItem{Kind: archive.ChangeModify, Path: "Files/foo/bar"}
|
| 34 | 34 |
} |
| 35 | 35 |
|
| ... | ... |
@@ -30,7 +30,7 @@ func TestInspectCpusetInConfigPre120(t *testing.T) {
|
| 30 | 30 |
c.HostConfig.Resources.CpusetCpus = "0" |
| 31 | 31 |
}, |
| 32 | 32 |
) |
| 33 |
- poll.WaitOn(t, containerIsInState(ctx, client, name, "exited"), poll.WithDelay(100*time.Millisecond)) |
|
| 33 |
+ poll.WaitOn(t, container.IsInState(ctx, client, name, "exited"), poll.WithDelay(100*time.Millisecond)) |
|
| 34 | 34 |
|
| 35 | 35 |
_, body, err := client.ContainerInspectWithRaw(ctx, name, false) |
| 36 | 36 |
require.NoError(t, err) |
| ... | ... |
@@ -23,11 +23,11 @@ func TestKillContainerInvalidSignal(t *testing.T) {
|
| 23 | 23 |
|
| 24 | 24 |
err := client.ContainerKill(ctx, id, "0") |
| 25 | 25 |
require.EqualError(t, err, "Error response from daemon: Invalid signal: 0") |
| 26 |
- poll.WaitOn(t, containerIsInState(ctx, client, id, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 26 |
+ poll.WaitOn(t, container.IsInState(ctx, client, id, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 27 | 27 |
|
| 28 | 28 |
err = client.ContainerKill(ctx, id, "SIG42") |
| 29 | 29 |
require.EqualError(t, err, "Error response from daemon: Invalid signal: SIG42") |
| 30 |
- poll.WaitOn(t, containerIsInState(ctx, client, id, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 30 |
+ poll.WaitOn(t, container.IsInState(ctx, client, id, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 31 | 31 |
} |
| 32 | 32 |
|
| 33 | 33 |
func TestKillContainer(t *testing.T) {
|
| ... | ... |
@@ -64,7 +64,7 @@ func TestKillContainer(t *testing.T) {
|
| 64 | 64 |
err := client.ContainerKill(ctx, id, tc.signal) |
| 65 | 65 |
require.NoError(t, err) |
| 66 | 66 |
|
| 67 |
- poll.WaitOn(t, containerIsInState(ctx, client, id, tc.status), poll.WithDelay(100*time.Millisecond)) |
|
| 67 |
+ poll.WaitOn(t, container.IsInState(ctx, client, id, tc.status), poll.WithDelay(100*time.Millisecond)) |
|
| 68 | 68 |
}) |
| 69 | 69 |
} |
| 70 | 70 |
} |
| ... | ... |
@@ -104,7 +104,7 @@ func TestKillWithStopSignalAndRestartPolicies(t *testing.T) {
|
| 104 | 104 |
err := client.ContainerKill(ctx, id, "TERM") |
| 105 | 105 |
require.NoError(t, err) |
| 106 | 106 |
|
| 107 |
- poll.WaitOn(t, containerIsInState(ctx, client, id, tc.status), poll.WithDelay(100*time.Millisecond)) |
|
| 107 |
+ poll.WaitOn(t, container.IsInState(ctx, client, id, tc.status), poll.WithDelay(100*time.Millisecond)) |
|
| 108 | 108 |
}) |
| 109 | 109 |
} |
| 110 | 110 |
} |
| ... | ... |
@@ -141,11 +141,11 @@ func TestKillDifferentUserContainer(t *testing.T) {
|
| 141 | 141 |
id := container.Run(t, ctx, client, func(c *container.TestContainerConfig) {
|
| 142 | 142 |
c.Config.User = "daemon" |
| 143 | 143 |
}) |
| 144 |
- poll.WaitOn(t, containerIsInState(ctx, client, id, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 144 |
+ poll.WaitOn(t, container.IsInState(ctx, client, id, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 145 | 145 |
|
| 146 | 146 |
err := client.ContainerKill(ctx, id, "SIGKILL") |
| 147 | 147 |
require.NoError(t, err) |
| 148 |
- poll.WaitOn(t, containerIsInState(ctx, client, id, "exited"), poll.WithDelay(100*time.Millisecond)) |
|
| 148 |
+ poll.WaitOn(t, container.IsInState(ctx, client, id, "exited"), poll.WithDelay(100*time.Millisecond)) |
|
| 149 | 149 |
} |
| 150 | 150 |
|
| 151 | 151 |
func TestInspectOomKilledTrue(t *testing.T) {
|
| ... | ... |
@@ -160,7 +160,7 @@ func TestInspectOomKilledTrue(t *testing.T) {
|
| 160 | 160 |
c.HostConfig.Resources.Memory = 32 * 1024 * 1024 |
| 161 | 161 |
}) |
| 162 | 162 |
|
| 163 |
- poll.WaitOn(t, containerIsInState(ctx, client, cID, "exited"), poll.WithDelay(100*time.Millisecond)) |
|
| 163 |
+ poll.WaitOn(t, container.IsInState(ctx, client, cID, "exited"), poll.WithDelay(100*time.Millisecond)) |
|
| 164 | 164 |
|
| 165 | 165 |
inspect, err := client.ContainerInspect(ctx, cID) |
| 166 | 166 |
require.NoError(t, err) |
| ... | ... |
@@ -177,7 +177,7 @@ func TestInspectOomKilledFalse(t *testing.T) {
|
| 177 | 177 |
name := "testoomkilled" |
| 178 | 178 |
cID := container.Run(t, ctx, client, container.WithName(name), container.WithCmd("sh", "-c", "echo hello world"))
|
| 179 | 179 |
|
| 180 |
- poll.WaitOn(t, containerIsInState(ctx, client, cID, "exited"), poll.WithDelay(100*time.Millisecond)) |
|
| 180 |
+ poll.WaitOn(t, container.IsInState(ctx, client, cID, "exited"), poll.WithDelay(100*time.Millisecond)) |
|
| 181 | 181 |
|
| 182 | 182 |
inspect, err := client.ContainerInspect(ctx, cID) |
| 183 | 183 |
require.NoError(t, err) |
| ... | ... |
@@ -31,7 +31,7 @@ func TestLinksEtcHostsContentMatch(t *testing.T) {
|
| 31 | 31 |
|
| 32 | 32 |
cID := container.Run(t, ctx, client, container.WithCmd("cat", "/etc/hosts"), container.WithNetworkMode("host"))
|
| 33 | 33 |
|
| 34 |
- poll.WaitOn(t, containerIsStopped(ctx, client, cID), poll.WithDelay(100*time.Millisecond)) |
|
| 34 |
+ poll.WaitOn(t, container.IsStopped(ctx, client, cID), poll.WithDelay(100*time.Millisecond)) |
|
| 35 | 35 |
|
| 36 | 36 |
body, err := client.ContainerLogs(ctx, cID, types.ContainerLogsOptions{
|
| 37 | 37 |
ShowStdout: true, |
| ... | ... |
@@ -69,7 +69,7 @@ func TestNetworkLoopbackNat(t *testing.T) {
|
| 69 | 69 |
|
| 70 | 70 |
cID := container.Run(t, ctx, client, container.WithCmd("sh", "-c", fmt.Sprintf("stty raw && nc -w 5 %s 8080", endpoint.String())), container.WithTty(true), container.WithNetworkMode("container:server"))
|
| 71 | 71 |
|
| 72 |
- poll.WaitOn(t, containerIsStopped(ctx, client, cID), poll.WithDelay(100*time.Millisecond)) |
|
| 72 |
+ poll.WaitOn(t, container.IsStopped(ctx, client, cID), poll.WithDelay(100*time.Millisecond)) |
|
| 73 | 73 |
|
| 74 | 74 |
body, err := client.ContainerLogs(ctx, cID, types.ContainerLogsOptions{
|
| 75 | 75 |
ShowStdout: true, |
| ... | ... |
@@ -98,7 +98,7 @@ func startServerContainer(t *testing.T, msg string, port int) string {
|
| 98 | 98 |
} |
| 99 | 99 |
}) |
| 100 | 100 |
|
| 101 |
- poll.WaitOn(t, containerIsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 101 |
+ poll.WaitOn(t, container.IsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 102 | 102 |
|
| 103 | 103 |
return cID |
| 104 | 104 |
} |
| ... | ... |
@@ -27,7 +27,7 @@ func TestPause(t *testing.T) {
|
| 27 | 27 |
|
| 28 | 28 |
name := "testeventpause" |
| 29 | 29 |
cID := container.Run(t, ctx, client, container.WithName(name)) |
| 30 |
- poll.WaitOn(t, containerIsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 30 |
+ poll.WaitOn(t, container.IsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 31 | 31 |
|
| 32 | 32 |
since := request.DaemonUnixTime(ctx, t, client, testEnv) |
| 33 | 33 |
|
| ... | ... |
@@ -59,7 +59,7 @@ func TestPauseFailsOnWindowsServerContainers(t *testing.T) {
|
| 59 | 59 |
ctx := context.Background() |
| 60 | 60 |
|
| 61 | 61 |
cID := container.Run(t, ctx, client) |
| 62 |
- poll.WaitOn(t, containerIsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 62 |
+ poll.WaitOn(t, container.IsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 63 | 63 |
|
| 64 | 64 |
err := client.ContainerPause(ctx, cID) |
| 65 | 65 |
testutil.ErrorContains(t, err, "cannot pause Windows Server Containers") |
| ... | ... |
@@ -73,7 +73,7 @@ func TestPauseStopPausedContainer(t *testing.T) {
|
| 73 | 73 |
ctx := context.Background() |
| 74 | 74 |
|
| 75 | 75 |
cID := container.Run(t, ctx, client) |
| 76 |
- poll.WaitOn(t, containerIsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 76 |
+ poll.WaitOn(t, container.IsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 77 | 77 |
|
| 78 | 78 |
err := client.ContainerPause(ctx, cID) |
| 79 | 79 |
require.NoError(t, err) |
| ... | ... |
@@ -81,7 +81,7 @@ func TestPauseStopPausedContainer(t *testing.T) {
|
| 81 | 81 |
err = client.ContainerStop(ctx, cID, nil) |
| 82 | 82 |
require.NoError(t, err) |
| 83 | 83 |
|
| 84 |
- poll.WaitOn(t, containerIsStopped(ctx, client, cID), poll.WithDelay(100*time.Millisecond)) |
|
| 84 |
+ poll.WaitOn(t, container.IsStopped(ctx, client, cID), poll.WithDelay(100*time.Millisecond)) |
|
| 85 | 85 |
} |
| 86 | 86 |
|
| 87 | 87 |
func getEventActions(t *testing.T, messages <-chan events.Message, errs <-chan error) []string {
|
| ... | ... |
@@ -51,7 +51,7 @@ func TestRenameStoppedContainer(t *testing.T) {
|
| 51 | 51 |
|
| 52 | 52 |
oldName := "first_name" |
| 53 | 53 |
cID := container.Run(t, ctx, client, container.WithName(oldName), container.WithCmd("sh"))
|
| 54 |
- poll.WaitOn(t, containerIsInState(ctx, client, cID, "exited"), poll.WithDelay(100*time.Millisecond)) |
|
| 54 |
+ poll.WaitOn(t, container.IsInState(ctx, client, cID, "exited"), poll.WithDelay(100*time.Millisecond)) |
|
| 55 | 55 |
|
| 56 | 56 |
inspect, err := client.ContainerInspect(ctx, cID) |
| 57 | 57 |
require.NoError(t, err) |
| ... | ... |
@@ -73,7 +73,7 @@ func TestRenameRunningContainerAndReuse(t *testing.T) {
|
| 73 | 73 |
|
| 74 | 74 |
oldName := "first_name" |
| 75 | 75 |
cID := container.Run(t, ctx, client, container.WithName(oldName)) |
| 76 |
- poll.WaitOn(t, containerIsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 76 |
+ poll.WaitOn(t, container.IsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 77 | 77 |
|
| 78 | 78 |
newName := "new_name" + stringid.GenerateNonCryptoID() |
| 79 | 79 |
err := client.ContainerRename(ctx, oldName, newName) |
| ... | ... |
@@ -87,7 +87,7 @@ func TestRenameRunningContainerAndReuse(t *testing.T) {
|
| 87 | 87 |
testutil.ErrorContains(t, err, "No such container: "+oldName) |
| 88 | 88 |
|
| 89 | 89 |
cID = container.Run(t, ctx, client, container.WithName(oldName)) |
| 90 |
- poll.WaitOn(t, containerIsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 90 |
+ poll.WaitOn(t, container.IsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 91 | 91 |
|
| 92 | 92 |
inspect, err = client.ContainerInspect(ctx, cID) |
| 93 | 93 |
require.NoError(t, err) |
| ... | ... |
@@ -101,7 +101,7 @@ func TestRenameInvalidName(t *testing.T) {
|
| 101 | 101 |
|
| 102 | 102 |
oldName := "first_name" |
| 103 | 103 |
cID := container.Run(t, ctx, client, container.WithName(oldName)) |
| 104 |
- poll.WaitOn(t, containerIsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 104 |
+ poll.WaitOn(t, container.IsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 105 | 105 |
|
| 106 | 106 |
err := client.ContainerRename(ctx, oldName, "new:invalid") |
| 107 | 107 |
testutil.ErrorContains(t, err, "Invalid container name") |
| ... | ... |
@@ -136,7 +136,7 @@ func TestRenameAnonymousContainer(t *testing.T) {
|
| 136 | 136 |
err = client.ContainerStart(ctx, "container1", types.ContainerStartOptions{})
|
| 137 | 137 |
require.NoError(t, err) |
| 138 | 138 |
|
| 139 |
- poll.WaitOn(t, containerIsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 139 |
+ poll.WaitOn(t, container.IsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 140 | 140 |
|
| 141 | 141 |
count := "-c" |
| 142 | 142 |
if testEnv.OSType == "windows" {
|
| ... | ... |
@@ -148,7 +148,7 @@ func TestRenameAnonymousContainer(t *testing.T) {
|
| 148 | 148 |
} |
| 149 | 149 |
c.HostConfig.NetworkMode = "network1" |
| 150 | 150 |
}, container.WithCmd("ping", count, "1", "container1"))
|
| 151 |
- poll.WaitOn(t, containerIsInState(ctx, client, cID, "exited"), poll.WithDelay(100*time.Millisecond)) |
|
| 151 |
+ poll.WaitOn(t, container.IsInState(ctx, client, cID, "exited"), poll.WithDelay(100*time.Millisecond)) |
|
| 152 | 152 |
|
| 153 | 153 |
inspect, err := client.ContainerInspect(ctx, cID) |
| 154 | 154 |
require.NoError(t, err) |
| ... | ... |
@@ -162,7 +162,7 @@ func TestRenameContainerWithSameName(t *testing.T) {
|
| 162 | 162 |
client := request.NewAPIClient(t) |
| 163 | 163 |
|
| 164 | 164 |
cID := container.Run(t, ctx, client, container.WithName("old"))
|
| 165 |
- poll.WaitOn(t, containerIsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 165 |
+ poll.WaitOn(t, container.IsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 166 | 166 |
err := client.ContainerRename(ctx, "old", "old") |
| 167 | 167 |
testutil.ErrorContains(t, err, "Renaming a container with the same name") |
| 168 | 168 |
err = client.ContainerRename(ctx, cID, "old") |
| ... | ... |
@@ -182,10 +182,10 @@ func TestRenameContainerWithLinkedContainer(t *testing.T) {
|
| 182 | 182 |
client := request.NewAPIClient(t) |
| 183 | 183 |
|
| 184 | 184 |
db1ID := container.Run(t, ctx, client, container.WithName("db1"))
|
| 185 |
- poll.WaitOn(t, containerIsInState(ctx, client, db1ID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 185 |
+ poll.WaitOn(t, container.IsInState(ctx, client, db1ID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 186 | 186 |
|
| 187 | 187 |
app1ID := container.Run(t, ctx, client, container.WithName("app1"), container.WithLinks("db1:/mysql"))
|
| 188 |
- poll.WaitOn(t, containerIsInState(ctx, client, app1ID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 188 |
+ poll.WaitOn(t, container.IsInState(ctx, client, app1ID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 189 | 189 |
|
| 190 | 190 |
err := client.ContainerRename(ctx, "app1", "app2") |
| 191 | 191 |
require.NoError(t, err) |
| ... | ... |
@@ -23,7 +23,7 @@ func TestResize(t *testing.T) {
|
| 23 | 23 |
|
| 24 | 24 |
cID := container.Run(t, ctx, client) |
| 25 | 25 |
|
| 26 |
- poll.WaitOn(t, containerIsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 26 |
+ poll.WaitOn(t, container.IsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 27 | 27 |
|
| 28 | 28 |
err := client.ContainerResize(ctx, cID, types.ResizeOptions{
|
| 29 | 29 |
Height: 40, |
| ... | ... |
@@ -39,7 +39,7 @@ func TestResizeWithInvalidSize(t *testing.T) {
|
| 39 | 39 |
|
| 40 | 40 |
cID := container.Run(t, ctx, client) |
| 41 | 41 |
|
| 42 |
- poll.WaitOn(t, containerIsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 42 |
+ poll.WaitOn(t, container.IsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 43 | 43 |
|
| 44 | 44 |
endpoint := "/containers/" + cID + "/resize?h=foo&w=bar" |
| 45 | 45 |
res, _, err := req.Post(endpoint) |
| ... | ... |
@@ -54,7 +54,7 @@ func TestResizeWhenContainerNotStarted(t *testing.T) {
|
| 54 | 54 |
|
| 55 | 55 |
cID := container.Run(t, ctx, client, container.WithCmd("echo"))
|
| 56 | 56 |
|
| 57 |
- poll.WaitOn(t, containerIsInState(ctx, client, cID, "exited"), poll.WithDelay(100*time.Millisecond)) |
|
| 57 |
+ poll.WaitOn(t, container.IsInState(ctx, client, cID, "exited"), poll.WithDelay(100*time.Millisecond)) |
|
| 58 | 58 |
|
| 59 | 59 |
err := client.ContainerResize(ctx, cID, types.ResizeOptions{
|
| 60 | 60 |
Height: 40, |
| ... | ... |
@@ -28,7 +28,7 @@ func TestStats(t *testing.T) {
|
| 28 | 28 |
|
| 29 | 29 |
cID := container.Run(t, ctx, client) |
| 30 | 30 |
|
| 31 |
- poll.WaitOn(t, containerIsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 31 |
+ poll.WaitOn(t, container.IsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 32 | 32 |
|
| 33 | 33 |
resp, err := client.ContainerStats(ctx, cID, false) |
| 34 | 34 |
require.NoError(t, err) |
| ... | ... |
@@ -8,7 +8,6 @@ import ( |
| 8 | 8 |
"time" |
| 9 | 9 |
|
| 10 | 10 |
"github.com/docker/docker/api/types" |
| 11 |
- "github.com/docker/docker/client" |
|
| 12 | 11 |
"github.com/docker/docker/integration/internal/container" |
| 13 | 12 |
"github.com/docker/docker/integration/internal/request" |
| 14 | 13 |
"github.com/gotestyourself/gotestyourself/icmd" |
| ... | ... |
@@ -30,7 +29,7 @@ func TestStopContainerWithRestartPolicyAlways(t *testing.T) {
|
| 30 | 30 |
} |
| 31 | 31 |
|
| 32 | 32 |
for _, name := range names {
|
| 33 |
- poll.WaitOn(t, containerIsInState(ctx, client, name, "running", "restarting"), poll.WithDelay(100*time.Millisecond)) |
|
| 33 |
+ poll.WaitOn(t, container.IsInState(ctx, client, name, "running", "restarting"), poll.WithDelay(100*time.Millisecond)) |
|
| 34 | 34 |
} |
| 35 | 35 |
|
| 36 | 36 |
for _, name := range names {
|
| ... | ... |
@@ -39,7 +38,7 @@ func TestStopContainerWithRestartPolicyAlways(t *testing.T) {
|
| 39 | 39 |
} |
| 40 | 40 |
|
| 41 | 41 |
for _, name := range names {
|
| 42 |
- poll.WaitOn(t, containerIsStopped(ctx, client, name), poll.WithDelay(100*time.Millisecond)) |
|
| 42 |
+ poll.WaitOn(t, container.IsStopped(ctx, client, name), poll.WithDelay(100*time.Millisecond)) |
|
| 43 | 43 |
} |
| 44 | 44 |
} |
| 45 | 45 |
|
| ... | ... |
@@ -52,7 +51,7 @@ func TestDeleteDevicemapper(t *testing.T) {
|
| 52 | 52 |
|
| 53 | 53 |
id := container.Run(t, ctx, client, container.WithName("foo"), container.WithCmd("echo"))
|
| 54 | 54 |
|
| 55 |
- poll.WaitOn(t, containerIsStopped(ctx, client, id), poll.WithDelay(100*time.Millisecond)) |
|
| 55 |
+ poll.WaitOn(t, container.IsStopped(ctx, client, id), poll.WithDelay(100*time.Millisecond)) |
|
| 56 | 56 |
|
| 57 | 57 |
inspect, err := client.ContainerInspect(ctx, id) |
| 58 | 58 |
require.NoError(t, err) |
| ... | ... |
@@ -70,33 +69,3 @@ func TestDeleteDevicemapper(t *testing.T) {
|
| 70 | 70 |
err = client.ContainerRemove(ctx, id, types.ContainerRemoveOptions{})
|
| 71 | 71 |
require.NoError(t, err) |
| 72 | 72 |
} |
| 73 |
- |
|
| 74 |
-func containerIsStopped(ctx context.Context, client client.APIClient, containerID string) func(log poll.LogT) poll.Result {
|
|
| 75 |
- return func(log poll.LogT) poll.Result {
|
|
| 76 |
- inspect, err := client.ContainerInspect(ctx, containerID) |
|
| 77 |
- |
|
| 78 |
- switch {
|
|
| 79 |
- case err != nil: |
|
| 80 |
- return poll.Error(err) |
|
| 81 |
- case !inspect.State.Running: |
|
| 82 |
- return poll.Success() |
|
| 83 |
- default: |
|
| 84 |
- return poll.Continue("waiting for container to be stopped")
|
|
| 85 |
- } |
|
| 86 |
- } |
|
| 87 |
-} |
|
| 88 |
- |
|
| 89 |
-func containerIsInState(ctx context.Context, client client.APIClient, containerID string, state ...string) func(log poll.LogT) poll.Result {
|
|
| 90 |
- return func(log poll.LogT) poll.Result {
|
|
| 91 |
- inspect, err := client.ContainerInspect(ctx, containerID) |
|
| 92 |
- if err != nil {
|
|
| 93 |
- return poll.Error(err) |
|
| 94 |
- } |
|
| 95 |
- for _, v := range state {
|
|
| 96 |
- if inspect.State.Status == v {
|
|
| 97 |
- return poll.Success() |
|
| 98 |
- } |
|
| 99 |
- } |
|
| 100 |
- return poll.Continue("waiting for container to be running, currently %s", inspect.State.Status)
|
|
| 101 |
- } |
|
| 102 |
-} |
| ... | ... |
@@ -31,7 +31,7 @@ func TestUpdateMemory(t *testing.T) {
|
| 31 | 31 |
} |
| 32 | 32 |
}) |
| 33 | 33 |
|
| 34 |
- poll.WaitOn(t, containerIsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 34 |
+ poll.WaitOn(t, container.IsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 35 | 35 |
|
| 36 | 36 |
const ( |
| 37 | 37 |
setMemory int64 = 314572800 |
| ... | ... |
@@ -39,7 +39,7 @@ func TestUpdateRestartPolicy(t *testing.T) {
|
| 39 | 39 |
timeout = 180 * time.Second |
| 40 | 40 |
} |
| 41 | 41 |
|
| 42 |
- poll.WaitOn(t, containerIsInState(ctx, client, cID, "exited"), poll.WithDelay(100*time.Millisecond), poll.WithTimeout(timeout)) |
|
| 42 |
+ poll.WaitOn(t, container.IsInState(ctx, client, cID, "exited"), poll.WithDelay(100*time.Millisecond), poll.WithTimeout(timeout)) |
|
| 43 | 43 |
|
| 44 | 44 |
inspect, err := client.ContainerInspect(ctx, cID) |
| 45 | 45 |
require.NoError(t, err) |
| 46 | 46 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,41 @@ |
| 0 |
+package container |
|
| 1 |
+ |
|
| 2 |
+import ( |
|
| 3 |
+ "strings" |
|
| 4 |
+ |
|
| 5 |
+ "github.com/docker/docker/client" |
|
| 6 |
+ "github.com/gotestyourself/gotestyourself/poll" |
|
| 7 |
+ "golang.org/x/net/context" |
|
| 8 |
+) |
|
| 9 |
+ |
|
| 10 |
+// IsStopped verifies the container is in stopped state. |
|
| 11 |
+func IsStopped(ctx context.Context, client client.APIClient, containerID string) func(log poll.LogT) poll.Result {
|
|
| 12 |
+ return func(log poll.LogT) poll.Result {
|
|
| 13 |
+ inspect, err := client.ContainerInspect(ctx, containerID) |
|
| 14 |
+ |
|
| 15 |
+ switch {
|
|
| 16 |
+ case err != nil: |
|
| 17 |
+ return poll.Error(err) |
|
| 18 |
+ case !inspect.State.Running: |
|
| 19 |
+ return poll.Success() |
|
| 20 |
+ default: |
|
| 21 |
+ return poll.Continue("waiting for container to be stopped")
|
|
| 22 |
+ } |
|
| 23 |
+ } |
|
| 24 |
+} |
|
| 25 |
+ |
|
| 26 |
+// IsInState verifies the container is in one of the specified state, e.g., "running", "exited", etc. |
|
| 27 |
+func IsInState(ctx context.Context, client client.APIClient, containerID string, state ...string) func(log poll.LogT) poll.Result {
|
|
| 28 |
+ return func(log poll.LogT) poll.Result {
|
|
| 29 |
+ inspect, err := client.ContainerInspect(ctx, containerID) |
|
| 30 |
+ if err != nil {
|
|
| 31 |
+ return poll.Error(err) |
|
| 32 |
+ } |
|
| 33 |
+ for _, v := range state {
|
|
| 34 |
+ if inspect.State.Status == v {
|
|
| 35 |
+ return poll.Success() |
|
| 36 |
+ } |
|
| 37 |
+ } |
|
| 38 |
+ return poll.Continue("waiting for container to be one of (%s), currently %s", strings.Join(state, ", "), inspect.State.Status)
|
|
| 39 |
+ } |
|
| 40 |
+} |