diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..969c98a5 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,2 @@ +language: java +script: mvn verify diff --git a/README.md b/README.md index 24cfc9ad..10874009 100644 --- a/README.md +++ b/README.md @@ -22,13 +22,13 @@ By default Docker server is using UNIX sockets for communication with the Docker 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" + DOCKER_OPTS="-H tcp://127.0.0.1:2375 -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 + $ docker -H tcp://127.0.0.1:2375 version Client version: 0.8.1 Go version (client): go1.2 @@ -53,7 +53,7 @@ Run build with tests: ## Example code snippets: - DockerClient dockerClient = new DockerClient("http://localhost:4243"); + DockerClient dockerClient = new DockerClient("http://localhost:2375"); ###### Get Docker info: @@ -114,7 +114,7 @@ For additional examples, please look at [DockerClientTest.java](https://github.c There are a couple of configuration items, all of which have sensible defaults: -* `url` The Docker URL, e.g. `http://localhost:4243`. +* `url` The Docker URL, e.g. `http://localhost:2375`. * `version` The API version, e.g. `1.11`. * `username` Your repository username (required to push containers). * `password` Your repository password. @@ -125,7 +125,7 @@ There are three ways to configure, in descending order of precedence: ##### Programatic: In your application, e.g. - DockerClient docker = new DockerClient("http://localhost:4243"); + DockerClient docker = new DockerClient("http://localhost:2375"); docker.setCredentials("dockeruser", "ilovedocker", "dockeruser@github.com");` ##### System Properties: @@ -141,5 +141,5 @@ In `$HOME/.docker.io.properties`, e.g.: ##### Class Path In the class path at `/docker.io.properties`, e.g.: - docker.io.url=http://localhost:4243 + docker.io.url=http://localhost:2375 docker.io.version=1.11 diff --git a/pom.xml b/pom.xml index 3de239d1..15c85bfb 100644 --- a/pom.xml +++ b/pom.xml @@ -1,5 +1,4 @@ - + 4.0.0 @@ -8,10 +7,10 @@ 7 - com.kpelykh + com.alexecollins docker-java jar - 0.8.2-SNAPSHOT + 0.8.11-SNAPSHOT docker-java https://github.com/kpelykh/docker-java @@ -26,9 +25,10 @@ - scm:git:git@github.com:kpelykh/docker-java.git - git@github.com:kpelykh/docker-java.git - scm:git:git@github.com:kpelykh/docker-java.git + scm:git:git@github.com:alexec/docker-java.git + git@github.com:alexec/docker-java.git + scm:git:git@github.com:alexec/docker-java.git + HEAD @@ -40,7 +40,6 @@ - true UTF-8 true @@ -73,7 +72,7 @@ 2.2 2.3.1 - 2.3.1 + 2.5 2.8.1 2.5.1 1.7 @@ -249,16 +248,6 @@ - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - - ${skipTests} - - - - org.codehaus.mojo cobertura-maven-plugin @@ -302,4 +291,26 @@ + + + run-its + + + + maven-failsafe-plugin + 2.17 + + + + integration-test + verify + + + + + + + + + diff --git a/src/main/java/com/kpelykh/docker/client/DockerClient.java b/src/main/java/com/kpelykh/docker/client/DockerClient.java index 7bba645f..633395df 100644 --- a/src/main/java/com/kpelykh/docker/client/DockerClient.java +++ b/src/main/java/com/kpelykh/docker/client/DockerClient.java @@ -64,9 +64,19 @@ 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); + public DockerClient(String serverUrl, String version) throws DockerException { + this(configWithServerUrlAndVersion(serverUrl, version)); + } + + private static Config configWithServerUrl(String serverUrl) throws DockerException { + final Config c = Config.createConfig(); + c.url = URI.create(serverUrl); + return c; + } + + private static Config configWithServerUrlAndVersion(String serverUrl, String version) throws DockerException { + final Config c = configWithServerUrl(serverUrl); + c.version = version; return c; } @@ -93,7 +103,6 @@ private DockerClient(Config config) { //client = new UnixSocketClient(clientConfig); client.addFilter(new JsonClientFilter()); - client.addFilter(new LoggingFilter()); } public void setCredentials(String username, String password, String email) { diff --git a/src/main/java/com/kpelykh/docker/client/model/BoundHostVolumes.java b/src/main/java/com/kpelykh/docker/client/model/BoundHostVolumes.java index 9a912439..fbc165c1 100644 --- a/src/main/java/com/kpelykh/docker/client/model/BoundHostVolumes.java +++ b/src/main/java/com/kpelykh/docker/client/model/BoundHostVolumes.java @@ -19,12 +19,19 @@ package com.kpelykh.docker.client.model; import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -32,6 +39,7 @@ * */ @JsonSerialize(using=BoundHostVolumes.Serializer.class) +@JsonDeserialize(using=BoundHostVolumes.Deserializer.class) public class BoundHostVolumes { private static final String[] STRING_ARRAY = new String[0]; private final String[] dests, binds; @@ -89,4 +97,71 @@ public void serialize(final BoundHostVolumes volumes, final JsonGenerator jg, fi volumes.writeVolumes(jg); } } + + public static class Deserializer extends JsonDeserializer { + @Override + public BoundHostVolumes deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { + BoundHostVolumes volumes = null; + /* + boolean started = false; + String name, map; + ArrayList specs = new ArrayList(); + + while ( !jsonParser.isClosed() ) { + JsonToken token = jsonParser.nextToken(); + if ( token != null ) { + System.out.println( token ); + if ( !started ) { + if ( JsonToken.START_OBJECT.equals(token) ) { + started = true; + } + else if ( JsonToken.VALUE_NULL.equals(token) ) { + specs = null; + break; + } + } + else { + if ( JsonToken.FIELD_NAME.equals(token) ) { + name = jsonParser.getCurrentName(); + specs.add( name ); + token = jsonParser.nextToken(); + if ( JsonToken.START_OBJECT.equals(token) ) { + jsonParser.skipChildren(); + } + } + else if ( JsonToken.END_OBJECT.equals(token) ) { + break; + } + } + } + else { + break; + } + } + + if ( specs != null ) { + volumes = new BoundHostVolumes( specs ); + } + */ + while ( !jsonParser.isClosed() ) { + JsonToken token = jsonParser.getCurrentToken(); + if (token != null) { + if (JsonToken.START_OBJECT.equals(token) || JsonToken.START_ARRAY.equals(token)) { + jsonParser.skipChildren(); + break; + } + else if ( JsonToken.END_OBJECT.equals(token) || JsonToken.END_ARRAY.equals(token) ) { + break; + } + else { + System.out.println( "Unexpected volume object token: " + token + ", " + + "name=" + jsonParser.getCurrentName() ); + jsonParser.nextToken(); + } + } + } + volumes = new BoundHostVolumes( new ArrayList() ); + return volumes; + } + } } diff --git a/src/main/resources/docker.io.properties b/src/main/resources/docker.io.properties index 0ce162bd..b154e876 100644 --- a/src/main/resources/docker.io.properties +++ b/src/main/resources/docker.io.properties @@ -1,2 +1,2 @@ -docker.io.url=http://localhost:4243 +docker.io.url=http://localhost:2375 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/AbstractDockerClientIT.java similarity index 95% rename from src/test/java/com/kpelykh/docker/client/test/AbstractDockerClientTest.java rename to src/test/java/com/kpelykh/docker/client/test/AbstractDockerClientIT.java index d8313ca4..af22d2de 100644 --- a/src/test/java/com/kpelykh/docker/client/test/AbstractDockerClientTest.java +++ b/src/test/java/com/kpelykh/docker/client/test/AbstractDockerClientIT.java @@ -13,10 +13,10 @@ import java.util.ArrayList; import java.util.List; -public abstract class AbstractDockerClientTest extends Assert { +public abstract class AbstractDockerClientIT extends Assert { public static final Logger LOG = LoggerFactory - .getLogger(AbstractDockerClientTest.class); + .getLogger(AbstractDockerClientIT.class); protected DockerClient dockerClient; @@ -26,7 +26,7 @@ public abstract class AbstractDockerClientTest extends Assert { public void beforeTest() throws DockerException { LOG.info("======================= BEFORETEST ======================="); - String url = System.getProperty("docker.url", "http://localhost:4243"); + String url = System.getProperty("docker.url", "http://localhost:2375"); LOG.info("Connecting to Docker server at " + url); dockerClient = new DockerClient(url); diff --git a/src/test/java/com/kpelykh/docker/client/test/DockerClientAuthTest.java b/src/test/java/com/kpelykh/docker/client/test/DockerClientAuthIT.java similarity index 94% rename from src/test/java/com/kpelykh/docker/client/test/DockerClientAuthTest.java rename to src/test/java/com/kpelykh/docker/client/test/DockerClientAuthIT.java index 8c7fc4fa..3ccc6e6a 100644 --- a/src/test/java/com/kpelykh/docker/client/test/DockerClientAuthTest.java +++ b/src/test/java/com/kpelykh/docker/client/test/DockerClientAuthIT.java @@ -11,7 +11,7 @@ import static org.hamcrest.MatcherAssert.assertThat; -public class DockerClientAuthTest extends AbstractDockerClientTest { +public class DockerClientAuthIT extends AbstractDockerClientIT { @BeforeTest public void beforeTest() throws DockerException { diff --git a/src/test/java/com/kpelykh/docker/client/test/DockerClientTest.java b/src/test/java/com/kpelykh/docker/client/test/DockerClientIT.java similarity index 94% rename from src/test/java/com/kpelykh/docker/client/test/DockerClientTest.java rename to src/test/java/com/kpelykh/docker/client/test/DockerClientIT.java index ccf09ea9..abb2e0cc 100644 --- a/src/test/java/com/kpelykh/docker/client/test/DockerClientTest.java +++ b/src/test/java/com/kpelykh/docker/client/test/DockerClientIT.java @@ -1,22 +1,17 @@ package com.kpelykh.docker.client.test; -import static ch.lambdaj.Lambda.filter; -import static ch.lambdaj.Lambda.selectUnique; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.endsWith; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.greaterThan; -import static org.hamcrest.Matchers.hasItem; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.isEmptyString; -import static org.hamcrest.Matchers.lessThan; -import static org.hamcrest.Matchers.lessThanOrEqualTo; -import static org.hamcrest.Matchers.not; -import static org.hamcrest.Matchers.notNullValue; -import static org.hamcrest.Matchers.nullValue; -import static org.hamcrest.Matchers.startsWith; -import static org.testinfected.hamcrest.jpa.HasFieldWithValue.hasField; +import com.kpelykh.docker.client.DockerException; +import com.kpelykh.docker.client.model.*; +import com.sun.jersey.api.client.ClientResponse; +import org.apache.commons.io.IOUtils; +import org.apache.commons.io.LineIterator; +import org.apache.commons.lang.StringUtils; +import org.hamcrest.Matcher; +import org.hamcrest.Matchers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.testng.ITestResult; +import org.testng.annotations.*; import java.io.File; import java.io.IOException; @@ -26,42 +21,20 @@ import java.net.ServerSocket; import java.util.List; -import org.apache.commons.io.IOUtils; -import org.apache.commons.io.LineIterator; -import org.apache.commons.lang.StringUtils; -import org.hamcrest.Matcher; -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.ChangeLog; -import com.kpelykh.docker.client.model.CommitConfig; -import com.kpelykh.docker.client.model.Container; -import com.kpelykh.docker.client.model.ContainerConfig; -import com.kpelykh.docker.client.model.ContainerCreateResponse; -import com.kpelykh.docker.client.model.ContainerInspectResponse; -import com.kpelykh.docker.client.model.Image; -import com.kpelykh.docker.client.model.ImageInspectResponse; -import com.kpelykh.docker.client.model.Info; -import com.kpelykh.docker.client.model.Ports; -import com.kpelykh.docker.client.model.SearchItem; -import com.kpelykh.docker.client.model.Version; -import com.sun.jersey.api.client.ClientResponse; +import static ch.lambdaj.Lambda.filter; +import static ch.lambdaj.Lambda.selectUnique; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.*; +import static org.testinfected.hamcrest.jpa.HasFieldWithValue.hasField; /** * Unit test for DockerClient. * * @author Konstantin Pelykh (kpelykh@gmail.com) */ -public class DockerClientTest extends AbstractDockerClientTest { +public class DockerClientIT extends AbstractDockerClientIT { public static final Logger LOG = LoggerFactory - .getLogger(DockerClientTest.class); + .getLogger(DockerClientIT.class); @BeforeTest public void beforeTest() throws DockerException { diff --git a/src/test/java/com/kpelykh/docker/client/test/DockerPushTest.java b/src/test/java/com/kpelykh/docker/client/test/DockerPushIT.java similarity index 95% rename from src/test/java/com/kpelykh/docker/client/test/DockerPushTest.java rename to src/test/java/com/kpelykh/docker/client/test/DockerPushIT.java index 7e6d88a9..574d2271 100644 --- a/src/test/java/com/kpelykh/docker/client/test/DockerPushTest.java +++ b/src/test/java/com/kpelykh/docker/client/test/DockerPushIT.java @@ -17,10 +17,10 @@ import static org.hamcrest.Matchers.*; // delete here : https://index.docker.io/u/alexec/busybox/delete/ -public class DockerPushTest extends AbstractDockerClientTest { +public class DockerPushIT extends AbstractDockerClientIT { public static final Logger LOG = LoggerFactory - .getLogger(DockerPushTest.class); + .getLogger(DockerPushIT.class); String username;