summaryrefslogtreecommitdiffstats
path: root/tenant-cd
diff options
context:
space:
mode:
authorJon Marius Venstad <jvenstad@yahoo-inc.com>2019-04-23 13:18:24 +0200
committerJon Marius Venstad <jvenstad@yahoo-inc.com>2019-06-06 13:03:28 +0200
commite1c84b011b03e30a43f141d8da8b1107a66d8a1a (patch)
tree341db583aab8ce93679f9e272bf897d14766f783 /tenant-cd
parent031f63ae546a60048d4e7967811ee4fdf4f49ef6 (diff)
Stash first part of HttpEndpoint
Diffstat (limited to 'tenant-cd')
-rw-r--r--tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/Query.java6
-rw-r--r--tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/TestConfig.java1
-rw-r--r--tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/http/HttpEndpoint.java79
3 files changed, 84 insertions, 2 deletions
diff --git a/tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/Query.java b/tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/Query.java
index 80dbfe4385a..e8b950c1fe8 100644
--- a/tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/Query.java
+++ b/tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/Query.java
@@ -51,4 +51,10 @@ public class Query {
.collect(toUnmodifiableMap(Map.Entry::getKey, Map.Entry::getValue)));
}
+ /** Returns the raw string representation of this query. */
+ public String rawQuery() { return rawQuery; }
+
+ /** Returns the parameters of this query. */
+ public Map<String, String> parameters() { return parameters; }
+
}
diff --git a/tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/TestConfig.java b/tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/TestConfig.java
index 9edb76cfe35..12b48600fbf 100644
--- a/tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/TestConfig.java
+++ b/tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/TestConfig.java
@@ -16,6 +16,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.stream.IntStream;
/**
* The place to obtain environment-dependent configuration for the current test run.
diff --git a/tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/http/HttpEndpoint.java b/tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/http/HttpEndpoint.java
index c736244e7a8..45b698e3808 100644
--- a/tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/http/HttpEndpoint.java
+++ b/tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/http/HttpEndpoint.java
@@ -1,9 +1,84 @@
package com.yahoo.vespa.tenant.cd.http;
+import com.yahoo.slime.Inspector;
+import com.yahoo.slime.JsonDecoder;
+import com.yahoo.slime.Slime;
+import com.yahoo.vespa.tenant.cd.Digest;
+import com.yahoo.vespa.tenant.cd.Feed;
+import com.yahoo.vespa.tenant.cd.Query;
+import com.yahoo.vespa.tenant.cd.Search;
+import com.yahoo.vespa.tenant.cd.Selection;
+import com.yahoo.vespa.tenant.cd.TestEndpoint;
+import com.yahoo.vespa.tenant.cd.Visit;
+import com.yahoo.vespa.tenant.cd.metrics.Metrics;
+
+import java.io.IOException;
+import java.net.URI;
import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+import java.time.Duration;
+import java.util.Objects;
+
+import static java.util.Objects.requireNonNull;
+
+public class HttpEndpoint implements TestEndpoint {
+
+ static final String metricsPath = "/state/v1/metrics";
+ static final String documentApiPath = "/document/v1";
+ static final String searchApiPath = "/search";
+
+ private final URI endpoint;
+ private final HttpClient client;
+
+ public HttpEndpoint(URI endpoint) {
+ this.endpoint = requireNonNull(endpoint);
+ this.client = HttpClient.newBuilder()
+ .sslContext(Security.sslContext())
+ .connectTimeout(Duration.ofSeconds(5))
+ .version(HttpClient.Version.HTTP_1_1)
+ .build();
+ }
+
+ @Override
+ public Digest digest(Feed feed) {
+ return null;
+ }
+
+ @Override
+ public Search search(Query query) {
+ try {
+ URI target = endpoint.resolve(searchApiPath).resolve("?" + query.rawQuery());
+ HttpRequest request = HttpRequest.newBuilder()
+ .timeout(Duration.ofSeconds(5))
+ .uri(target)
+ .build();
+ HttpResponse<byte[]> response = client.send(request, HttpResponse.BodyHandlers.ofByteArray());
+ if (response.statusCode() / 100 != 2)
+ throw new RuntimeException("Non-OK status code " + response.statusCode() + " at " + target +
+ ", with response \n" + new String(response.body()));
+
+ return toSearch(response.body());
+ }
+ catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ static Search toSearch(byte[] body) {
+ Inspector rootObject = new JsonDecoder().decode(new Slime(), body).get();
+ // TODO jvenstad
+ return new Search();
+ }
-public class HttpEndpoint {
+ @Override
+ public Visit visit(Selection selection) {
+ return null;
+ }
- HttpClient client = HttpClient.newBuilder().build();
+ @Override
+ public Metrics metrics() {
+ return null;
+ }
}