container.Run() should be a synchronous operation in normal circumstances;
the container is created and started, so polling after that for the
container to be in the "running" state should not be needed.
This should also prevent issues when a container (for whatever reason)
exited immediately after starting; in that case we would continue
polling for it to be running (which likely would never happen).
Let's skip the polling; if the container is not in the expected state
(i.e. exited), tests should fail as well.
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
| ... | ... |
@@ -47,10 +47,6 @@ func TestCheckpoint(t *testing.T) {
|
| 47 | 47 |
Type: mounttypes.TypeTmpfs, |
| 48 | 48 |
Target: "/tmp", |
| 49 | 49 |
})) |
| 50 |
- poll.WaitOn(t, |
|
| 51 |
- container.IsInState(ctx, apiClient, cID, "running"), |
|
| 52 |
- poll.WithDelay(100*time.Millisecond), |
|
| 53 |
- ) |
|
| 54 | 50 |
|
| 55 | 51 |
// FIXME: ipv6 iptables modules are not uploaded in the test environment |
| 56 | 52 |
stdoutStderr, err = exec.Command("bash", "-c", "set -x; "+
|
| ... | ... |
@@ -3,14 +3,12 @@ package container // import "github.com/docker/docker/integration/container" |
| 3 | 3 |
import ( |
| 4 | 4 |
"strings" |
| 5 | 5 |
"testing" |
| 6 |
- "time" |
|
| 7 | 6 |
|
| 8 | 7 |
"github.com/docker/docker/api/types" |
| 9 | 8 |
containertypes "github.com/docker/docker/api/types/container" |
| 10 | 9 |
"github.com/docker/docker/integration/internal/container" |
| 11 | 10 |
"github.com/docker/docker/testutil" |
| 12 | 11 |
"gotest.tools/v3/assert" |
| 13 |
- "gotest.tools/v3/poll" |
|
| 14 | 12 |
"gotest.tools/v3/skip" |
| 15 | 13 |
) |
| 16 | 14 |
|
| ... | ... |
@@ -107,11 +105,8 @@ func TestWindowsDevices(t *testing.T) {
|
| 107 | 107 |
assert.ErrorContains(t, err, d.expectedStartFailureMessage) |
| 108 | 108 |
return |
| 109 | 109 |
} |
| 110 |
- |
|
| 111 | 110 |
assert.NilError(t, err) |
| 112 | 111 |
|
| 113 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, id, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 114 |
- |
|
| 115 | 112 |
// /Windows/System32/HostDriverStore is mounted from the host when class GUID 5B45201D-F2F2-4F3B-85BB-30FF1F953599 |
| 116 | 113 |
// is mounted. See `C:\windows\System32\containers\devices.def` on a Windows host for (slightly more) details. |
| 117 | 114 |
res, err := container.Exec(ctx, apiClient, id, []string{
|
| ... | ... |
@@ -152,7 +152,6 @@ func TestKillDifferentUserContainer(t *testing.T) {
|
| 152 | 152 |
id := container.Run(ctx, t, apiClient, func(c *container.TestContainerConfig) {
|
| 153 | 153 |
c.Config.User = "daemon" |
| 154 | 154 |
}) |
| 155 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, id, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 156 | 155 |
|
| 157 | 156 |
err := apiClient.ContainerKill(ctx, id, "SIGKILL") |
| 158 | 157 |
assert.NilError(t, err) |
| ... | ... |
@@ -94,7 +94,7 @@ func startServerContainer(ctx context.Context, t *testing.T, msg string, port in |
| 94 | 94 |
t.Helper() |
| 95 | 95 |
apiClient := testEnv.APIClient() |
| 96 | 96 |
|
| 97 |
- cID := container.Run(ctx, t, apiClient, |
|
| 97 |
+ return container.Run(ctx, t, apiClient, |
|
| 98 | 98 |
container.WithName("server-"+t.Name()),
|
| 99 | 99 |
container.WithCmd("sh", "-c", fmt.Sprintf("echo %q | nc -lp %d", msg, port)),
|
| 100 | 100 |
container.WithExposedPorts(fmt.Sprintf("%d/tcp", port)),
|
| ... | ... |
@@ -106,11 +106,8 @@ func startServerContainer(ctx context.Context, t *testing.T, msg string, port in |
| 106 | 106 |
}, |
| 107 | 107 |
}, |
| 108 | 108 |
} |
| 109 |
- }) |
|
| 110 |
- |
|
| 111 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 112 |
- |
|
| 113 |
- return cID |
|
| 109 |
+ }, |
|
| 110 |
+ ) |
|
| 114 | 111 |
} |
| 115 | 112 |
|
| 116 | 113 |
// getExternalAddress() returns the external IP-address from eth0. If eth0 has |
| ... | ... |
@@ -27,7 +27,6 @@ func TestPause(t *testing.T) {
|
| 27 | 27 |
apiClient := testEnv.APIClient() |
| 28 | 28 |
|
| 29 | 29 |
cID := container.Run(ctx, t, apiClient) |
| 30 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 31 | 30 |
|
| 32 | 31 |
since := request.DaemonUnixTime(ctx, t, apiClient, testEnv) |
| 33 | 32 |
|
| ... | ... |
@@ -58,8 +57,6 @@ func TestPauseFailsOnWindowsServerContainers(t *testing.T) {
|
| 58 | 58 |
apiClient := testEnv.APIClient() |
| 59 | 59 |
|
| 60 | 60 |
cID := container.Run(ctx, t, apiClient) |
| 61 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 62 |
- |
|
| 63 | 61 |
err := apiClient.ContainerPause(ctx, cID) |
| 64 | 62 |
assert.Check(t, is.ErrorContains(err, cerrdefs.ErrNotImplemented.Error())) |
| 65 | 63 |
} |
| ... | ... |
@@ -72,8 +69,6 @@ func TestPauseStopPausedContainer(t *testing.T) {
|
| 72 | 72 |
apiClient := testEnv.APIClient() |
| 73 | 73 |
|
| 74 | 74 |
cID := container.Run(ctx, t, apiClient) |
| 75 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 76 |
- |
|
| 77 | 75 |
err := apiClient.ContainerPause(ctx, cID) |
| 78 | 76 |
assert.NilError(t, err) |
| 79 | 77 |
|
| ... | ... |
@@ -3,14 +3,12 @@ package container // import "github.com/docker/docker/integration/container" |
| 3 | 3 |
import ( |
| 4 | 4 |
"os" |
| 5 | 5 |
"testing" |
| 6 |
- "time" |
|
| 7 | 6 |
|
| 8 | 7 |
"github.com/docker/docker/api/types" |
| 9 | 8 |
"github.com/docker/docker/errdefs" |
| 10 | 9 |
"github.com/docker/docker/integration/internal/container" |
| 11 | 10 |
"gotest.tools/v3/assert" |
| 12 | 11 |
is "gotest.tools/v3/assert/cmp" |
| 13 |
- "gotest.tools/v3/poll" |
|
| 14 | 12 |
"gotest.tools/v3/skip" |
| 15 | 13 |
) |
| 16 | 14 |
|
| ... | ... |
@@ -25,12 +23,10 @@ func TestPIDModeHost(t *testing.T) {
|
| 25 | 25 |
apiClient := testEnv.APIClient() |
| 26 | 26 |
|
| 27 | 27 |
cID := container.Run(ctx, t, apiClient, container.WithPIDMode("host"))
|
| 28 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 29 | 28 |
cPid := container.GetContainerNS(ctx, t, apiClient, cID, "pid") |
| 30 | 29 |
assert.Assert(t, hostPid == cPid) |
| 31 | 30 |
|
| 32 | 31 |
cID = container.Run(ctx, t, apiClient) |
| 33 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 34 | 32 |
cPid = container.GetContainerNS(ctx, t, apiClient, cID, "pid") |
| 35 | 33 |
assert.Assert(t, hostPid != cPid) |
| 36 | 34 |
} |
| ... | ... |
@@ -52,7 +52,6 @@ func TestRenameStoppedContainer(t *testing.T) {
|
| 52 | 52 |
|
| 53 | 53 |
oldName := "first_name" + t.Name() |
| 54 | 54 |
cID := container.Run(ctx, t, apiClient, container.WithName(oldName), container.WithCmd("sh"))
|
| 55 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "exited"), poll.WithDelay(100*time.Millisecond)) |
|
| 56 | 55 |
|
| 57 | 56 |
inspect, err := apiClient.ContainerInspect(ctx, cID) |
| 58 | 57 |
assert.NilError(t, err) |
| ... | ... |
@@ -73,7 +72,6 @@ func TestRenameRunningContainerAndReuse(t *testing.T) {
|
| 73 | 73 |
|
| 74 | 74 |
oldName := "first_name" + t.Name() |
| 75 | 75 |
cID := container.Run(ctx, t, apiClient, container.WithName(oldName)) |
| 76 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 77 | 76 |
|
| 78 | 77 |
newName := "new_name" + stringid.GenerateRandomID() |
| 79 | 78 |
err := apiClient.ContainerRename(ctx, oldName, newName) |
| ... | ... |
@@ -87,7 +85,6 @@ func TestRenameRunningContainerAndReuse(t *testing.T) {
|
| 87 | 87 |
assert.Check(t, is.ErrorContains(err, "No such container: "+oldName)) |
| 88 | 88 |
|
| 89 | 89 |
cID = container.Run(ctx, t, apiClient, container.WithName(oldName)) |
| 90 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 91 | 90 |
|
| 92 | 91 |
inspect, err = apiClient.ContainerInspect(ctx, cID) |
| 93 | 92 |
assert.NilError(t, err) |
| ... | ... |
@@ -100,7 +97,6 @@ func TestRenameInvalidName(t *testing.T) {
|
| 100 | 100 |
|
| 101 | 101 |
oldName := "first_name" + t.Name() |
| 102 | 102 |
cID := container.Run(ctx, t, apiClient, container.WithName(oldName)) |
| 103 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 104 | 103 |
|
| 105 | 104 |
err := apiClient.ContainerRename(ctx, oldName, "new:invalid") |
| 106 | 105 |
assert.Check(t, is.ErrorContains(err, "Invalid container name")) |
| ... | ... |
@@ -142,8 +138,6 @@ func TestRenameAnonymousContainer(t *testing.T) {
|
| 142 | 142 |
err = apiClient.ContainerStart(ctx, container1Name, types.ContainerStartOptions{})
|
| 143 | 143 |
assert.NilError(t, err) |
| 144 | 144 |
|
| 145 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 146 |
- |
|
| 147 | 145 |
count := "-c" |
| 148 | 146 |
if testEnv.DaemonInfo.OSType == "windows" {
|
| 149 | 147 |
count = "-n" |
| ... | ... |
@@ -168,8 +162,6 @@ func TestRenameContainerWithSameName(t *testing.T) {
|
| 168 | 168 |
|
| 169 | 169 |
oldName := "old" + t.Name() |
| 170 | 170 |
cID := container.Run(ctx, t, apiClient, container.WithName(oldName)) |
| 171 |
- |
|
| 172 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 173 | 171 |
err := apiClient.ContainerRename(ctx, oldName, oldName) |
| 174 | 172 |
assert.Check(t, is.ErrorContains(err, "Renaming a container with the same name")) |
| 175 | 173 |
err = apiClient.ContainerRename(ctx, cID, oldName) |
| ... | ... |
@@ -190,12 +182,10 @@ func TestRenameContainerWithLinkedContainer(t *testing.T) {
|
| 190 | 190 |
|
| 191 | 191 |
db1Name := "db1" + t.Name() |
| 192 | 192 |
db1ID := container.Run(ctx, t, apiClient, container.WithName(db1Name)) |
| 193 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, db1ID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 194 | 193 |
|
| 195 | 194 |
app1Name := "app1" + t.Name() |
| 196 | 195 |
app2Name := "app2" + t.Name() |
| 197 |
- app1ID := container.Run(ctx, t, apiClient, container.WithName(app1Name), container.WithLinks(db1Name+":/mysql")) |
|
| 198 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, app1ID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 196 |
+ container.Run(ctx, t, apiClient, container.WithName(app1Name), container.WithLinks(db1Name+":/mysql")) |
|
| 199 | 197 |
|
| 200 | 198 |
err := apiClient.ContainerRename(ctx, app1Name, app2Name) |
| 201 | 199 |
assert.NilError(t, err) |
| ... | ... |
@@ -3,7 +3,6 @@ package container // import "github.com/docker/docker/integration/container" |
| 3 | 3 |
import ( |
| 4 | 4 |
"context" |
| 5 | 5 |
"testing" |
| 6 |
- "time" |
|
| 7 | 6 |
|
| 8 | 7 |
"github.com/docker/docker/client" |
| 9 | 8 |
"github.com/docker/docker/integration/internal/container" |
| ... | ... |
@@ -11,7 +10,6 @@ import ( |
| 11 | 11 |
"github.com/docker/docker/testutil" |
| 12 | 12 |
"github.com/docker/docker/testutil/daemon" |
| 13 | 13 |
"gotest.tools/v3/assert" |
| 14 |
- "gotest.tools/v3/poll" |
|
| 15 | 14 |
"gotest.tools/v3/skip" |
| 16 | 15 |
) |
| 17 | 16 |
|
| ... | ... |
@@ -24,7 +22,6 @@ func testRunWithCgroupNs(ctx context.Context, t *testing.T, daemonNsMode string, |
| 24 | 24 |
defer d.Stop(t) |
| 25 | 25 |
|
| 26 | 26 |
cID := container.Run(ctx, t, apiClient, containerOpts...) |
| 27 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 28 | 27 |
|
| 29 | 28 |
daemonCgroup := d.CgroupNamespace(t) |
| 30 | 29 |
containerCgroup := container.GetContainerNS(ctx, t, apiClient, cID, "cgroup") |
| ... | ... |
@@ -148,7 +145,6 @@ func TestCgroupNamespacesRunOlderClient(t *testing.T) {
|
| 148 | 148 |
defer d.Stop(t) |
| 149 | 149 |
|
| 150 | 150 |
cID := container.Run(ctx, t, apiClient) |
| 151 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 152 | 151 |
|
| 153 | 152 |
daemonCgroup := d.CgroupNamespace(t) |
| 154 | 153 |
containerCgroup := container.GetContainerNS(ctx, t, apiClient, cID, "cgroup") |
| ... | ... |
@@ -49,9 +49,6 @@ func TestNISDomainname(t *testing.T) {
|
| 49 | 49 |
c.Config.Hostname = hostname |
| 50 | 50 |
c.Config.Domainname = domainname |
| 51 | 51 |
}) |
| 52 |
- |
|
| 53 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 54 |
- |
|
| 55 | 52 |
inspect, err := apiClient.ContainerInspect(ctx, cID) |
| 56 | 53 |
assert.NilError(t, err) |
| 57 | 54 |
assert.Check(t, is.Equal(hostname, inspect.Config.Hostname)) |
| ... | ... |
@@ -92,9 +89,6 @@ func TestHostnameDnsResolution(t *testing.T) {
|
| 92 | 92 |
c.Config.Hostname = hostname |
| 93 | 93 |
c.HostConfig.NetworkMode = containertypes.NetworkMode(netName) |
| 94 | 94 |
}) |
| 95 |
- |
|
| 96 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 97 |
- |
|
| 98 | 95 |
inspect, err := apiClient.ContainerInspect(ctx, cID) |
| 99 | 96 |
assert.NilError(t, err) |
| 100 | 97 |
assert.Check(t, is.Equal(hostname, inspect.Config.Hostname)) |
| ... | ... |
@@ -118,8 +112,6 @@ func TestUnprivilegedPortsAndPing(t *testing.T) {
|
| 118 | 118 |
c.Config.User = "1000:1000" |
| 119 | 119 |
}) |
| 120 | 120 |
|
| 121 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 122 |
- |
|
| 123 | 121 |
// Check net.ipv4.ping_group_range. |
| 124 | 122 |
res, err := container.Exec(ctx, apiClient, cID, []string{"cat", "/proc/sys/net/ipv4/ping_group_range"})
|
| 125 | 123 |
assert.NilError(t, err) |
| ... | ... |
@@ -165,8 +157,6 @@ func TestPrivilegedHostDevices(t *testing.T) {
|
| 165 | 165 |
|
| 166 | 166 |
cID := container.Run(ctx, t, apiClient, container.WithPrivileged(true)) |
| 167 | 167 |
|
| 168 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 169 |
- |
|
| 170 | 168 |
// Check test device. |
| 171 | 169 |
res, err := container.Exec(ctx, apiClient, cID, []string{"ls", devTest})
|
| 172 | 170 |
assert.NilError(t, err) |
| ... | ... |
@@ -5,13 +5,11 @@ import ( |
| 5 | 5 |
"io" |
| 6 | 6 |
"reflect" |
| 7 | 7 |
"testing" |
| 8 |
- "time" |
|
| 9 | 8 |
|
| 10 | 9 |
"github.com/docker/docker/api/types" |
| 11 | 10 |
"github.com/docker/docker/integration/internal/container" |
| 12 | 11 |
"gotest.tools/v3/assert" |
| 13 | 12 |
is "gotest.tools/v3/assert/cmp" |
| 14 |
- "gotest.tools/v3/poll" |
|
| 15 | 13 |
"gotest.tools/v3/skip" |
| 16 | 14 |
) |
| 17 | 15 |
|
| ... | ... |
@@ -26,9 +24,6 @@ func TestStats(t *testing.T) {
|
| 26 | 26 |
assert.NilError(t, err) |
| 27 | 27 |
|
| 28 | 28 |
cID := container.Run(ctx, t, apiClient) |
| 29 |
- |
|
| 30 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 31 |
- |
|
| 32 | 29 |
resp, err := apiClient.ContainerStats(ctx, cID, false) |
| 33 | 30 |
assert.NilError(t, err) |
| 34 | 31 |
defer resp.Body.Close() |
| ... | ... |
@@ -88,7 +88,6 @@ func TestStopContainerWithTimeoutCancel(t *testing.T) {
|
| 88 | 88 |
id := container.Run(ctx, t, apiClient, |
| 89 | 89 |
container.WithCmd("sh", "-c", "trap 'echo received TERM' TERM; while true; do usleep 10; done"),
|
| 90 | 90 |
) |
| 91 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, id, "running")) |
|
| 92 | 91 |
|
| 93 | 92 |
ctxCancel, cancel := context.WithCancel(ctx) |
| 94 | 93 |
t.Cleanup(cancel) |
| ... | ... |
@@ -14,7 +14,6 @@ import ( |
| 14 | 14 |
"github.com/docker/docker/testutil/request" |
| 15 | 15 |
"gotest.tools/v3/assert" |
| 16 | 16 |
is "gotest.tools/v3/assert/cmp" |
| 17 |
- "gotest.tools/v3/poll" |
|
| 18 | 17 |
"gotest.tools/v3/skip" |
| 19 | 18 |
) |
| 20 | 19 |
|
| ... | ... |
@@ -33,8 +32,6 @@ func TestUpdateMemory(t *testing.T) {
|
| 33 | 33 |
} |
| 34 | 34 |
}) |
| 35 | 35 |
|
| 36 |
- poll.WaitOn(t, container.IsInState(ctx, apiClient, cID, "running"), poll.WithDelay(100*time.Millisecond)) |
|
| 37 |
- |
|
| 38 | 36 |
const ( |
| 39 | 37 |
setMemory int64 = 314572800 |
| 40 | 38 |
setMemorySwap int64 = 524288000 |
| ... | ... |
@@ -86,8 +86,6 @@ func TestWaitBlocked(t *testing.T) {
|
| 86 | 86 |
t.Parallel() |
| 87 | 87 |
ctx := testutil.StartSpan(ctx, t) |
| 88 | 88 |
containerID := container.Run(ctx, t, cli, container.WithCmd("sh", "-c", tc.cmd))
|
| 89 |
- poll.WaitOn(t, container.IsInState(ctx, cli, containerID, "running"), poll.WithTimeout(30*time.Second), poll.WithDelay(100*time.Millisecond)) |
|
| 90 |
- |
|
| 91 | 89 |
waitResC, errC := cli.ContainerWait(ctx, containerID, "") |
| 92 | 90 |
|
| 93 | 91 |
err := cli.ContainerStop(ctx, containerID, containertypes.StopOptions{})
|
| ... | ... |
@@ -214,8 +212,6 @@ func TestWaitRestartedContainer(t *testing.T) {
|
| 214 | 214 |
) |
| 215 | 215 |
defer cli.ContainerRemove(ctx, containerID, types.ContainerRemoveOptions{Force: true})
|
| 216 | 216 |
|
| 217 |
- poll.WaitOn(t, container.IsInState(ctx, cli, containerID, "running"), poll.WithTimeout(30*time.Second), poll.WithDelay(100*time.Millisecond)) |
|
| 218 |
- |
|
| 219 | 217 |
// Container is running now, wait for exit |
| 220 | 218 |
waitResC, errC := cli.ContainerWait(ctx, containerID, tc.waitCond) |
| 221 | 219 |
|
| ... | ... |
@@ -25,7 +25,6 @@ import ( |
| 25 | 25 |
"github.com/docker/docker/pkg/authorization" |
| 26 | 26 |
"github.com/docker/docker/testutil/environment" |
| 27 | 27 |
"gotest.tools/v3/assert" |
| 28 |
- "gotest.tools/v3/poll" |
|
| 29 | 28 |
"gotest.tools/v3/skip" |
| 30 | 29 |
) |
| 31 | 30 |
|
| ... | ... |
@@ -227,7 +226,6 @@ func TestAuthZPluginAllowEventStream(t *testing.T) {
|
| 227 | 227 |
|
| 228 | 228 |
// Create a container and wait for the creation events |
| 229 | 229 |
cID := container.Run(ctx, t, c) |
| 230 |
- poll.WaitOn(t, container.IsInState(ctx, c, cID, "running")) |
|
| 231 | 230 |
|
| 232 | 231 |
created := false |
| 233 | 232 |
started := false |