summaryrefslogtreecommitdiffstats
path: root/tenant-cd
diff options
context:
space:
mode:
authorJon Marius Venstad <jvenstad@yahoo-inc.com>2019-06-13 14:39:53 +0200
committerJon Marius Venstad <jvenstad@yahoo-inc.com>2019-06-13 14:39:53 +0200
commit1e74107ce3a0781c6250473a4874c2d19123d23e (patch)
treebf5969a7ac4dba40a78da7fc9253554e09085244 /tenant-cd
parent17579280e419347d76ff950ebac88844c27a4d8e (diff)
Implement HttpDeployment, allowing the most basic of testing to commence
Diffstat (limited to 'tenant-cd')
-rw-r--r--tenant-cd/src/main/java/ai/vespa/hosted/cd/Endpoint.java4
-rw-r--r--tenant-cd/src/main/java/ai/vespa/hosted/cd/TestRuntime.java6
-rw-r--r--tenant-cd/src/main/java/ai/vespa/hosted/cd/http/HttpDeployment.java28
-rw-r--r--tenant-cd/src/main/java/ai/vespa/hosted/cd/http/HttpEndpoint.java5
4 files changed, 32 insertions, 11 deletions
diff --git a/tenant-cd/src/main/java/ai/vespa/hosted/cd/Endpoint.java b/tenant-cd/src/main/java/ai/vespa/hosted/cd/Endpoint.java
index 348fc329682..efeb4214ebd 100644
--- a/tenant-cd/src/main/java/ai/vespa/hosted/cd/Endpoint.java
+++ b/tenant-cd/src/main/java/ai/vespa/hosted/cd/Endpoint.java
@@ -2,6 +2,8 @@ package ai.vespa.hosted.cd;
import ai.vespa.hosted.cd.metric.Metrics;
+import java.net.URI;
+
/**
* An endpoint in a Vespa application {@link Deployment}, which allows document and metrics retrieval.
*
@@ -12,6 +14,8 @@ import ai.vespa.hosted.cd.metric.Metrics;
*/
public interface Endpoint {
+ URI uri();
+
Search search(Query query);
Visit visit(Selection selection);
diff --git a/tenant-cd/src/main/java/ai/vespa/hosted/cd/TestRuntime.java b/tenant-cd/src/main/java/ai/vespa/hosted/cd/TestRuntime.java
index c6560e10665..4ae1c0b7a5e 100644
--- a/tenant-cd/src/main/java/ai/vespa/hosted/cd/TestRuntime.java
+++ b/tenant-cd/src/main/java/ai/vespa/hosted/cd/TestRuntime.java
@@ -34,8 +34,10 @@ public class TestRuntime {
this.productionDeployments = config.deployments().entrySet().stream()
.filter(zoneDeployment -> zoneDeployment.getKey().environment() == Environment.prod)
.collect(toUnmodifiableMap(zoneDeployment -> zoneDeployment.getKey().region().value(),
- zoneDeployment -> new HttpDeployment(zoneDeployment.getValue(), authenticator)));
- this.deploymentToTest = new HttpDeployment(config.deployments().get(config.zone()), authenticator);
+ zoneDeployment -> new HttpDeployment(zoneDeployment.getValue(),
+ config.zone(),
+ authenticator)));
+ this.deploymentToTest = new HttpDeployment(config.deployments().get(config.zone()), config.zone(), authenticator);
}
/**
diff --git a/tenant-cd/src/main/java/ai/vespa/hosted/cd/http/HttpDeployment.java b/tenant-cd/src/main/java/ai/vespa/hosted/cd/http/HttpDeployment.java
index d53e08863f7..22c622effae 100644
--- a/tenant-cd/src/main/java/ai/vespa/hosted/cd/http/HttpDeployment.java
+++ b/tenant-cd/src/main/java/ai/vespa/hosted/cd/http/HttpDeployment.java
@@ -1,12 +1,14 @@
package ai.vespa.hosted.cd.http;
import ai.vespa.hosted.api.EndpointAuthenticator;
-import ai.vespa.hosted.cd.Deployment;
-import ai.vespa.hosted.cd.Endpoint;
import ai.vespa.hosted.cd.TestDeployment;
+import ai.vespa.hosted.cd.TestEndpoint;
+import com.yahoo.config.provision.Environment;
+import com.yahoo.config.provision.zone.ZoneId;
import java.net.URI;
import java.util.Map;
+import java.util.NoSuchElementException;
import java.util.stream.Collectors;
/**
@@ -14,30 +16,38 @@ import java.util.stream.Collectors;
*
* @author jonmv
*/
-public class HttpDeployment implements Deployment {
+public class HttpDeployment implements TestDeployment {
+ private final ZoneId zone;
private final Map<String, HttpEndpoint> endpoints;
/** Creates a representation of the given deployment endpoints, using the authenticator for data plane access. */
- public HttpDeployment(Map<String, URI> endpoints, EndpointAuthenticator authenticator) {
+ public HttpDeployment(Map<String, URI> endpoints, ZoneId zone, EndpointAuthenticator authenticator) {
+ this.zone = zone;
this.endpoints = endpoints.entrySet().stream()
.collect(Collectors.toUnmodifiableMap(entry -> entry.getKey(),
entry -> new HttpEndpoint(entry.getValue(), authenticator)));
}
@Override
- public Endpoint endpoint() {
- return null;
+ public TestEndpoint endpoint() {
+ return endpoint("default");
}
@Override
- public Endpoint endpoint(String id) {
- return null;
+ public TestEndpoint endpoint(String id) {
+ if ( ! endpoints.containsKey(id))
+ throw new NoSuchElementException("No cluster with id '" + id + "'");
+
+ return endpoints.get(id);
}
@Override
public TestDeployment asTestDeployment() {
- return null;
+ if (zone.environment() == Environment.prod)
+ throw new IllegalArgumentException("Won't return a mutable view of a production deployment");
+
+ return this;
}
}
diff --git a/tenant-cd/src/main/java/ai/vespa/hosted/cd/http/HttpEndpoint.java b/tenant-cd/src/main/java/ai/vespa/hosted/cd/http/HttpEndpoint.java
index 7a61c06c738..d2bf153b86a 100644
--- a/tenant-cd/src/main/java/ai/vespa/hosted/cd/http/HttpEndpoint.java
+++ b/tenant-cd/src/main/java/ai/vespa/hosted/cd/http/HttpEndpoint.java
@@ -52,6 +52,11 @@ public class HttpEndpoint implements TestEndpoint {
}
@Override
+ public URI uri() {
+ return endpoint;
+ }
+
+ @Override
public Search search(Query query) {
try {
URI target = endpoint.resolve(searchApiPath).resolve("?" + query.rawQuery());