From 27a9d3a333c9778eb6b01e038193bd353b29a8ad Mon Sep 17 00:00:00 2001 From: amihaiemil Date: Sun, 11 Mar 2018 21:28:58 +0200 Subject: [PATCH] #36 /_ping implemented + puzzle --- .../com/amihaiemil/docker/LocalDocker.java | 6 ++++- .../java/com/amihaiemil/docker/RtDocker.java | 22 +++++++++++----- .../docker/LocalDockerTestCase.java | 26 ++++++++----------- 3 files changed, 32 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/amihaiemil/docker/LocalDocker.java b/src/main/java/com/amihaiemil/docker/LocalDocker.java index c4ffd457..90e7ff26 100644 --- a/src/main/java/com/amihaiemil/docker/LocalDocker.java +++ b/src/main/java/com/amihaiemil/docker/LocalDocker.java @@ -26,6 +26,7 @@ package com.amihaiemil.docker; import java.io.File; +import java.net.URI; /** * Local Docker API. Use this when you want to communicate with the local @@ -57,7 +58,10 @@ public LocalDocker(final File unixSocket){ * @param version API version (e.g. v1.30). */ public LocalDocker(final File unixSocket, final String version){ - super(new UnixHttpClient(unixSocket)); + super( + new UnixHttpClient(unixSocket), + URI.create("unix://localhost:80/" + version) + ); } } diff --git a/src/main/java/com/amihaiemil/docker/RtDocker.java b/src/main/java/com/amihaiemil/docker/RtDocker.java index 58e70d15..aa83dee1 100644 --- a/src/main/java/com/amihaiemil/docker/RtDocker.java +++ b/src/main/java/com/amihaiemil/docker/RtDocker.java @@ -25,9 +25,12 @@ */ package com.amihaiemil.docker; +import org.apache.http.HttpResponse; +import org.apache.http.HttpStatus; import org.apache.http.client.HttpClient; - +import org.apache.http.client.methods.HttpGet; import java.io.IOException; +import java.net.URI; /** * Restful Docker. @@ -36,9 +39,6 @@ * @since 0.0.1 * @todo #11:30min Implement RemoteDocker which will make the requests over * a tcp socket and TLS if certificates are provided. - * @todo #32:30min Reimplement ping() with the new HttpClient architecture. - * It should create an HttpGet method and send it with the encapsulated - * client. */ abstract class RtDocker implements Docker { @@ -47,17 +47,27 @@ abstract class RtDocker implements Docker { */ private final HttpClient client; + /** + * Base URI.. + */ + private final URI baseUri; + /** * Ctor. * @param client Given HTTP Client. + * @param baseUri Base URI. */ - RtDocker(final HttpClient client) { + RtDocker(final HttpClient client, final URI baseUri) { this.client = client; + this.baseUri = baseUri; } @Override public final boolean ping() throws IOException { - return true; + final HttpResponse response = this.client.execute( + new HttpGet(this.baseUri.toString() + "/_ping") + ); + return response.getStatusLine().getStatusCode() == HttpStatus.SC_OK; } @Override diff --git a/src/test/java/com/amihaiemil/docker/LocalDockerTestCase.java b/src/test/java/com/amihaiemil/docker/LocalDockerTestCase.java index e0382bb4..34cf9704 100644 --- a/src/test/java/com/amihaiemil/docker/LocalDockerTestCase.java +++ b/src/test/java/com/amihaiemil/docker/LocalDockerTestCase.java @@ -36,28 +36,24 @@ * @author Mihai Andronache (amihaiemil@gmail.com) * @version $Id$ * @since 0.0.1 + * @todo #39:1h Implement a unix socket server so we can also unit + * test the calls made with UnixHttpClient. The user should be able + * to specify what response it expected with each request to a certain + * path. */ public final class LocalDockerTestCase { /** - * LocalDocker can be instantiated with the unix:// scheme. + * LocalDocker can be instantiated. */ @Test - public void canInstantiateWithScheme() { - final Docker docker = new LocalDocker( - new File("/var/run/docker.sock") + public void canBeInstantiate() { + MatcherAssert.assertThat( + new LocalDocker( + new File("/var/run/docker.sock") + ), + Matchers.notNullValue() ); - MatcherAssert.assertThat(docker, Matchers.notNullValue()); } - /** - * LocalDocker can be instantiated without the unix:// scheme. - */ - @Test - public void canInstantiateWithoutScheme() { - final Docker docker = new LocalDocker( - new File("/var/run/docker.sock") - ); - MatcherAssert.assertThat(docker, Matchers.notNullValue()); - } }