Skip to content

Commit 92aa1bb

Browse files
committed
Updated test.
1 parent 0922068 commit 92aa1bb

File tree

4 files changed

+53
-11
lines changed

4 files changed

+53
-11
lines changed

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

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.github.dockerjava.api.DockerClient;
44
import com.github.dockerjava.api.NotFoundException;
5+
import com.github.dockerjava.api.model.Image;
56
import org.slf4j.Logger;
67
import org.slf4j.LoggerFactory;
78

@@ -32,16 +33,18 @@ public void open() throws Exception {
3233
.exec()
3334
.close();
3435

35-
repository = dockerClient
36+
Image lastCreatedImage = dockerClient
3637
.listImagesCmd()
3738
.exec()
38-
.get(0)
39+
.get(0);
40+
41+
repository = lastCreatedImage
3942
.getRepoTags()[0];
4043

41-
LOGGER.info("created {}", repository);
44+
LOGGER.info("created {} {}", lastCreatedImage.getId(), repository);
4245

4346
containerId = dockerClient
44-
.createContainerCmd(repository)
47+
.createContainerCmd(lastCreatedImage.getId())
4548
.exec()
4649
.getId();
4750

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

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.testng.annotations.BeforeTest;
1111
import org.testng.annotations.Test;
1212

13+
import java.io.IOException;
1314
import java.io.InputStream;
1415

1516
@Test(groups = "integration")
@@ -41,20 +42,52 @@ public void afterTest() {
4142
}
4243

4344
@Test
44-
public void canCloseFrameReaderAndReadExpectedLinens() throws Exception {
45+
public void canCloseFrameReaderAndReadExpectedLines() throws Exception {
4546

46-
InputStream log = dockerClient
47+
try (FrameReader reader = new FrameReader(getLoggerStream())) {
48+
assertEquals(reader.readFrame(), new Frame(StreamType.STDOUT, String.format("to stdout%n").getBytes()));
49+
assertEquals(reader.readFrame(), new Frame(StreamType.STDERR, String.format("to stderr%n").getBytes()));
50+
assertNull(reader.readFrame());
51+
}
52+
}
53+
54+
private InputStream getLoggerStream() {
55+
return dockerClient
4756
.logContainerCmd(dockerfileFixture.getContainerId())
4857
.withStdOut()
4958
.withStdErr()
50-
.withFollowStream()
5159
.withTailAll()
60+
.withTail(10)
61+
.withFollowStream()
5262
.exec();
63+
}
5364

54-
try (FrameReader reader = new FrameReader(log)) {
55-
assertEquals(reader.readFrame(), new Frame(StreamType.STDOUT, String.format("to stdout%n").getBytes()));
56-
assertEquals(reader.readFrame(), new Frame(StreamType.STDERR, String.format("to stderr%n").getBytes()));
57-
assertNull(reader.readFrame());
65+
@Test
66+
public void canLogInOneThreadAndExecuteCommandsInAnother() throws Exception {
67+
68+
Thread thread = new Thread(new Runnable() {
69+
@Override
70+
public void run() {
71+
try {
72+
try (FrameReader reader = new FrameReader(getLoggerStream())) {
73+
//noinspection StatementWithEmptyBody
74+
while (reader.readFrame() != null) {
75+
// nop
76+
}
77+
}
78+
} catch (IOException e) {
79+
throw new RuntimeException(e);
80+
}
81+
}
82+
});
83+
84+
thread.start();
85+
86+
try (DockerfileFixture busyboxDockerfile = new DockerfileFixture(dockerClient, "busyboxDockerfile")) {
87+
busyboxDockerfile.open();
5888
}
89+
90+
thread.join();
91+
5992
}
6093
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
FROM busybox:latest
2+
3+
CMD ["cat"]

src/test/resources/frameReaderDockerfile/Dockerfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@ FROM busybox:latest
33
# log to stdout and stderr so we can make sure logging with FrameReader works
44

55
RUN echo '#! /bin/sh' > cmd.sh
6+
RUN echo 'sleep 1' >> cmd.sh
67
RUN echo 'echo "to stdout"' >> cmd.sh
78
RUN echo 'echo "to stderr" > /dev/stderr' >> cmd.sh
9+
# block for ever
10+
RUN echo 'cat' >> cmd.sh
811
RUN chmod +x cmd.sh
912

1013
CMD ["./cmd.sh"]

0 commit comments

Comments
 (0)