summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorJon Marius Venstad <jonmv@users.noreply.github.com>2020-09-01 12:15:23 +0200
committerGitHub <noreply@github.com>2020-09-01 12:15:23 +0200
commit7e72d9604f51afcd072120a9f562f7652e8e8d44 (patch)
treecc75e65ef615d89c78beb0084d598118a3c5bf1c /configserver
parent7c1c6db4947787c24d4a0e88709e6451877b2bc3 (diff)
parentf603ecd5cd6a2a654f5b724c4edf49df79652dd9 (diff)
Merge pull request #14218 from vespa-engine/mortent/propagate-test-report
Include test report in job run details
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 3a33d326c48..d84b81bd8e7 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\"}",