summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorMorten Tokle <mortent@verizonmedia.com>2020-08-28 15:33:47 +0200
committerMorten Tokle <mortent@verizonmedia.com>2020-08-28 15:33:47 +0200
commitc9af34109b06aa90154ee1692717a0fed555ec61 (patch)
tree67e2d1e1e65036180cf31e705decbc09a90620c6 /configserver
parent9a8332e0fc7f38e914b51dcda5fed8aad73a044f (diff)
Add API to get test report on config server
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java4
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/TesterClient.java7
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/MockTesterClient.java10
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java11
5 files changed, 33 insertions, 1 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
index 73120e90a3e..6a3a715e58d 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
@@ -722,6 +722,10 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
return testerClient.isTesterReady(getTesterHostname(applicationId), getTesterPort(applicationId));
}
+ public HttpResponse getTestReport(ApplicationId applicationId) {
+ return testerClient.getReport(getTesterHostname(applicationId), getTesterPort(applicationId));
+ }
+
private String getTesterHostname(ApplicationId applicationId) {
return getTesterServiceInfo(applicationId).getHostName();
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/TesterClient.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/TesterClient.java
index 514e0c1c8ae..163d26036a9 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/TesterClient.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/TesterClient.java
@@ -3,7 +3,6 @@ package com.yahoo.vespa.config.server.http;
import ai.vespa.util.http.VespaHttpClientBuilder;
import com.yahoo.container.jdisc.HttpResponse;
-import java.util.logging.Level;
import com.yahoo.yolean.Exceptions;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
@@ -15,6 +14,7 @@ import org.apache.http.entity.ByteArrayEntity;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
+import java.util.logging.Level;
import java.util.logging.Logger;
/**
@@ -58,6 +58,11 @@ public class TesterClient {
return execute(new HttpGet(testerUri), "/status.html did not return 200 OK");
}
+ public HttpResponse getReport(String testerHostname, int port) {
+ URI testerUri = createURI(testerHostname, port, "/tester/v1/report");
+ return execute(new HttpGet(testerUri), "Failed to get test report");
+ }
+
private HttpResponse execute(HttpUriRequest request, String messageIfRequestFails) {
logger.log(Level.FINE, "Sending request to tester container " + request.getURI().toString());
try {
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java
index 0a805cc6b21..168f8e3ddbb 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java
@@ -152,6 +152,8 @@ public class ApplicationHandler extends HttpHandler {
return applicationRepository.getTesterLog(applicationId, after);
case "ready":
return applicationRepository.isTesterReady(applicationId);
+ case "report":
+ return applicationRepository.getTestReport(applicationId);
default:
throw new IllegalArgumentException("Unknown tester command in request " + request.getUri().toString());
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/MockTesterClient.java b/configserver/src/test/java/com/yahoo/vespa/config/server/MockTesterClient.java
index c835bb29ec0..1279bf70578 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/MockTesterClient.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/MockTesterClient.java
@@ -51,4 +51,14 @@ public class MockTesterClient extends TesterClient {
};
}
+ @Override
+ public HttpResponse getReport(String testerHostname, int port) {
+ return new HttpResponse(200) {
+ @Override
+ public void render(OutputStream outputStream) throws IOException {
+ outputStream.write("report".getBytes(StandardCharsets.UTF_8));
+ }
+ };
+ }
+
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java
index f43154242fb..8d353130542 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java
@@ -285,6 +285,17 @@ public class ApplicationHandlerTest {
assertEquals(200, response.getStatus());
}
+ @Test
+ public void testGetTestReport() throws IOException {
+ applicationRepository.deploy(testApp, prepareParams(applicationId));
+ String url = toUrlPath(applicationId, Zone.defaultZone(), true) + "/tester/report";
+ ApplicationHandler mockHandler = createApplicationHandler();
+ HttpRequest testRequest = HttpRequest.createTestRequest(url, GET);
+ HttpResponse response = mockHandler.handle(testRequest);
+ assertEquals(200, response.getStatus());
+ assertEquals("report", getRenderedString(response));
+ }
+
private void assertNotAllowed(com.yahoo.jdisc.http.HttpRequest.Method method) throws IOException {
String url = "http://myhost:14000/application/v2/tenant/" + mytenantName + "/application/default";
deleteAndAssertResponse(url, Response.Status.METHOD_NOT_ALLOWED, HttpErrorResponse.errorCodes.METHOD_NOT_ALLOWED, "{\"error-code\":\"METHOD_NOT_ALLOWED\",\"message\":\"Method '" + method + "' is not supported\"}",