diff options
author | freva <valerijf@yahoo-inc.com> | 2017-01-30 11:47:12 +0100 |
---|---|---|
committer | freva <valerijf@yahoo-inc.com> | 2017-01-30 11:47:12 +0100 |
commit | 28217dfa19963b557cd9d5e445338508f3c45048 (patch) | |
tree | 5bc98f383da05c79172f994f98df1f9a21fcfb35 /docker-api/src | |
parent | 6e71a4520677efaf47626d1ff5a2b2d1ff3b03e4 (diff) |
Use docker.state.status to determine container state
Diffstat (limited to 'docker-api/src')
4 files changed, 25 insertions, 8 deletions
diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Container.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Container.java index aa35ee9bc06..94e827b8a49 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Container.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Container.java @@ -10,19 +10,20 @@ public class Container { public final String hostname; public final DockerImage image; public final ContainerName name; + public final State state; public final int pid; - public final boolean isRunning; public Container( final String hostname, final DockerImage image, final ContainerName containerName, + final State state, final int pid) { this.hostname = hostname; this.image = image; this.name = containerName; + this.state = state; this.pid = pid; - this.isRunning = pid != 0; } @Override @@ -48,8 +49,16 @@ public class Container { + " hostname=" + hostname + " image=" + image + " name=" + name - + " isRunning=" + isRunning + + " state=" + state + " pid=" + pid + "}"; } + + public enum State { + CREATED, RESTARTING, RUNNING, PAUSED, EXITED, DEAD; + + public boolean isRunning() { + return this == RUNNING; + } + } } diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java index 6f51fbd1ad8..00ace9a1958 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java @@ -355,6 +355,7 @@ public class DockerImpl implements Docker { response.getConfig().getHostName(), new DockerImage(response.getConfig().getImage()), new ContainerName(decode(response.getName())), + Container.State.valueOf(response.getState().getStatus().toUpperCase()), response.getState().getPid() )) .map(Stream::of) diff --git a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerTest.java b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerTest.java index cf24fb7c826..2aac1cff676 100644 --- a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerTest.java +++ b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerTest.java @@ -13,6 +13,7 @@ import java.util.Optional; import java.util.concurrent.ExecutionException; import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; @@ -92,17 +93,23 @@ public class DockerTest { docker.createContainerCommand(dockerImage, containerName, containerHostname).withManagedBy(MANAGER_NAME).create(); Optional<Container> container = docker.getContainer(containerHostname); assertTrue(container.isPresent()); - assertFalse(container.get().isRunning); + assertEquals(container.get().state, Container.State.CREATED); docker.startContainer(containerName); container = docker.getContainer(containerHostname); assertTrue(container.isPresent()); - assertTrue(container.get().isRunning); + assertEquals(container.get().state, Container.State.RUNNING); + docker.dockerClient.pauseContainerCmd(containerName.asString()).exec(); + container = docker.getContainer(containerHostname); + assertTrue(container.isPresent()); + assertEquals(container.get().state, Container.State.PAUSED); + + docker.dockerClient.unpauseContainerCmd(containerName.asString()).exec(); docker.stopContainer(containerName); container = docker.getContainer(containerHostname); assertTrue(container.isPresent()); - assertFalse(container.get().isRunning); + assertEquals(container.get().state, Container.State.EXITED); docker.deleteContainer(containerName); assertThat(docker.getAllContainersManagedBy(MANAGER_NAME).isEmpty(), is(true)); @@ -151,7 +158,7 @@ public class DockerTest { // Clean up any non deleted containers from previous tests docker.getAllContainersManagedBy(MANAGER_NAME).forEach(container -> { - if (container.isRunning) docker.stopContainer(container.name); + if (container.state.isRunning()) docker.stopContainer(container.name); docker.deleteContainer(container.name); }); } diff --git a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/RunSystemTests.java b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/RunSystemTests.java index f799acd33aa..51928b232a5 100644 --- a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/RunSystemTests.java +++ b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/RunSystemTests.java @@ -137,7 +137,7 @@ public class RunSystemTests { Optional<Container> container = docker.getContainer(containerName.asString()); if (container.isPresent()) { - if (container.get().isRunning) return; + if (container.get().state.isRunning()) return; else docker.deleteContainer(containerName); } |