From 970fbb60b8c07fd55371f5bcd2a5b22eefe6cc16 Mon Sep 17 00:00:00 2001 From: Matthew Avant Date: Wed, 9 Mar 2016 21:13:26 -0800 Subject: [PATCH 1/4] Expose cgroup-parent to the client --- .../dockerjava/api/command/CreateContainerCmd.java | 5 +++++ .../core/command/CreateContainerCmdImpl.java | 12 ++++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/main/java/com/github/dockerjava/api/command/CreateContainerCmd.java b/src/main/java/com/github/dockerjava/api/command/CreateContainerCmd.java index 1454a5f80..0181d86be 100644 --- a/src/main/java/com/github/dockerjava/api/command/CreateContainerCmd.java +++ b/src/main/java/com/github/dockerjava/api/command/CreateContainerCmd.java @@ -179,6 +179,9 @@ public interface CreateContainerCmd extends SyncDockerCmd Date: Mon, 21 Mar 2016 00:13:47 +0300 Subject: [PATCH 2/4] Use annotation features instead custom check. --- .../core/command/CreateContainerCmdImplTest.java | 8 ++------ .../core/command/InspectContainerCmdImplTest.java | 9 ++------- .../netty/exec/CreateContainerCmdExecTest.java | 8 ++------ .../netty/exec/InspectContainerCmdExecTest.java | 9 ++------- 4 files changed, 8 insertions(+), 26 deletions(-) diff --git a/src/test/java/com/github/dockerjava/core/command/CreateContainerCmdImplTest.java b/src/test/java/com/github/dockerjava/core/command/CreateContainerCmdImplTest.java index 7800a8c12..2567a3c28 100644 --- a/src/test/java/com/github/dockerjava/core/command/CreateContainerCmdImplTest.java +++ b/src/test/java/com/github/dockerjava/core/command/CreateContainerCmdImplTest.java @@ -69,7 +69,7 @@ public void afterMethod(ITestResult result) { super.afterMethod(result); } - @Test + @Test(expectedExceptions = ConflictException.class) public void createContainerWithExistingName() throws DockerException { String containerName = "generated_" + new SecureRandom().nextInt(); @@ -81,11 +81,7 @@ public void createContainerWithExistingName() throws DockerException { assertThat(container.getId(), not(isEmptyString())); - try { - dockerClient.createContainerCmd(BUSYBOX_IMAGE).withCmd("env").withName(containerName).exec(); - fail("expected ConflictException"); - } catch (ConflictException e) { - } + dockerClient.createContainerCmd(BUSYBOX_IMAGE).withCmd("env").withName(containerName).exec(); } @Test diff --git a/src/test/java/com/github/dockerjava/core/command/InspectContainerCmdImplTest.java b/src/test/java/com/github/dockerjava/core/command/InspectContainerCmdImplTest.java index e11ff6839..47ed11201 100644 --- a/src/test/java/com/github/dockerjava/core/command/InspectContainerCmdImplTest.java +++ b/src/test/java/com/github/dockerjava/core/command/InspectContainerCmdImplTest.java @@ -63,14 +63,9 @@ public void inspectContainer() throws DockerException { } - @Test + @Test(expectedExceptions = NotFoundException.class) public void inspectNonExistingContainer() throws DockerException { - - try { - dockerClient.inspectContainerCmd("non-existing").exec(); - fail("expected NotFoundException"); - } catch (NotFoundException e) { - } + dockerClient.inspectContainerCmd("non-existing").exec(); } @Test diff --git a/src/test/java/com/github/dockerjava/netty/exec/CreateContainerCmdExecTest.java b/src/test/java/com/github/dockerjava/netty/exec/CreateContainerCmdExecTest.java index 9a6d4b354..fde1179ee 100644 --- a/src/test/java/com/github/dockerjava/netty/exec/CreateContainerCmdExecTest.java +++ b/src/test/java/com/github/dockerjava/netty/exec/CreateContainerCmdExecTest.java @@ -67,7 +67,7 @@ public void afterMethod(ITestResult result) { super.afterMethod(result); } - @Test + @Test(expectedExceptions = ConflictException.class) public void createContainerWithExistingName() throws DockerException { String containerName = "generated_" + new SecureRandom().nextInt(); @@ -79,11 +79,7 @@ public void createContainerWithExistingName() throws DockerException { assertThat(container.getId(), not(isEmptyString())); - try { - dockerClient.createContainerCmd("busybox").withCmd("env").withName(containerName).exec(); - fail("expected ConflictException"); - } catch (ConflictException e) { - } + dockerClient.createContainerCmd("busybox").withCmd("env").withName(containerName).exec(); } @Test diff --git a/src/test/java/com/github/dockerjava/netty/exec/InspectContainerCmdExecTest.java b/src/test/java/com/github/dockerjava/netty/exec/InspectContainerCmdExecTest.java index a07e23143..87fe3b48b 100644 --- a/src/test/java/com/github/dockerjava/netty/exec/InspectContainerCmdExecTest.java +++ b/src/test/java/com/github/dockerjava/netty/exec/InspectContainerCmdExecTest.java @@ -63,14 +63,9 @@ public void inspectContainer() throws DockerException { } - @Test + @Test(expectedExceptions = NotFoundException.class) public void inspectNonExistingContainer() throws DockerException { - - try { - dockerClient.inspectContainerCmd("non-existing").exec(); - fail("expected NotFoundException"); - } catch (NotFoundException e) { - } + dockerClient.inspectContainerCmd("non-existing").exec(); } @Test From dfe3c43e887b6c1944bda664af3b7ed1760f3408 Mon Sep 17 00:00:00 2001 From: Kanstantsin Shautsou Date: Mon, 21 Mar 2016 00:31:43 +0300 Subject: [PATCH 3/4] Use hashcode, tostring, equals builders. --- .../core/command/CreateContainerCmdImpl.java | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/github/dockerjava/core/command/CreateContainerCmdImpl.java b/src/main/java/com/github/dockerjava/core/command/CreateContainerCmdImpl.java index 4f69e9ed0..bb9fcc318 100644 --- a/src/main/java/com/github/dockerjava/core/command/CreateContainerCmdImpl.java +++ b/src/main/java/com/github/dockerjava/core/command/CreateContainerCmdImpl.java @@ -5,6 +5,8 @@ import java.util.List; import java.util.Map; +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -412,12 +414,6 @@ public String getCgroupParent() { return hostConfig.getCgroupParent(); } - @Override - public String toString() { - return new ToStringBuilder(this).append("create container ").append(name != null ? "name=" + name + " " : "") - .append(this).toString(); - } - @Override public CreateContainerCmd withAttachStderr(Boolean attachStderr) { checkNotNull(attachStderr, "attachStderr was not specified"); @@ -890,4 +886,18 @@ public CreateContainerCmd withPidMode(String pidMode) { return this; } + @Override + public String toString() { + return ToStringBuilder.reflectionToString(this); + } + + @Override + public boolean equals(Object o) { + return EqualsBuilder.reflectionEquals(this, o); + } + + @Override + public int hashCode() { + return HashCodeBuilder.reflectionHashCode(this); + } } From ab6443bbeafa1676732d5fa18ac43522afb77ed2 Mon Sep 17 00:00:00 2001 From: Kanstantsin Shautsou Date: Mon, 21 Mar 2016 00:32:44 +0300 Subject: [PATCH 4/4] Add test case for CgroupParent --- .../core/command/CreateContainerCmdImplTest.java | 14 ++++++++++++++ .../netty/exec/CreateContainerCmdExecTest.java | 14 ++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/test/java/com/github/dockerjava/core/command/CreateContainerCmdImplTest.java b/src/test/java/com/github/dockerjava/core/command/CreateContainerCmdImplTest.java index 2567a3c28..f2fd32b6a 100644 --- a/src/test/java/com/github/dockerjava/core/command/CreateContainerCmdImplTest.java +++ b/src/test/java/com/github/dockerjava/core/command/CreateContainerCmdImplTest.java @@ -613,4 +613,18 @@ public void onNext(Frame item) { super.onNext(item); } } + + @Test(groups = "ignoreInCircleCi") + public void createContainerWithCgroupParent() throws DockerException { + CreateContainerResponse container = dockerClient.createContainerCmd("busybox") + .withCgroupParent("/parent").exec(); + + LOG.info("Created container {}", container.toString()); + + assertThat(container.getId(), not(isEmptyString())); + + InspectContainerResponse inspectContainer = dockerClient.inspectContainerCmd(container.getId()).exec(); + + assertThat(inspectContainer.getHostConfig().getCgroupParent(), is("/parent")); + } } diff --git a/src/test/java/com/github/dockerjava/netty/exec/CreateContainerCmdExecTest.java b/src/test/java/com/github/dockerjava/netty/exec/CreateContainerCmdExecTest.java index fde1179ee..02c5cc54e 100644 --- a/src/test/java/com/github/dockerjava/netty/exec/CreateContainerCmdExecTest.java +++ b/src/test/java/com/github/dockerjava/netty/exec/CreateContainerCmdExecTest.java @@ -550,4 +550,18 @@ public void createContainerWithLogConfig() throws DockerException { // null becomes empty string assertEquals(inspectContainerResponse.getHostConfig().getLogConfig().type, logConfig.type); } + + @Test(groups = "ignoreInCircleCi") + public void createContainerWithCgroupParent() throws DockerException { + CreateContainerResponse container = dockerClient.createContainerCmd("busybox") + .withCgroupParent("/parent").exec(); + + LOG.info("Created container {}", container.toString()); + + assertThat(container.getId(), not(isEmptyString())); + + InspectContainerResponse inspectContainer = dockerClient.inspectContainerCmd(container.getId()).exec(); + + assertThat(inspectContainer.getHostConfig().getCgroupParent(), is("/parent")); + } }