summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2020-10-01 19:58:40 +0200
committerJon Bratseth <bratseth@gmail.com>2020-10-01 19:58:40 +0200
commitc9335e0efde84cafdbc878fc4c4504e3ce12b93c (patch)
tree5331bbc2140855d97ed1453d803af2de6bbd3a77 /container-search
parentf6a19e89f468e6b4603d46763eee2d720de55776 (diff)
Let handlers dedfine a default request type
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java7
-rw-r--r--container-search/src/test/java/com/yahoo/search/handler/test/SearchHandlerTestCase.java15
2 files changed, 19 insertions, 3 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java b/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java
index bee25fbb47f..80dc7a7b489 100644
--- a/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java
+++ b/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java
@@ -251,6 +251,9 @@ public class SearchHandler extends LoggingRequestHandler {
}
}
+ @Override
+ public Request.RequestType getRequestType() { return Request.RequestType.READ; }
+
private int getHttpResponseStatus(com.yahoo.container.jdisc.HttpRequest httpRequest, Result result) {
boolean benchmarkOutput = VespaHeaders.benchmarkOutput(httpRequest);
if (benchmarkOutput) {
@@ -326,9 +329,7 @@ public class SearchHandler extends LoggingRequestHandler {
HttpSearchResponse response = new HttpSearchResponse(getHttpResponseStatus(request, result),
result, query, renderer,
extractTraceNode(query));
- response.setRequestType(Request.RequestType.READ);
- if (hostResponseHeaderKey.isPresent())
- response.headers().add(hostResponseHeaderKey.get(), selfHostname);
+ hostResponseHeaderKey.ifPresent(key -> response.headers().add(key, selfHostname));
if (benchmarking)
VespaHeaders.benchmarkOutput(response.headers(), benchmarkCoverage, response.getTiming(),
diff --git a/container-search/src/test/java/com/yahoo/search/handler/test/SearchHandlerTestCase.java b/container-search/src/test/java/com/yahoo/search/handler/test/SearchHandlerTestCase.java
index 7d03e065fa9..2eb5901b786 100644
--- a/container-search/src/test/java/com/yahoo/search/handler/test/SearchHandlerTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/handler/test/SearchHandlerTestCase.java
@@ -8,6 +8,7 @@ import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.container.jdisc.RequestHandlerTestDriver;
import com.yahoo.container.jdisc.ThreadedHttpRequestHandler;
import com.yahoo.io.IOUtils;
+import com.yahoo.jdisc.Request;
import com.yahoo.jdisc.handler.RequestHandler;
import com.yahoo.net.HostName;
import com.yahoo.search.Query;
@@ -179,10 +180,24 @@ public class SearchHandlerTestCase {
"http://localhost/search/?yql=select%20*%20from%20foo%20where%20bar%20%3E%201453501295%27%3B");
responseHandler.readAll();
assertThat(responseHandler.getStatus(), is(400));
+ assertEquals(Request.RequestType.READ, responseHandler.getResponse().getRequestType());
}
}
+ @Test
+ public void testRequestType() throws Exception {
+ IOUtils.copyDirectory(new File(testDir, "config_yql"), new File(tempDir), 1);
+ generateComponentsConfigForActive();
+ configurer.reloadConfig();
+ SearchHandler newSearchHandler = fetchSearchHandler(configurer);
+ try (RequestHandlerTestDriver newDriver = new RequestHandlerTestDriver(newSearchHandler)) {
+ RequestHandlerTestDriver.MockResponseHandler responseHandler = newDriver.sendRequest(
+ "http://localhost/search/?query=foo");
+ responseHandler.readAll();
+ assertEquals(Request.RequestType.READ, responseHandler.getResponse().getRequestType());
+ }
+ }
// Query handling takes a different code path when a query profile is active, so we test both paths.
@Test