Skip to content

Commit ecb631e

Browse files
author
Marcus Linke
committed
Fix TestDockerCmdExecFactory
1 parent 0815e2f commit ecb631e

File tree

3 files changed

+51
-44
lines changed

3 files changed

+51
-44
lines changed

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

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

3-
import com.github.dockerjava.api.DockerClient;
4-
import com.github.dockerjava.api.DockerException;
5-
import com.github.dockerjava.core.DockerClientImpl;
6-
import com.github.dockerjava.jaxrs.DockerClientBuilder;
7-
import com.github.dockerjava.jaxrs.TestDockerCmdExecFactory;
3+
import java.io.IOException;
4+
import java.io.InputStream;
5+
import java.io.StringWriter;
6+
import java.lang.reflect.Method;
7+
import java.net.DatagramSocket;
8+
import java.net.ServerSocket;
89

910
import org.apache.commons.io.IOUtils;
1011
import org.apache.commons.io.LineIterator;
@@ -13,14 +14,10 @@
1314
import org.testng.Assert;
1415
import org.testng.ITestResult;
1516

16-
import java.io.IOException;
17-
import java.io.InputStream;
18-
import java.io.StringWriter;
19-
import java.lang.reflect.Method;
20-
import java.net.DatagramSocket;
21-
import java.net.ServerSocket;
22-
import java.util.ArrayList;
23-
import java.util.List;
17+
import com.github.dockerjava.api.DockerClient;
18+
import com.github.dockerjava.api.DockerException;
19+
import com.github.dockerjava.jaxrs.DockerClientBuilder;
20+
import com.github.dockerjava.jaxrs.TestDockerCmdExecFactory;
2421

2522
public abstract class AbstractDockerClientTest extends Assert {
2623

@@ -29,10 +26,7 @@ public abstract class AbstractDockerClientTest extends Assert {
2926

3027
protected DockerClient dockerClient;
3128

32-
// protected List<String> tmpImgs;
33-
// protected List<String> tmpContainers;
34-
35-
private TestDockerCmdExecFactory dockerCmdExecFactory = new TestDockerCmdExecFactory();
29+
protected TestDockerCmdExecFactory dockerCmdExecFactory = new TestDockerCmdExecFactory();
3630

3731
public void beforeTest() {
3832
LOG.info("======================= BEFORETEST =======================");
@@ -57,40 +51,32 @@ public void afterTest() {
5751

5852

5953
public void beforeMethod(Method method) {
60-
// tmpContainers = new ArrayList<String>();
61-
// tmpImgs = new ArrayList<String>();
6254
LOG.info(String
6355
.format("################################## STARTING %s ##################################",
6456
method.getName()));
6557
}
6658

6759
public void afterMethod(ITestResult result) {
6860

69-
for (String container : dockerCmdExecFactory.getContainerIds()) {
61+
for (String container : dockerCmdExecFactory.getContainerNames()) {
7062
LOG.info("Cleaning up temporary container {}", container);
71-
try {
72-
dockerClient.stopContainerCmd(container).exec();
73-
dockerClient.killContainerCmd(container).exec();
74-
} catch (DockerException ignore) {
75-
//ignore.printStackTrace();
76-
}
7763

7864
try {
79-
dockerClient.removeContainerCmd(container).exec();
65+
dockerClient.removeContainerCmd(container).withForce().exec();
8066
} catch (DockerException ignore) {
8167
ignore.printStackTrace();
8268
}
8369
}
8470

85-
for (String image : dockerCmdExecFactory.getImagesIds()) {
86-
LOG.info("Cleaning up temporary image {}", image);
71+
for (String image : dockerCmdExecFactory.getImageNames()) {
72+
LOG.info("Cleaning up temporary image with {}", image);
8773
try {
88-
dockerClient.removeImageCmd(image).exec();
74+
dockerClient.removeImageCmd(image).withForce().exec();
8975
} catch (DockerException ignore) {
9076
ignore.printStackTrace();
9177
}
92-
}
93-
78+
}
79+
9480
LOG.info(
9581
"################################## END OF {} ##################################\n",
9682
result.getName());

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
import com.github.dockerjava.api.UnauthorizedException;
1515
import com.github.dockerjava.client.AbstractDockerClientTest;
1616
import com.github.dockerjava.core.DockerClientConfig;
17-
import com.github.dockerjava.core.DockerClientImpl;
1817
import com.github.dockerjava.jaxrs.DockerClientBuilder;
1918

2019
public class AuthCmdImplTest extends AbstractDockerClientTest {
@@ -47,7 +46,7 @@ public void testAuth() throws Exception {
4746
@Test
4847
public void testAuthInvalid() throws Exception {
4948
DockerClientConfig config = DockerClientConfig.createDefaultConfigBuilder().withPassword("garbage").build();
50-
DockerClient client = DockerClientBuilder.getInstance(config).build();
49+
DockerClient client = DockerClientBuilder.getInstance(config).withDockerCmdExecFactory(dockerCmdExecFactory).build();
5150

5251
try {
5352
client.authCmd().exec();

src/test/java/com/github/dockerjava/jaxrs/TestDockerCmdExecFactory.java

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package com.github.dockerjava.jaxrs;
22

3+
import java.io.InputStream;
4+
import java.security.SecureRandom;
35
import java.util.ArrayList;
46
import java.util.List;
57

8+
import com.github.dockerjava.api.command.BuildImageCmd;
69
import com.github.dockerjava.api.command.CreateContainerCmd;
710
import com.github.dockerjava.api.command.CreateContainerResponse;
811
import com.github.dockerjava.api.command.CreateImageCmd;
@@ -20,17 +23,17 @@
2023
*/
2124
public class TestDockerCmdExecFactory extends DockerCmdExecFactoryImpl {
2225

23-
private List<String> containerIds = new ArrayList<String>();
26+
private List<String> containerNames = new ArrayList<String>();
2427

25-
private List<String> imagesIds = new ArrayList<String>();
28+
private List<String> imageNames = new ArrayList<String>();
2629

2730
@Override
2831
public CreateContainerCmd.Exec createCreateContainerCmdExec() {
2932
return new CreateContainerCmdExec(getBaseResource()) {
3033
@Override
3134
public CreateContainerResponse exec(CreateContainerCmd command) {
3235
CreateContainerResponse createContainerResponse = super.exec(command);
33-
containerIds.add(createContainerResponse.getId());
36+
containerNames.add(createContainerResponse.getId());
3437
return createContainerResponse;
3538
}
3639
};
@@ -42,7 +45,7 @@ public RemoveContainerCmd.Exec createRemoveContainerCmdExec() {
4245
@Override
4346
public Void exec(RemoveContainerCmd command) {
4447
super.exec(command);
45-
containerIds.remove(command.getContainerId());
48+
containerNames.remove(command.getContainerId());
4649
return null;
4750
}
4851
};
@@ -54,31 +57,50 @@ public CreateImageCmd.Exec createCreateImageCmdExec() {
5457
@Override
5558
public CreateImageResponse exec(CreateImageCmd command) {
5659
CreateImageResponse createImageResponse = super.exec(command);
57-
imagesIds.add(createImageResponse.getId());
60+
imageNames.add(createImageResponse.getId());
5861
return createImageResponse;
5962
}
6063
};
6164
}
6265

66+
67+
6368
@Override
6469
public RemoveImageCmd.Exec createRemoveImageCmdExec() {
6570
return new RemoveImageCmdExec(getBaseResource()) {
6671
@Override
6772
public Void exec(RemoveImageCmd command) {
6873
super.exec(command);
69-
imagesIds.remove(command.getImageId());
74+
imageNames.remove(command.getImageId());
7075
return null;
7176
}
7277
};
7378
}
7479

75-
public List<String> getContainerIds() {
76-
return new ArrayList<String>(containerIds);
80+
@Override
81+
public BuildImageCmd.Exec createBuildImageCmdExec() {
82+
return new BuildImageCmdExec(getBaseResource()) {
83+
@Override
84+
public InputStream exec(BuildImageCmd command) {
85+
// can't detect image id here so tagging it
86+
String tag = command.getTag();
87+
if(tag == null || "".equals(tag.trim())) {
88+
tag = "" + new SecureRandom().nextInt(Integer.MAX_VALUE);
89+
command.withTag(tag);
90+
}
91+
InputStream inputStream = super.exec(command);
92+
imageNames.add(tag);
93+
return inputStream;
94+
}
95+
};
7796
}
7897

79-
public List<String> getImagesIds() {
80-
return new ArrayList<String>(imagesIds);
98+
public List<String> getContainerNames() {
99+
return new ArrayList<String>(containerNames);
81100
}
82101

102+
public List<String> getImageNames() {
103+
return new ArrayList<String>(imageNames);
104+
}
83105

84106
}

0 commit comments

Comments
 (0)