From 0a2e5a9e487ab11589d94d2bff6e4303a13dd8a7 Mon Sep 17 00:00:00 2001 From: Christopher Dancy Date: Fri, 23 Sep 2016 20:50:10 -0400 Subject: [PATCH 1/2] Expose 'User' property on ExecCreateCmd (#707) --- .../dockerjava/api/command/ExecCreateCmd.java | 5 +++ .../core/command/ExecCreateCmdImpl.java | 14 +++++++ .../core/command/ExecCreateCmdImplTest.java | 2 +- .../core/command/ExecStartCmdImplTest.java | 39 ++++++++++++++----- 4 files changed, 49 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/github/dockerjava/api/command/ExecCreateCmd.java b/src/main/java/com/github/dockerjava/api/command/ExecCreateCmd.java index fe2329290..829ebf8ee 100644 --- a/src/main/java/com/github/dockerjava/api/command/ExecCreateCmd.java +++ b/src/main/java/com/github/dockerjava/api/command/ExecCreateCmd.java @@ -20,6 +20,9 @@ public interface ExecCreateCmd extends SyncDockerCmd { @CheckForNull Boolean hasTtyEnabled(); + @CheckForNull + String getUser(); + ExecCreateCmd withAttachStderr(Boolean attachStderr); ExecCreateCmd withAttachStdin(Boolean attachStdin); @@ -32,6 +35,8 @@ public interface ExecCreateCmd extends SyncDockerCmd { ExecCreateCmd withTty(Boolean tty); + ExecCreateCmd withUser(String user); + interface Exec extends DockerCmdSyncExec { } diff --git a/src/main/java/com/github/dockerjava/core/command/ExecCreateCmdImpl.java b/src/main/java/com/github/dockerjava/core/command/ExecCreateCmdImpl.java index 14da4626a..e155888ac 100644 --- a/src/main/java/com/github/dockerjava/core/command/ExecCreateCmdImpl.java +++ b/src/main/java/com/github/dockerjava/core/command/ExecCreateCmdImpl.java @@ -26,6 +26,9 @@ public class ExecCreateCmdImpl extends AbstrDockerCmd 0); } + + @Test(groups = "ignoreInCircleCi", expectedExceptions = NotFoundException.class) + public void execStartWithNonExistentUser() throws Exception { + String containerName = "generated_" + new SecureRandom().nextInt(); + + CreateContainerResponse container = dockerClient.createContainerCmd("busybox").withCmd("sleep", "9999") + .withName(containerName).exec(); + LOG.info("Created container {}", container.toString()); + assertThat(container.getId(), not(isEmptyString())); + + dockerClient.startContainerCmd(container.getId()).exec(); + + ExecCreateCmdResponse execCreateCmdResponse = dockerClient.execCreateCmd(container.getId()) + .withAttachStdout(true).withCmd("touch", "/execStartTest.log").withUser("NonExistentUser").exec(); + dockerClient.execStartCmd(execCreateCmdResponse.getId()).withDetach(false).withTty(true) + .exec(new ExecStartResultCallback(System.out, System.err)).awaitCompletion(); + + InputStream response = dockerClient.copyArchiveFromContainerCmd(container.getId(), "/execStartTest.log").exec(); + Boolean bytesAvailable = response.available() > 0; + assertTrue(bytesAvailable, "The file was not copied from the container."); + } } From 1c07d780763ef053d05f2d785d62f9037d947350 Mon Sep 17 00:00:00 2001 From: Christopher Dancy Date: Fri, 30 Sep 2016 10:12:35 -0400 Subject: [PATCH 2/2] Addressed @Kotsa comments. --- .../com/github/dockerjava/core/command/ExecCreateCmdImpl.java | 3 +++ .../github/dockerjava/core/command/ExecStartCmdImplTest.java | 4 +--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/github/dockerjava/core/command/ExecCreateCmdImpl.java b/src/main/java/com/github/dockerjava/core/command/ExecCreateCmdImpl.java index e155888ac..fc8bf1c0b 100644 --- a/src/main/java/com/github/dockerjava/core/command/ExecCreateCmdImpl.java +++ b/src/main/java/com/github/dockerjava/core/command/ExecCreateCmdImpl.java @@ -26,6 +26,9 @@ public class ExecCreateCmdImpl extends AbstrDockerCmd 0; - assertTrue(bytesAvailable, "The file was not copied from the container."); + dockerClient.copyArchiveFromContainerCmd(container.getId(), "/execStartTest.log").exec(); } }