X Tutup
Skip to content

Commit f592918

Browse files
committed
Test for StartContainerCmd.withVolumesFrom()
1 parent 34bdbd9 commit f592918

File tree

3 files changed

+68
-6
lines changed

3 files changed

+68
-6
lines changed

src/main/java/com/github/dockerjava/api/model/VolumeBind.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,9 @@ public String getContainerPath() {
1616
public String getHostPath() {
1717
return hostPath;
1818
}
19+
20+
@Override
21+
public String toString() {
22+
return hostPath + ":" + containerPath;
23+
}
1924
}

src/test/java/com/github/dockerjava/client/AbstractDockerClientTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,18 @@
11
package com.github.dockerjava.client;
22

3+
import static org.hamcrest.MatcherAssert.assertThat;
4+
import static org.hamcrest.Matchers.contains;
5+
36
import com.github.dockerjava.api.DockerClient;
47
import com.github.dockerjava.api.DockerException;
8+
import com.github.dockerjava.api.command.InspectContainerResponse;
9+
import com.github.dockerjava.api.model.Volume;
10+
import com.github.dockerjava.api.model.VolumeBind;
511
import com.github.dockerjava.core.DockerClientBuilder;
612
import com.github.dockerjava.core.DockerClientConfig;
713
import com.github.dockerjava.core.TestDockerCmdExecFactory;
14+
import com.google.common.base.Joiner;
15+
816
import org.apache.commons.io.IOUtils;
917
import org.apache.commons.io.LineIterator;
1018
import org.slf4j.Logger;
@@ -18,6 +26,8 @@
1826
import java.lang.reflect.Method;
1927
import java.net.DatagramSocket;
2028
import java.net.ServerSocket;
29+
import java.util.ArrayList;
30+
import java.util.List;
2131

2232
public abstract class AbstractDockerClientTest extends Assert {
2333

@@ -158,4 +168,20 @@ public static boolean available(int port) {
158168
return false;
159169
}
160170

171+
/**
172+
* Asserts that {@link InspectContainerResponse#getVolumes()} (<code>.Volumes</code>)
173+
* has {@link VolumeBind}s for the given {@link Volume}s
174+
*/
175+
public static void assertContainerHasVolumes(InspectContainerResponse inspectContainerResponse,
176+
Volume ... expectedVolumes) {
177+
VolumeBind[] volumeBinds = inspectContainerResponse.getVolumes();
178+
LOG.info("Inspect .Volumes = [{}]", Joiner.on(", ").join(volumeBinds));
179+
180+
List<Volume> volumes = new ArrayList<Volume>();
181+
for (VolumeBind bind : volumeBinds) {
182+
volumes.add(new Volume(bind.getContainerPath()));
183+
}
184+
assertThat(volumes, contains(expectedVolumes));
185+
}
186+
161187
}

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

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,18 +84,49 @@ public void startContainerWithVolumes() throws DockerException {
8484
inspectContainerResponse = dockerClient.inspectContainerCmd(container
8585
.getId()).exec();
8686

87-
VolumeBind[] volumeBinds = inspectContainerResponse.getVolumes();
88-
List<String> volumes = new ArrayList<String>();
89-
for(VolumeBind bind :volumeBinds){
90-
volumes.add(bind.getContainerPath());
91-
}
92-
assertThat(volumes, contains(volume1.getPath(), volume2.getPath()));
87+
assertContainerHasVolumes(inspectContainerResponse, volume1, volume2);
9388

9489
assertThat(Arrays.asList(inspectContainerResponse.getVolumesRW()),
9590
contains(volume1, volume2));
9691

9792
}
9893

94+
@Test
95+
public void startContainerWithVolumesFrom() throws DockerException {
96+
97+
Volume volume1 = new Volume("/opt/webapp1");
98+
Volume volume2 = new Volume("/opt/webapp2");
99+
100+
String container1Name = UUID.randomUUID().toString();
101+
102+
CreateContainerResponse container1 = dockerClient
103+
.createContainerCmd("busybox").withCmd("sleep", "9999")
104+
.withName(container1Name).exec();
105+
LOG.info("Created container1 {}", container1.toString());
106+
107+
dockerClient.startContainerCmd(container1.getId()).withBinds(
108+
new Bind("/src/webapp1", volume1), new Bind("/src/webapp2", volume2)).exec();
109+
LOG.info("Started container1 {}", container1.toString());
110+
111+
InspectContainerResponse inspectContainerResponse1 = dockerClient.inspectContainerCmd(
112+
container1.getId()).exec();
113+
114+
assertContainerHasVolumes(inspectContainerResponse1, volume1, volume2);
115+
116+
117+
CreateContainerResponse container2 = dockerClient
118+
.createContainerCmd("busybox").withCmd("sleep", "9999").exec();
119+
LOG.info("Created container2 {}", container2.toString());
120+
121+
dockerClient.startContainerCmd(container2.getId()).withVolumesFrom(container1Name).exec();
122+
LOG.info("Started container2 {}", container2.toString());
123+
124+
InspectContainerResponse inspectContainerResponse2 = dockerClient
125+
.inspectContainerCmd(container2.getId()).exec();
126+
127+
assertContainerHasVolumes(inspectContainerResponse2, volume1, volume2);
128+
}
129+
99130
@Test
100131
public void startContainerWithDns() throws DockerException {
101132

0 commit comments

Comments
 (0)
X Tutup