diff --git a/README.md b/README.md
index 76075d2f..a51128f7 100644
--- a/README.md
+++ b/README.md
@@ -1,116 +1,3 @@
-# docker-java
-
-Java API client for [Docker](http://docs.docker.io/ "Docker")
-
-Supports a subset of the Docker Client API v1.11, Docker Server version 0.11
-
-Developer forum for [docker-java](https://groups.google.com/forum/?hl=de#!forum/docker-java-dev "docker-java")
-
-## Build with Maven
-
-###### Prerequisites:
-
-* Java 1.6+
-* Maven 3.0.5
-* Docker daemon running
-
-Maven will run tests during build process. Tests are using localhost instance of Docker, make sure that
-you have Docker running for tests to work or just turn off tests.
-
-If you don't have Docker running locally, you can skip tests with -DskipTests flag set to true:
-
- $ mvn clean install -DskipTests=true
-
-
-By default Docker server is using UNIX sockets for communication with the Docker client, however docker-java
-client uses TCP/IP to connect to the Docker server, so you will need to make sure that your Docker server is
-listening on TCP port. To allow Docker server to use TCP add the following line to /etc/default/docker
-
- DOCKER_OPTS="-H tcp://127.0.0.1:4243 -H unix:///var/run/docker.sock"
-
-More details setting up docket server can be found in official documentation: http://docs.docker.io/en/latest/use/basics/
-
-Now make sure that docker is up:
-
- $ docker -H tcp://127.0.0.1:4243 version
-
- Client version: 0.8.1
- Go version (client): go1.2
- Git commit (client): a1598d1
- Server version: 0.8.1
- Git commit (server): a1598d1
- Go version (server): go1.2
- Last stable version: 0.8.1
-
-Run build with tests:
-
- $ mvn clean install
-
-## Docker-Java maven dependency:
-
-
- com.kpelykh
- docker-java
- 0.8.1
-
-
-
-## Example code snippets:
-
- DockerClient dockerClient = new DockerClient("http://localhost:4243");
-
-###### Get Docker info:
-
- Info info = dockerClient.info();
- System.out.print(info);
-
-###### Search Docker repository:
-
- List dockerSearch = dockerClient.search("busybox");
- System.out.println("Search returned" + dockerSearch.toString());
-
-###### Create new Docker container, wait for its start and stop it:
-
- ContainerConfig containerConfig = new ContainerConfig();
- containerConfig.setImage("busybox");
- containerConfig.setCmd(new String[] {"touch", "/test"});
- ContainerCreateResponse container = dockerClient.createContainer(containerConfig);
-
- dockerClient.startContainer(container.id);
-
- dockerClient.waitContainer(container.id);
-
- dockerClient.stopContainer(container.id);
-
-
-##### Support for UNIX sockets:
-
- Support for UNIX socket should appear in docker-java pretty soon. I'm working on its integration.
-
-##### Docker Builder:
-
-To use Docker Builder, as described on page http://docs.docker.io/en/latest/use/builder/,
-user dockerClient.build(baseDir), where baseDir is a path to folder containing Dockerfile.
-
-
- File baseDir = new File("~/kpelykh/docker/netcat");
-
- ClientResponse response = dockerClient.build(baseDir);
-
- StringWriter logwriter = new StringWriter();
-
- try {
- LineIterator itr = IOUtils.lineIterator(response.getEntityInputStream(), "UTF-8");
- while (itr.hasNext()) {
- String line = itr.next();
- logwriter.write(line);
- LOG.info(line);
- }
- } finally {
- IOUtils.closeQuietly(response.getEntityInputStream());
- }
-
-
-
-For additional examples, please look at [DockerClientTest.java](https://github.com/kpelykh/docker-java/blob/master/src/test/java/com/kpelykh/docker/client/test/DockerClientTest.java "DockerClientTest.java")
+This project has moved to https://github.com/docker-java/docker-java
+--------------------------------------------------------------------
diff --git a/src/main/java/com/kpelykh/docker/client/Config.java b/src/main/java/com/kpelykh/docker/client/Config.java
new file mode 100644
index 00000000..f6e59d76
--- /dev/null
+++ b/src/main/java/com/kpelykh/docker/client/Config.java
@@ -0,0 +1,57 @@
+package com.kpelykh.docker.client;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.net.URI;
+import java.util.Properties;
+
+class Config {
+ URI url;
+ String version, username, password, email;
+
+ private Config() {
+ }
+
+ static Config createConfig() throws DockerException {
+ final Properties p = new Properties();
+
+ try {
+ p.load(Config.class.getResourceAsStream("/docker.io.properties"));
+ } catch (IOException e) {
+ throw new DockerException(e);
+ }
+
+ final File file = new File(System.getProperty("user.home"), ".docker.io.properties");
+
+ if (file.isFile()) {
+ try {
+ final FileInputStream in = new FileInputStream(file);
+ try {
+ p.load(in);
+ } finally {
+ in.close();
+ }
+ } catch (IOException e) {
+ throw new DockerException(e);
+ }
+ }
+
+ for (String s : new String[]{"url", "version", "username", "password", "email"}) {
+ final String key = "docker.io." + s;
+ if (System.getProperties().keySet().contains(key)) {
+ p.setProperty(key, System.getProperty(key));
+ }
+ }
+
+ final Config c = new Config();
+
+ c.url = URI.create(p.getProperty("docker.io.url"));
+ c.version = p.getProperty("docker.io.version");
+ c.username = p.getProperty("docker.io.username");
+ c.password = p.getProperty("docker.io.password");
+ c.email = p.getProperty("docker.io.email");
+
+ return c;
+ }
+}
diff --git a/src/main/java/com/kpelykh/docker/client/DockerClient.java b/src/main/java/com/kpelykh/docker/client/DockerClient.java
index 93d71d15..101d7209 100644
--- a/src/main/java/com/kpelykh/docker/client/DockerClient.java
+++ b/src/main/java/com/kpelykh/docker/client/DockerClient.java
@@ -52,22 +52,31 @@ public class DockerClient {
private static final Logger LOGGER = LoggerFactory.getLogger(DockerClient.class);
- private static DockerClient instance;
- private Client client;
+ private Client client;
private String restEndpointUrl;
private AuthConfig authConfig;
- public DockerClient() {
- this("http://localhost:4243");
+ public DockerClient() throws DockerException {
+ this(Config.createConfig());
}
- public DockerClient(String serverUrl) {
- restEndpointUrl = serverUrl + "/v1.11";
+ public DockerClient(String serverUrl) throws DockerException {
+ this(configWithServerUrl(serverUrl));
+ }
+
+ private static Config configWithServerUrl(String serverUrl) throws DockerException {
+ final Config c = Config.createConfig();
+ c.url = URI.create(serverUrl);
+ return c;
+ }
+
+ private DockerClient(Config config) {
+ restEndpointUrl = config.url + "/v" + config.version;
ClientConfig clientConfig = new DefaultClientConfig();
//clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
SchemeRegistry schemeRegistry = new SchemeRegistry();
- schemeRegistry.register(new Scheme("http", 4243, PlainSocketFactory.getSocketFactory()));
+ schemeRegistry.register(new Scheme("http", config.url.getPort(), PlainSocketFactory.getSocketFactory()));
schemeRegistry.register(new Scheme("https", 443, SSLSocketFactory.getSocketFactory()));
PoolingClientConnectionManager cm = new PoolingClientConnectionManager(schemeRegistry);
@@ -99,7 +108,7 @@ public void setCredentials(String username, String password, String email) {
}
authConfig = new AuthConfig();
authConfig.setUsername(username);
- authConfig.setPassword(password);
+ authConfig.setPassword(password);
authConfig.setEmail(email);
}
@@ -107,7 +116,6 @@ public void setCredentials(String username, String password, String email) {
* Authenticate with the server, useful for checking authentication.
*/
public void auth() throws DockerException {
- checkAuthConfig();
try {
client.resource(restEndpointUrl + "/auth")
.header("Content-Type", MediaType.APPLICATION_JSON)
@@ -126,18 +134,28 @@ private String registryAuth() throws DockerException {
}
}
- private AuthConfig authConfig() throws DockerException {
- checkAuthConfig();
- return authConfig;
- }
+ public AuthConfig authConfig() throws DockerException {
+ return authConfig != null
+ ? authConfig
+ : authConfigFromProperties();
+ }
- private void checkAuthConfig() throws DockerException {
- if (authConfig == null) {
- throw new DockerException("authentication credentials required");
- }
- }
+ private static AuthConfig authConfigFromProperties() throws DockerException {
+ final AuthConfig a = new AuthConfig();
- /**
+ a.setUsername(Config.createConfig().username);
+ a.setPassword(Config.createConfig().password);
+ a.setEmail(Config.createConfig().email);
+
+ if (a.getUsername() == null) {throw new IllegalStateException("username is null");}
+ if (a.getPassword() == null) {throw new IllegalStateException("password is null");}
+ if (a.getEmail() == null) {throw new IllegalStateException("email is null");}
+
+ return a;
+ }
+
+
+ /**
* * MISC API
* *
*/
@@ -172,6 +190,19 @@ public Version version() throws DockerException {
}
}
}
+
+
+ public int ping() throws DockerException {
+ WebResource webResource = client.resource(restEndpointUrl + "/_ping");
+
+ try {
+ LOGGER.trace("GET: {}", webResource);
+ ClientResponse resp = webResource.get(ClientResponse.class);
+ return resp.getStatus();
+ } catch (UniformInterfaceException exception) {
+ throw new DockerException(exception);
+ }
+ }
/**
@@ -215,6 +246,9 @@ public ClientResponse pull(String repository, String tag, String registry) throw
}
}
}
+
+
+
/**
* @return The output slurped into a string.
@@ -259,6 +293,36 @@ private String name(String name) {
return name.contains("/") ? name : authConfig.getUsername();
}
+ /**
+ * Tag an image into a repository
+ *
+ * @param image the local image to tag (either a name or an id)
+ * @param repository the repository to tag in
+ * @param tag any tag for this image
+ * @param force (not documented)
+ * @return the HTTP status code (201 for success)
+ */
+ public int tag(String image, String repository, String tag, boolean force) throws DockerException {
+ Preconditions.checkNotNull(image, "image was not specified");
+ Preconditions.checkNotNull(repository, "repository was not specified");
+ Preconditions.checkNotNull(tag, " tag was not provided");
+
+ MultivaluedMap params = new MultivaluedMapImpl();
+ params.add("repo", repository);
+ params.add("tag", tag);
+ params.add("force", String.valueOf(force));
+
+ WebResource webResource = client.resource(restEndpointUrl + "/images/" + image + "/tag").queryParams(params);
+
+ try {
+ LOGGER.trace("POST: {}", webResource);
+ ClientResponse resp = webResource.post(ClientResponse.class);
+ return resp.getStatus();
+ } catch (UniformInterfaceException exception) {
+ throw new DockerException(exception);
+ }
+ }
+
/**
* Create an image by importing the given stream of a tar file.
*
diff --git a/src/main/java/com/kpelykh/docker/client/model/ContainerConfig.java b/src/main/java/com/kpelykh/docker/client/model/ContainerConfig.java
index d0865ae0..27a1d7e3 100644
--- a/src/main/java/com/kpelykh/docker/client/model/ContainerConfig.java
+++ b/src/main/java/com/kpelykh/docker/client/model/ContainerConfig.java
@@ -285,7 +285,7 @@ public String toString() {
", privileged=" + privileged +
", workingDir='" + workingDir + '\'' +
", domainName='" + domainName + '\'' +
- ", onBuild='" + onBuild + '\'' +
+ ", onBuild='" + Arrays.toString(onBuild) + '\'' +
'}';
}
}
diff --git a/src/main/java/com/kpelykh/docker/client/model/ContainerInspectResponse.java b/src/main/java/com/kpelykh/docker/client/model/ContainerInspectResponse.java
index 555842e7..d686f9eb 100644
--- a/src/main/java/com/kpelykh/docker/client/model/ContainerInspectResponse.java
+++ b/src/main/java/com/kpelykh/docker/client/model/ContainerInspectResponse.java
@@ -33,7 +33,7 @@ public class ContainerInspectResponse {
private ContainerState state;
@JsonProperty("Image")
- private String image;
+ private String imageId;
@JsonProperty("NetworkSettings")
private NetworkSettings networkSettings;
@@ -119,12 +119,12 @@ public void setState(ContainerState state) {
this.state = state;
}
- public String getImage() {
- return image;
+ public String getImageId() {
+ return imageId;
}
- public void setImage(String image) {
- this.image = image;
+ public void setImageId(String image) {
+ this.imageId = image;
}
public NetworkSettings getNetworkSettings() {
diff --git a/src/main/java/com/kpelykh/docker/client/model/ImageInspectResponse.java b/src/main/java/com/kpelykh/docker/client/model/ImageInspectResponse.java
index a7b4409e..3514670c 100644
--- a/src/main/java/com/kpelykh/docker/client/model/ImageInspectResponse.java
+++ b/src/main/java/com/kpelykh/docker/client/model/ImageInspectResponse.java
@@ -22,7 +22,7 @@ public class ImageInspectResponse {
@JsonProperty("container_config") private ContainerConfig containerConfig;
- @JsonProperty("Size") private int size;
+ @JsonProperty("Size") private long size;
@JsonProperty("docker_version") private String dockerVersion;
@@ -76,11 +76,11 @@ public void setContainerConfig(ContainerConfig containerConfig) {
this.containerConfig = containerConfig;
}
- public int getSize() {
+ public long getSize() {
return size;
}
- public void setSize(int size) {
+ public void setSize(long size) {
this.size = size;
}
diff --git a/src/main/resources/docker.io.properties b/src/main/resources/docker.io.properties
new file mode 100644
index 00000000..0ce162bd
--- /dev/null
+++ b/src/main/resources/docker.io.properties
@@ -0,0 +1,2 @@
+docker.io.url=http://localhost:4243
+docker.io.version=1.11
\ No newline at end of file
diff --git a/src/test/java/com/kpelykh/docker/client/test/AbstractDockerClientTest.java b/src/test/java/com/kpelykh/docker/client/test/AbstractDockerClientTest.java
index eb9bcf73..d8313ca4 100644
--- a/src/test/java/com/kpelykh/docker/client/test/AbstractDockerClientTest.java
+++ b/src/test/java/com/kpelykh/docker/client/test/AbstractDockerClientTest.java
@@ -1,18 +1,17 @@
package com.kpelykh.docker.client.test;
-import java.io.IOException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-
+import com.kpelykh.docker.client.DockerClient;
+import com.kpelykh.docker.client.DockerException;
+import com.sun.jersey.api.client.ClientResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
import org.testng.ITestResult;
-import com.kpelykh.docker.client.DockerClient;
-import com.kpelykh.docker.client.DockerException;
-import com.sun.jersey.api.client.ClientResponse;
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
public abstract class AbstractDockerClientTest extends Assert {
@@ -31,8 +30,11 @@ public void beforeTest() throws DockerException {
LOG.info("Connecting to Docker server at " + url);
dockerClient = new DockerClient(url);
- LOG.info("Creating image 'busybox'");
- dockerClient.pull("busybox");
+ LOG.info("Pulling image 'busybox'");
+ // need to block until image is pulled completely
+ logResponseStream(dockerClient.pull("busybox"));
+
+
assertNotNull(dockerClient);
LOG.info("======================= END OF BEFORETEST =======================\n\n");
@@ -76,28 +78,15 @@ public void afterMethod(ITestResult result) {
result.getName());
}
- protected String logResponseStream(ClientResponse response) throws IOException {
- String responseString = DockerClient.asString(response);
+ protected String logResponseStream(ClientResponse response) {
+ String responseString;
+ try {
+ responseString = DockerClient.asString(response);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
LOG.info("Container log: {}", responseString);
return responseString;
}
-
- private String getProperty(String name) {
- String property = System.getProperty(name);
- if(property == null || property.isEmpty()) throw new RuntimeException("Need to configure '" + name + "' property to run the test. Use command line option -D"+ name +"=... to do so.");
- return property;
- }
-
- protected String getUsername() {
- return getProperty("docker.io.username");
- }
-
- protected String getPassword() {
- return getProperty("docker.io.password");
- }
-
- protected String getEmail() {
- return getProperty("docker.io.email");
- }
}
diff --git a/src/test/java/com/kpelykh/docker/client/test/DockerClientAuthTest.java b/src/test/java/com/kpelykh/docker/client/test/DockerClientAuthTest.java
index 6fe6e999..8c7fc4fa 100644
--- a/src/test/java/com/kpelykh/docker/client/test/DockerClientAuthTest.java
+++ b/src/test/java/com/kpelykh/docker/client/test/DockerClientAuthTest.java
@@ -1,25 +1,20 @@
package com.kpelykh.docker.client.test;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
+import com.kpelykh.docker.client.DockerException;
+import com.sun.jersey.api.client.UniformInterfaceException;
import org.hamcrest.Matchers;
import org.testng.ITestResult;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.AfterTest;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Test;
+import org.testng.annotations.*;
-import com.kpelykh.docker.client.DockerException;
-import com.sun.jersey.api.client.UniformInterfaceException;
+import java.lang.reflect.Method;
+
+import static org.hamcrest.MatcherAssert.assertThat;
public class DockerClientAuthTest extends AbstractDockerClientTest {
@BeforeTest
- public void beforeTest() throws DockerException {
+ public void beforeTest() throws DockerException {
super.beforeTest();
}
@AfterTest
@@ -36,21 +31,21 @@ public void beforeMethod(Method method) {
public void afterMethod(ITestResult result) {
super.afterMethod(result);
}
-
+
@Test
public void testAuth() throws Exception {
- dockerClient.setCredentials(getUsername(), getPassword(), getEmail());
dockerClient.auth();
}
@Test
public void testAuthInvalid() throws Exception {
- dockerClient.setCredentials(getUsername(), getPassword(), getEmail());
+ System.setProperty("docker.io.password", "garbage");
try {
dockerClient.auth();
+ fail();
} catch (DockerException e) {
assertThat(e.getCause(), Matchers.instanceOf(UniformInterfaceException.class));
- assertEquals(401, ((UniformInterfaceException) e.getCause()).getResponse().getStatus());
+ assertEquals(((UniformInterfaceException) e.getCause()).getResponse().getStatus(), 401);
}
}
}
diff --git a/src/test/java/com/kpelykh/docker/client/test/DockerClientTest.java b/src/test/java/com/kpelykh/docker/client/test/DockerClientTest.java
index 2267e766..f6af3823 100644
--- a/src/test/java/com/kpelykh/docker/client/test/DockerClientTest.java
+++ b/src/test/java/com/kpelykh/docker/client/test/DockerClientTest.java
@@ -25,10 +25,12 @@
import java.net.DatagramSocket;
import java.net.ServerSocket;
import java.util.List;
+import java.util.Random;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.LineIterator;
import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.math.RandomUtils;
import org.hamcrest.Matcher;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -151,6 +153,14 @@ public void testImages() throws DockerException {
@Test
public void testListContainers() throws DockerException {
+
+ String testImage = "hackmann/empty";
+
+ LOG.info("Pulling image 'hackmann/empty'");
+ // need to block until image is pulled completely
+ logResponseStream(dockerClient.pull(testImage));
+ tmpImgs.add(testImage);
+
List containers = dockerClient.listContainers(true);
assertThat(containers, notNullValue());
LOG.info("Container List: {}", containers);
@@ -158,18 +168,30 @@ public void testListContainers() throws DockerException {
int size = containers.size();
ContainerConfig containerConfig = new ContainerConfig();
- containerConfig.setImage("busybox");
+ containerConfig.setImage(testImage);
containerConfig.setCmd(new String[] { "echo" });
ContainerCreateResponse container1 = dockerClient
.createContainer(containerConfig);
+
assertThat(container1.getId(), not(isEmptyString()));
+
+ ContainerInspectResponse containerInspectResponse = dockerClient.inspectContainer(container1.getId());
+
+ assertThat(containerInspectResponse.getConfig().getImage(), is(equalTo(testImage)));
+
+
dockerClient.startContainer(container1.getId());
tmpContainers.add(container1.getId());
LOG.info("container id: " + container1.getId());
- List containers2 = dockerClient.listContainers(true);
+ List containers2 = dockerClient.listContainers(true);
+
+ for(Container container: containers2) {
+ LOG.info("listContainer: id=" + container.getId() +" image=" + container.getImage());
+ }
+
assertThat(size + 1, is(equalTo(containers2.size())));
Matcher matcher = hasItem(hasField("id", startsWith(container1.getId())));
assertThat(containers2, matcher);
@@ -179,12 +201,12 @@ public void testListContainers() throws DockerException {
assertThat(filteredContainers.size(), is(equalTo(1)));
for(Container container: filteredContainers) {
- LOG.info("container: " + container);
+ LOG.info("filteredContainer: " + container.getImage());
}
Container container2 = filteredContainers.get(0);
assertThat(container2.getCommand(), not(isEmptyString()));
- assertThat(container2.getImage(), equalTo("busybox:latest"));
+ assertThat(container2.getImage(), equalTo(testImage + ":latest"));
}
/*
@@ -232,7 +254,7 @@ public void testStartContainer() throws DockerException {
assertThat(containerInspectResponse.getId(),
startsWith(container.getId()));
- assertThat(containerInspectResponse.getImage(), not(isEmptyString()));
+ assertThat(containerInspectResponse.getImageId(), not(isEmptyString()));
assertThat(containerInspectResponse.getState(), is(notNullValue()));
assertThat(containerInspectResponse.getState().running, is(true));
@@ -549,6 +571,16 @@ public void testRemoveImage() throws DockerException, InterruptedException {
assertThat(containers, matcher);
}
+ @Test
+ public void testTagImage() throws DockerException, InterruptedException {
+ String tag = String.valueOf(RandomUtils.nextInt(Integer.MAX_VALUE));
+
+ Integer result = dockerClient.tag("busybox:latest", "docker-java/busybox", tag, false);
+ assertThat(result, equalTo(Integer.valueOf(201)));
+
+ dockerClient.removeImage("docker-java/busybox:" + tag);
+ }
+
/*
*
* ################ ## MISC TESTS ## ################
diff --git a/src/test/java/com/kpelykh/docker/client/test/DockerPushTest.java b/src/test/java/com/kpelykh/docker/client/test/DockerPushTest.java
index b5709f96..7e6d88a9 100644
--- a/src/test/java/com/kpelykh/docker/client/test/DockerPushTest.java
+++ b/src/test/java/com/kpelykh/docker/client/test/DockerPushTest.java
@@ -1,27 +1,20 @@
package com.kpelykh.docker.client.test;
-import static com.kpelykh.docker.client.DockerClient.asString;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.containsString;
-import static org.hamcrest.Matchers.isEmptyString;
-import static org.hamcrest.Matchers.not;
-
-import java.lang.reflect.Method;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.ITestResult;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.AfterTest;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Test;
-
import com.kpelykh.docker.client.DockerException;
import com.kpelykh.docker.client.model.CommitConfig;
import com.kpelykh.docker.client.model.ContainerConfig;
import com.kpelykh.docker.client.model.ContainerCreateResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testng.ITestResult;
+import org.testng.annotations.*;
+
+import java.lang.reflect.Method;
+
+import static com.kpelykh.docker.client.DockerClient.asString;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.*;
// delete here : https://index.docker.io/u/alexec/busybox/delete/
public class DockerPushTest extends AbstractDockerClientTest {
@@ -29,9 +22,12 @@ public class DockerPushTest extends AbstractDockerClientTest {
public static final Logger LOG = LoggerFactory
.getLogger(DockerPushTest.class);
+ String username;
+
@BeforeTest
public void beforeTest() throws DockerException {
super.beforeTest();
+ username = dockerClient.authConfig().getUsername();
}
@AfterTest
public void afterTest() {
@@ -47,10 +43,10 @@ public void beforeMethod(Method method) {
public void afterMethod(ITestResult result) {
super.afterMethod(result);
}
-
+
@Test
public void testPushLatest() throws Exception {
- setUpCredentials();
+
ContainerConfig containerConfig = new ContainerConfig();
containerConfig.setImage("busybox");
@@ -67,26 +63,22 @@ public void testPushLatest() throws Exception {
LOG.info("Commiting container: {}", container.toString());
CommitConfig commitConfig = new CommitConfig(container.getId());
- commitConfig.setRepo(getUsername() + "/busybox");
-
- String imageId = dockerClient
- .commit(commitConfig);
+
+ commitConfig.setRepo(username + "/busybox");
- logResponseStream(dockerClient.push(getUsername() + "/busybox"));
+ String imageId = dockerClient.commit(commitConfig);
+
+ logResponseStream(dockerClient.push(username + "/busybox"));
dockerClient.removeImage(imageId);
- assertThat(asString(dockerClient.pull(getUsername() + "/busybox")), not(containsString("404")));
+ assertThat(asString(dockerClient.pull(username + "/busybox")), not(containsString("404")));
}
@Test
public void testNotExistentImage() throws Exception {
- setUpCredentials();
- assertThat(logResponseStream(dockerClient.push(getUsername() + "/xxx")), containsString("error"));
- }
- private void setUpCredentials() {
- dockerClient.setCredentials(getUsername(), getPassword(), getEmail());
+ assertThat(logResponseStream(dockerClient.push(username + "/xxx")), containsString("error"));
}