Skip to content

Commit deccfac

Browse files
committed
Add missing test
1 parent 6b1c5f7 commit deccfac

File tree

1 file changed

+49
-3
lines changed

1 file changed

+49
-3
lines changed

src/test/java/com/github/dockerjava/core/command/AttachContainerCmdImplTest.java

Lines changed: 49 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.github.dockerjava.core.command;
22

3+
import static java.util.concurrent.TimeUnit.SECONDS;
34
import static org.apache.commons.lang.StringUtils.isEmpty;
45
import static org.hamcrest.MatcherAssert.assertThat;
56
import static org.hamcrest.Matchers.containsString;
@@ -12,6 +13,7 @@
1213
import java.lang.reflect.Method;
1314
import java.util.concurrent.TimeUnit;
1415

16+
import com.github.dockerjava.api.command.InspectContainerResponse;
1517
import org.apache.commons.codec.binary.StringUtils;
1618
import org.testng.ITestResult;
1719
import org.testng.SkipException;
@@ -71,7 +73,51 @@ public void onNext(Frame frame) {
7173
};
7274

7375
dockerClient.attachContainerCmd(container.getId()).withStdErr(true).withStdOut(true).withFollowStream(true)
74-
.withLogs(true).exec(callback).awaitCompletion(30, TimeUnit.SECONDS);
76+
.withLogs(true).exec(callback).awaitCompletion(30, SECONDS);
77+
callback.close();
78+
79+
assertThat(callback.toString(), containsString(snippet));
80+
}
81+
82+
@Test
83+
public void attachContainerWithStdin() throws Exception {
84+
85+
String snippet = "hello world";
86+
87+
CreateContainerResponse container = dockerClient.createContainerCmd("busybox")
88+
.withCmd("/bin/sh", "-c", "sleep 1 && read line && echo $line")
89+
.withTty(false)
90+
.withStdinOpen(true)
91+
.exec();
92+
93+
LOG.info("Created container: {}", container.toString());
94+
assertThat(container.getId(), not(isEmptyString()));
95+
96+
dockerClient.startContainerCmd(container.getId()).exec();
97+
98+
Thread.sleep(SECONDS.toMillis(3)); //wait bash initialisation
99+
100+
InspectContainerResponse inspectContainerResponse = dockerClient.inspectContainerCmd(container.getId()).exec();
101+
102+
assertTrue(inspectContainerResponse.getState().getRunning());
103+
104+
AttachContainerTestCallback callback = new AttachContainerTestCallback() {
105+
@Override
106+
public void onNext(Frame frame) {
107+
assertEquals(frame.getStreamType(), StreamType.STDOUT);
108+
super.onNext(frame);
109+
}
110+
};
111+
112+
InputStream stdin = new ByteArrayInputStream((snippet + "\n").getBytes());
113+
114+
dockerClient.attachContainerCmd(container.getId())
115+
.withStdErr(true)
116+
.withStdOut(true)
117+
.withFollowStream(true)
118+
.withStdIn(stdin)
119+
.exec(callback)
120+
.awaitCompletion(15, SECONDS);
75121
callback.close();
76122

77123
assertThat(callback.toString(), containsString(snippet));
@@ -105,7 +151,7 @@ public void onNext(Frame frame) {
105151
.withStdOut(true)
106152
.withFollowStream(true)
107153
.exec(callback)
108-
.awaitCompletion(15, TimeUnit.SECONDS);
154+
.awaitCompletion(15, SECONDS);
109155
callback.close();
110156

111157
System.out.println("log: " + callback.toString());
@@ -138,7 +184,7 @@ public void onNext(Frame frame) {
138184
InputStream stdin = new ByteArrayInputStream("".getBytes());
139185

140186
dockerClient.attachContainerCmd(container.getId()).withStdErr(true).withStdOut(true).withFollowStream(true)
141-
.withLogs(true).withStdIn(stdin).exec(callback).awaitCompletion(30, TimeUnit.SECONDS);
187+
.withLogs(true).withStdIn(stdin).exec(callback).awaitCompletion(30, SECONDS);
142188
callback.close();
143189
}
144190

0 commit comments

Comments
 (0)