diff --git a/src/main/java/com/github/dockerjava/api/DockerClient.java b/src/main/java/com/github/dockerjava/api/DockerClient.java index 5c8dce226..47b8b50c2 100644 --- a/src/main/java/com/github/dockerjava/api/DockerClient.java +++ b/src/main/java/com/github/dockerjava/api/DockerClient.java @@ -54,6 +54,8 @@ import com.github.dockerjava.api.command.RemoveServiceCmd; import com.github.dockerjava.api.command.RemoveVolumeCmd; import com.github.dockerjava.api.command.RenameContainerCmd; +import com.github.dockerjava.api.command.ResizeContainerCmd; +import com.github.dockerjava.api.command.ResizeExecCmd; import com.github.dockerjava.api.command.RestartContainerCmd; import com.github.dockerjava.api.command.SaveImageCmd; import com.github.dockerjava.api.command.SearchImagesCmd; @@ -157,6 +159,8 @@ public interface DockerClient extends Closeable { */ StartContainerCmd startContainerCmd(@Nonnull String containerId); + ResizeContainerCmd resizeContainerCmd(@Nonnull String containerId); + ExecCreateCmd execCreateCmd(@Nonnull String containerId); InspectContainerCmd inspectContainerCmd(@Nonnull String containerId); @@ -169,6 +173,8 @@ public interface DockerClient extends Closeable { ExecStartCmd execStartCmd(@Nonnull String execId); + ResizeExecCmd resizeExecCmd(@Nonnull String execId); + InspectExecCmd inspectExecCmd(@Nonnull String execId); LogContainerCmd logContainerCmd(@Nonnull String containerId); diff --git a/src/main/java/com/github/dockerjava/api/command/DockerCmdExecFactory.java b/src/main/java/com/github/dockerjava/api/command/DockerCmdExecFactory.java index 1945ddd5b..2db103644 100644 --- a/src/main/java/com/github/dockerjava/api/command/DockerCmdExecFactory.java +++ b/src/main/java/com/github/dockerjava/api/command/DockerCmdExecFactory.java @@ -52,8 +52,12 @@ public interface DockerCmdExecFactory extends Closeable { AttachContainerCmd.Exec createAttachContainerCmdExec(); + ResizeContainerCmd.Exec createResizeContainerCmdExec(); + ExecStartCmd.Exec createExecStartCmdExec(); + ResizeExecCmd.Exec createResizeExecCmdExec(); + InspectExecCmd.Exec createInspectExecCmdExec(); LogContainerCmd.Exec createLogContainerCmdExec(); diff --git a/src/main/java/com/github/dockerjava/api/command/ResizeContainerCmd.java b/src/main/java/com/github/dockerjava/api/command/ResizeContainerCmd.java new file mode 100644 index 000000000..38780b9b2 --- /dev/null +++ b/src/main/java/com/github/dockerjava/api/command/ResizeContainerCmd.java @@ -0,0 +1,32 @@ +package com.github.dockerjava.api.command; + +import javax.annotation.CheckForNull; +import javax.annotation.Nonnull; + +import com.github.dockerjava.api.exception.NotFoundException; + +public interface ResizeContainerCmd extends SyncDockerCmd { + + @CheckForNull + String getContainerId(); + + Integer getHeight(); + + Integer getWidth(); + + ResizeContainerCmd withContainerId(@Nonnull String execId); + + ResizeContainerCmd withSize(int height, int width); + + /** + * + * @throws NotFoundException + * No such container instance + */ + @Override + Void exec() throws NotFoundException; + + interface Exec extends DockerCmdSyncExec { + } + +} diff --git a/src/main/java/com/github/dockerjava/api/command/ResizeExecCmd.java b/src/main/java/com/github/dockerjava/api/command/ResizeExecCmd.java new file mode 100644 index 000000000..664f2b343 --- /dev/null +++ b/src/main/java/com/github/dockerjava/api/command/ResizeExecCmd.java @@ -0,0 +1,32 @@ +package com.github.dockerjava.api.command; + +import javax.annotation.CheckForNull; +import javax.annotation.Nonnull; + +import com.github.dockerjava.api.exception.NotFoundException; + +public interface ResizeExecCmd extends SyncDockerCmd { + + @CheckForNull + String getExecId(); + + Integer getHeight(); + + Integer getWidth(); + + ResizeExecCmd withExecId(@Nonnull String execId); + + ResizeExecCmd withSize(int height, int width); + + /** + * + * @throws NotFoundException + * No such exec instance + */ + @Override + Void exec() throws NotFoundException; + + interface Exec extends DockerCmdSyncExec { + } + +} diff --git a/src/main/java/com/github/dockerjava/core/AbstractDockerCmdExecFactory.java b/src/main/java/com/github/dockerjava/core/AbstractDockerCmdExecFactory.java index ebc8b60b5..149c905c0 100644 --- a/src/main/java/com/github/dockerjava/core/AbstractDockerCmdExecFactory.java +++ b/src/main/java/com/github/dockerjava/core/AbstractDockerCmdExecFactory.java @@ -57,6 +57,8 @@ import com.github.dockerjava.api.command.RemoveSwarmNodeCmd; import com.github.dockerjava.api.command.RemoveVolumeCmd; import com.github.dockerjava.api.command.RenameContainerCmd; +import com.github.dockerjava.api.command.ResizeContainerCmd; +import com.github.dockerjava.api.command.ResizeExecCmd; import com.github.dockerjava.api.command.RestartContainerCmd; import com.github.dockerjava.api.command.SaveImageCmd; import com.github.dockerjava.api.command.SearchImagesCmd; @@ -128,6 +130,8 @@ import com.github.dockerjava.core.exec.RemoveSwarmNodeCmdExec; import com.github.dockerjava.core.exec.RemoveVolumeCmdExec; import com.github.dockerjava.core.exec.RenameContainerCmdExec; +import com.github.dockerjava.core.exec.ResizeContainerCmdExec; +import com.github.dockerjava.core.exec.ResizeExecCmdExec; import com.github.dockerjava.core.exec.RestartContainerCmdExec; import com.github.dockerjava.core.exec.SaveImageCmdExec; import com.github.dockerjava.core.exec.SearchImagesCmdExec; @@ -282,6 +286,16 @@ public ExecStartCmd.Exec createExecStartCmdExec() { return new ExecStartCmdExec(getBaseResource(), getDockerClientConfig()); } + @Override + public ResizeContainerCmd.Exec createResizeContainerCmdExec() { + return new ResizeContainerCmdExec(getBaseResource(), getDockerClientConfig()); + } + + @Override + public ResizeExecCmd.Exec createResizeExecCmdExec() { + return new ResizeExecCmdExec(getBaseResource(), getDockerClientConfig()); + } + @Override public InspectExecCmd.Exec createInspectExecCmdExec() { return new InspectExecCmdExec(getBaseResource(), getDockerClientConfig()); diff --git a/src/main/java/com/github/dockerjava/core/DockerClientImpl.java b/src/main/java/com/github/dockerjava/core/DockerClientImpl.java index 87ba0214e..8f0275b4c 100644 --- a/src/main/java/com/github/dockerjava/core/DockerClientImpl.java +++ b/src/main/java/com/github/dockerjava/core/DockerClientImpl.java @@ -56,6 +56,8 @@ import com.github.dockerjava.api.command.RemoveServiceCmd; import com.github.dockerjava.api.command.RemoveVolumeCmd; import com.github.dockerjava.api.command.RenameContainerCmd; +import com.github.dockerjava.api.command.ResizeContainerCmd; +import com.github.dockerjava.api.command.ResizeExecCmd; import com.github.dockerjava.api.command.RestartContainerCmd; import com.github.dockerjava.api.command.SaveImageCmd; import com.github.dockerjava.api.command.SearchImagesCmd; @@ -131,6 +133,8 @@ import com.github.dockerjava.core.command.RemoveServiceCmdImpl; import com.github.dockerjava.core.command.RemoveVolumeCmdImpl; import com.github.dockerjava.core.command.RenameContainerCmdImpl; +import com.github.dockerjava.core.command.ResizeContainerCmdImpl; +import com.github.dockerjava.core.command.ResizeExecCmdImpl; import com.github.dockerjava.core.command.RestartContainerCmdImpl; import com.github.dockerjava.core.command.SaveImageCmdImpl; import com.github.dockerjava.core.command.SearchImagesCmdImpl; @@ -356,11 +360,21 @@ public AttachContainerCmd attachContainerCmd(String containerId) { return new AttachContainerCmdImpl(getDockerCmdExecFactory().createAttachContainerCmdExec(), containerId); } + @Override + public ResizeContainerCmd resizeContainerCmd(String containerId) { + return new ResizeContainerCmdImpl(getDockerCmdExecFactory().createResizeContainerCmdExec(), containerId); + } + @Override public ExecStartCmd execStartCmd(String execId) { return new ExecStartCmdImpl(getDockerCmdExecFactory().createExecStartCmdExec(), execId); } + @Override + public ResizeExecCmd resizeExecCmd(String execId) { + return new ResizeExecCmdImpl(getDockerCmdExecFactory().createResizeExecCmdExec(), execId); + } + @Override public InspectExecCmd inspectExecCmd(String execId) { return new InspectExecCmdImpl(getDockerCmdExecFactory().createInspectExecCmdExec(), execId); diff --git a/src/main/java/com/github/dockerjava/core/command/ResizeContainerCmdImpl.java b/src/main/java/com/github/dockerjava/core/command/ResizeContainerCmdImpl.java new file mode 100644 index 000000000..67aedbacc --- /dev/null +++ b/src/main/java/com/github/dockerjava/core/command/ResizeContainerCmdImpl.java @@ -0,0 +1,61 @@ +package com.github.dockerjava.core.command; + +import static com.google.common.base.Preconditions.checkNotNull; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.github.dockerjava.api.command.ResizeContainerCmd; +import com.github.dockerjava.api.exception.NotFoundException; + +@JsonInclude(Include.NON_NULL) +public class ResizeContainerCmdImpl extends AbstrDockerCmd implements ResizeContainerCmd { + + private String containerId; + + private Integer height; + + private Integer width; + + public ResizeContainerCmdImpl(ResizeContainerCmd.Exec exec, String execId) { + super(exec); + withContainerId(execId); + } + + @Override + public String getContainerId() { + return containerId; + } + + @Override + public Integer getHeight() { + return height; + } + + @Override + public Integer getWidth() { + return width; + } + + @Override + public ResizeContainerCmd withContainerId(String containerId) { + checkNotNull(containerId, "containerId was not specified"); + this.containerId = containerId; + return this; + } + + @Override + public ResizeContainerCmd withSize(int height, int width) { + this.height = height; + this.width = width; + return this; + } + + /** + * @throws NotFoundException + * No such exec instance + */ + @Override + public Void exec() throws NotFoundException { + return super.exec(); + } +} diff --git a/src/main/java/com/github/dockerjava/core/command/ResizeExecCmdImpl.java b/src/main/java/com/github/dockerjava/core/command/ResizeExecCmdImpl.java new file mode 100644 index 000000000..807a20b1e --- /dev/null +++ b/src/main/java/com/github/dockerjava/core/command/ResizeExecCmdImpl.java @@ -0,0 +1,61 @@ +package com.github.dockerjava.core.command; + +import static com.google.common.base.Preconditions.checkNotNull; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.github.dockerjava.api.command.ResizeExecCmd; +import com.github.dockerjava.api.exception.NotFoundException; + +@JsonInclude(Include.NON_NULL) +public class ResizeExecCmdImpl extends AbstrDockerCmd implements ResizeExecCmd { + + private String execId; + + private Integer height; + + private Integer width; + + public ResizeExecCmdImpl(ResizeExecCmd.Exec exec, String execId) { + super(exec); + withExecId(execId); + } + + @Override + public String getExecId() { + return execId; + } + + @Override + public Integer getHeight() { + return height; + } + + @Override + public Integer getWidth() { + return width; + } + + @Override + public ResizeExecCmd withExecId(String execId) { + checkNotNull(execId, "execId was not specified"); + this.execId = execId; + return this; + } + + @Override + public ResizeExecCmd withSize(int height, int width) { + this.height = height; + this.width = width; + return this; + } + + /** + * @throws NotFoundException + * No such exec instance + */ + @Override + public Void exec() throws NotFoundException { + return super.exec(); + } +} diff --git a/src/main/java/com/github/dockerjava/core/exec/CommitCmdExec.java b/src/main/java/com/github/dockerjava/core/exec/CommitCmdExec.java index e9b78890c..9ad6cc4a0 100644 --- a/src/main/java/com/github/dockerjava/core/exec/CommitCmdExec.java +++ b/src/main/java/com/github/dockerjava/core/exec/CommitCmdExec.java @@ -20,9 +20,12 @@ public CommitCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConf @Override protected String execute(CommitCmd command) { - WebTarget webTarget = getBaseResource().path("/commit").queryParam("container", command.getContainerId()) - .queryParam("repo", command.getRepository()).queryParam("tag", command.getTag()) - .queryParam("m", command.getMessage()).queryParam("author", command.getAuthor()); + WebTarget webTarget = getBaseResource().path("/commit") + .queryParam("container", command.getContainerId()) + .queryParam("repo", command.getRepository()) + .queryParam("tag", command.getTag()) + .queryParam("m", command.getMessage()) + .queryParam("author", command.getAuthor()); webTarget = booleanQueryParam(webTarget, "pause", command.hasPauseEnabled()); diff --git a/src/main/java/com/github/dockerjava/core/exec/ExecCreateCmdExec.java b/src/main/java/com/github/dockerjava/core/exec/ExecCreateCmdExec.java index 2f0ca1c6f..e96397717 100644 --- a/src/main/java/com/github/dockerjava/core/exec/ExecCreateCmdExec.java +++ b/src/main/java/com/github/dockerjava/core/exec/ExecCreateCmdExec.java @@ -10,8 +10,7 @@ import com.github.dockerjava.core.MediaType; import com.github.dockerjava.core.WebTarget; -public class ExecCreateCmdExec extends AbstrSyncDockerCmdExec implements - ExecCreateCmd.Exec { +public class ExecCreateCmdExec extends AbstrSyncDockerCmdExec implements ExecCreateCmd.Exec { private static final Logger LOGGER = LoggerFactory.getLogger(ExecCreateCmdExec.class); diff --git a/src/main/java/com/github/dockerjava/core/exec/ResizeContainerCmdExec.java b/src/main/java/com/github/dockerjava/core/exec/ResizeContainerCmdExec.java new file mode 100644 index 000000000..cbea663fd --- /dev/null +++ b/src/main/java/com/github/dockerjava/core/exec/ResizeContainerCmdExec.java @@ -0,0 +1,30 @@ +package com.github.dockerjava.core.exec; + +import com.github.dockerjava.api.command.ResizeContainerCmd; +import com.github.dockerjava.core.DockerClientConfig; +import com.github.dockerjava.core.MediaType; +import com.github.dockerjava.core.WebTarget; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class ResizeContainerCmdExec extends AbstrSyncDockerCmdExec implements ResizeContainerCmd.Exec { + + private static final Logger LOGGER = LoggerFactory.getLogger(ResizeContainerCmdExec.class); + + public ResizeContainerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { + super(baseResource, dockerClientConfig); + } + + @Override + protected Void execute(ResizeContainerCmd command) { + WebTarget webResource = getBaseResource().path("/containers/{id}/resize") + .resolveTemplate("id", command.getContainerId()) + .queryParam("h", command.getHeight()) + .queryParam("w", command.getWidth()); + + LOGGER.trace("POST: {}", webResource); + webResource.request().accept(MediaType.APPLICATION_JSON).post(command); + + return null; + } +} diff --git a/src/main/java/com/github/dockerjava/core/exec/ResizeExecCmdExec.java b/src/main/java/com/github/dockerjava/core/exec/ResizeExecCmdExec.java new file mode 100644 index 000000000..3e0851d73 --- /dev/null +++ b/src/main/java/com/github/dockerjava/core/exec/ResizeExecCmdExec.java @@ -0,0 +1,31 @@ +package com.github.dockerjava.core.exec; + +import com.github.dockerjava.core.MediaType; +import com.github.dockerjava.core.WebTarget; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.github.dockerjava.api.command.ResizeExecCmd; +import com.github.dockerjava.core.DockerClientConfig; + +public class ResizeExecCmdExec extends AbstrSyncDockerCmdExec implements ResizeExecCmd.Exec { + + private static final Logger LOGGER = LoggerFactory.getLogger(ResizeExecCmdExec.class); + + public ResizeExecCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { + super(baseResource, dockerClientConfig); + } + + @Override + protected Void execute(ResizeExecCmd command) { + WebTarget webResource = getBaseResource().path("/exec/{id}/resize") + .resolveTemplate("id", command.getExecId()) + .queryParam("h", command.getHeight()) + .queryParam("w", command.getWidth()); + + LOGGER.trace("POST: {}", webResource); + webResource.request().accept(MediaType.APPLICATION_JSON).post(command); + + return null; + } +} diff --git a/src/main/java/com/github/dockerjava/jaxrs/JerseyDockerCmdExecFactory.java b/src/main/java/com/github/dockerjava/jaxrs/JerseyDockerCmdExecFactory.java index 96a747504..ceb2b4ef9 100644 --- a/src/main/java/com/github/dockerjava/jaxrs/JerseyDockerCmdExecFactory.java +++ b/src/main/java/com/github/dockerjava/jaxrs/JerseyDockerCmdExecFactory.java @@ -60,6 +60,8 @@ import com.github.dockerjava.api.command.RemoveSwarmNodeCmd; import com.github.dockerjava.api.command.RemoveVolumeCmd; import com.github.dockerjava.api.command.RenameContainerCmd; +import com.github.dockerjava.api.command.ResizeContainerCmd.Exec; +import com.github.dockerjava.api.command.ResizeExecCmd; import com.github.dockerjava.api.command.RestartContainerCmd; import com.github.dockerjava.api.command.SaveImageCmd; import com.github.dockerjava.api.command.SearchImagesCmd; @@ -424,11 +426,21 @@ public AttachContainerCmd.Exec createAttachContainerCmdExec() { return new AttachContainerCmdExec(getBaseResource(), getDockerClientConfig()); } + @Override + public Exec createResizeContainerCmdExec() { + return new ResizeContainerCmdExec(getBaseResource(), getDockerClientConfig()); + } + @Override public ExecStartCmd.Exec createExecStartCmdExec() { return new ExecStartCmdExec(getBaseResource(), getDockerClientConfig()); } + @Override + public ResizeExecCmd.Exec createResizeExecCmdExec() { + return new ResizeExecCmdExec(getBaseResource(), getDockerClientConfig()); + } + @Override public InspectExecCmd.Exec createInspectExecCmdExec() { return new InspectExecCmdExec(getBaseResource(), getDockerClientConfig()); diff --git a/src/main/java/com/github/dockerjava/jaxrs/ResizeContainerCmdExec.java b/src/main/java/com/github/dockerjava/jaxrs/ResizeContainerCmdExec.java new file mode 100644 index 000000000..ccd37511c --- /dev/null +++ b/src/main/java/com/github/dockerjava/jaxrs/ResizeContainerCmdExec.java @@ -0,0 +1,30 @@ +package com.github.dockerjava.jaxrs; + +import javax.ws.rs.client.WebTarget; +import javax.ws.rs.core.MediaType; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.github.dockerjava.api.command.ResizeContainerCmd; +import com.github.dockerjava.core.DockerClientConfig; + +public class ResizeContainerCmdExec extends AbstrSyncDockerCmdExec implements ResizeContainerCmd.Exec { + + private static final Logger LOGGER = LoggerFactory.getLogger(ResizeContainerCmdExec.class); + + public ResizeContainerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { + super(baseResource, dockerClientConfig); + } + + @Override + protected Void execute(ResizeContainerCmd command) { + WebTarget webResource = getBaseResource().path("/containers/{id}/resize").resolveTemplate("id", command.getContainerId()) + .queryParam("h", command.getHeight()).queryParam("w", command.getWidth()); + + LOGGER.trace("POST: {}", webResource); + webResource.request().accept(MediaType.APPLICATION_JSON).post(null).close(); + + return null; + } +} diff --git a/src/main/java/com/github/dockerjava/jaxrs/ResizeExecCmdExec.java b/src/main/java/com/github/dockerjava/jaxrs/ResizeExecCmdExec.java new file mode 100644 index 000000000..0b94cd003 --- /dev/null +++ b/src/main/java/com/github/dockerjava/jaxrs/ResizeExecCmdExec.java @@ -0,0 +1,30 @@ +package com.github.dockerjava.jaxrs; + +import javax.ws.rs.client.WebTarget; +import javax.ws.rs.core.MediaType; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.github.dockerjava.api.command.ResizeExecCmd; +import com.github.dockerjava.core.DockerClientConfig; + +public class ResizeExecCmdExec extends AbstrSyncDockerCmdExec implements ResizeExecCmd.Exec { + + private static final Logger LOGGER = LoggerFactory.getLogger(ResizeExecCmdExec.class); + + public ResizeExecCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { + super(baseResource, dockerClientConfig); + } + + @Override + protected Void execute(ResizeExecCmd command) { + WebTarget webResource = getBaseResource().path("/exec/{id}/resize").resolveTemplate("id", command.getExecId()) + .queryParam("h", command.getHeight()).queryParam("w", command.getWidth()); + + LOGGER.trace("POST: {}", webResource); + webResource.request().accept(MediaType.APPLICATION_JSON).post(null).close(); + + return null; + } +} diff --git a/src/main/java/com/github/dockerjava/netty/NettyDockerCmdExecFactory.java b/src/main/java/com/github/dockerjava/netty/NettyDockerCmdExecFactory.java index ecb40fa95..e7aa7e790 100644 --- a/src/main/java/com/github/dockerjava/netty/NettyDockerCmdExecFactory.java +++ b/src/main/java/com/github/dockerjava/netty/NettyDockerCmdExecFactory.java @@ -118,7 +118,6 @@ public void init(DockerClientConfig dockerClientConfig) { baseResource = new NettyWebTarget(channelProvider, host).path(dockerClientConfig.getApiVersion().asWebPathPart()); } - private DuplexChannel connect() { try { return connect(bootstrap); diff --git a/src/test/java/com/github/dockerjava/cmd/InfoCmdIT.java b/src/test/java/com/github/dockerjava/cmd/InfoCmdIT.java index b4f70fe19..4a50462da 100644 --- a/src/test/java/com/github/dockerjava/cmd/InfoCmdIT.java +++ b/src/test/java/com/github/dockerjava/cmd/InfoCmdIT.java @@ -29,7 +29,7 @@ public void infoTest() throws DockerException { // TODO extract this into a shared method if (dockerClient.listContainersCmd().withShowAll(true).exec().size() == 0) { CreateContainerResponse container = dockerClient.createContainerCmd(DEFAULT_IMAGE) - .withName("docker-java-itest-info") + .withName("docker-java-itest-info-" + dockerRule.getKind()) .withCmd("touch", "/test") .exec(); diff --git a/src/test/java/com/github/dockerjava/cmd/ResizeCmdIT.java b/src/test/java/com/github/dockerjava/cmd/ResizeCmdIT.java new file mode 100644 index 000000000..66e894ac1 --- /dev/null +++ b/src/test/java/com/github/dockerjava/cmd/ResizeCmdIT.java @@ -0,0 +1,59 @@ +package com.github.dockerjava.cmd; + +import static com.github.dockerjava.junit.DockerAssume.assumeNotSwarm; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.isEmptyString; +import static org.hamcrest.Matchers.not; + +import java.security.SecureRandom; + +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.github.dockerjava.api.command.CreateContainerResponse; +import com.github.dockerjava.api.command.ExecCreateCmdResponse; +import com.github.dockerjava.core.command.ExecStartResultCallback; + +public class ResizeCmdIT extends CmdIT { + private static final Logger LOG = LoggerFactory.getLogger(ResizeCmdIT.class); + + @Test + public void execResize() throws Exception { + assumeNotSwarm("no network in swarm", dockerRule); + + String containerName = "generated_" + dockerRule.getKind() + new SecureRandom().nextInt(); + + CreateContainerResponse container = dockerRule.getClient().createContainerCmd("busybox").withCmd("sh") + .withName(containerName).withTty(true).withStdinOpen(true).exec(); + LOG.info("Created container {}", container.toString()); + assertThat(container.getId(), not(isEmptyString())); + + dockerRule.getClient().startContainerCmd(container.getId()).exec(); + + ExecCreateCmdResponse execCreateCmdResponse = dockerRule.getClient().execCreateCmd(container.getId()) + .withAttachStdout(true).withTty(true).withCmd("/bin/sh").exec(); + dockerRule.getClient().execStartCmd(execCreateCmdResponse.getId()).exec( + new ExecStartResultCallback(System.out, System.err)).awaitCompletion(); + dockerRule.getClient().resizeExecCmd(execCreateCmdResponse.getId()).withSize(1024, 1024); + } + + @Test + public void containerResize() throws Exception { + assumeNotSwarm("no network in swarm", dockerRule); + + String containerName = "generated_" + dockerRule.getKind() + new SecureRandom().nextInt(); + + CreateContainerResponse container = dockerRule.getClient() + .createContainerCmd("busybox") + .withCmd("sh") + .withName(containerName) + .withTty(true) + .withStdinOpen(true) + .exec(); + LOG.info("Created container {}", container.toString()); + assertThat(container.getId(), not(isEmptyString())); + dockerRule.getClient().startContainerCmd(container.getId()).exec(); + dockerRule.getClient().resizeContainerCmd(container.getId()).withSize(1024, 1024).exec(); + } +} diff --git a/src/test/java/com/github/dockerjava/core/TestDockerCmdExecFactory.java b/src/test/java/com/github/dockerjava/core/TestDockerCmdExecFactory.java index eaddb0978..d4c6aaf9c 100644 --- a/src/test/java/com/github/dockerjava/core/TestDockerCmdExecFactory.java +++ b/src/test/java/com/github/dockerjava/core/TestDockerCmdExecFactory.java @@ -62,6 +62,8 @@ import com.github.dockerjava.api.command.RemoveSwarmNodeCmd; import com.github.dockerjava.api.command.RemoveVolumeCmd; import com.github.dockerjava.api.command.RenameContainerCmd; +import com.github.dockerjava.api.command.ResizeContainerCmd; +import com.github.dockerjava.api.command.ResizeExecCmd; import com.github.dockerjava.api.command.RestartContainerCmd; import com.github.dockerjava.api.command.SaveImageCmd; import com.github.dockerjava.api.command.SearchImagesCmd; @@ -273,11 +275,21 @@ public AttachContainerCmd.Exec createAttachContainerCmdExec() { return delegate.createAttachContainerCmdExec(); } + @Override + public ResizeContainerCmd.Exec createResizeContainerCmdExec() { + return delegate.createResizeContainerCmdExec(); + } + @Override public ExecStartCmd.Exec createExecStartCmdExec() { return delegate.createExecStartCmdExec(); } + @Override + public ResizeExecCmd.Exec createResizeExecCmdExec() { + return delegate.createResizeExecCmdExec(); + } + @Override public InspectExecCmd.Exec createInspectExecCmdExec() { return delegate.createInspectExecCmdExec(); diff --git a/src/test/java/com/github/dockerjava/junit/DockerRule.java b/src/test/java/com/github/dockerjava/junit/DockerRule.java index c178700cc..f1d2a5678 100644 --- a/src/test/java/com/github/dockerjava/junit/DockerRule.java +++ b/src/test/java/com/github/dockerjava/junit/DockerRule.java @@ -43,7 +43,8 @@ public DockerClient getClient() { if (nettyClient == null) { nettyClient = DockerClientBuilder.getInstance(config()) .withDockerCmdExecFactory((new NettyDockerCmdExecFactory()) - .withConnectTimeout(10 * 1000)) + .withConnectTimeout(10 * 1000) + .withReadTimeout(60 * 1000)) .build(); } @@ -52,7 +53,8 @@ public DockerClient getClient() { if (jerseyClient == null) { jerseyClient = DockerClientBuilder.getInstance(config()) .withDockerCmdExecFactory((new JerseyDockerCmdExecFactory()) - .withConnectTimeout(10 * 1000)) + .withConnectTimeout(10 * 1000) + .withReadTimeout(60 * 1000)) .build(); } return jerseyClient; diff --git a/src/test/resources/logback.xml b/src/test/resources/logback.xml index b4309b868..1758daa93 100644 --- a/src/test/resources/logback.xml +++ b/src/test/resources/logback.xml @@ -12,7 +12,7 @@ - +