summaryrefslogtreecommitdiffstats
path: root/docker-api
diff options
context:
space:
mode:
authorfreva <valerijf@yahoo-inc.com>2017-01-30 11:47:12 +0100
committerfreva <valerijf@yahoo-inc.com>2017-01-30 11:47:12 +0100
commit28217dfa19963b557cd9d5e445338508f3c45048 (patch)
tree5bc98f383da05c79172f994f98df1f9a21fcfb35 /docker-api
parent6e71a4520677efaf47626d1ff5a2b2d1ff3b03e4 (diff)
Use docker.state.status to determine container state
Diffstat (limited to 'docker-api')
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Container.java15
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java1
-rw-r--r--docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerTest.java15
-rw-r--r--docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/RunSystemTests.java2
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);
}