summaryrefslogtreecommitdiffstats
path: root/metrics-proxy/src
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2022-06-10 14:37:06 +0200
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2022-06-10 14:37:06 +0200
commita298102ebde1bb3a1406b7e9d096988ffcf201e1 (patch)
tree6f70d93c4e4acfa973f0558fc23138d6fca000cf /metrics-proxy/src
parent0768aded2eeca29027178260875fab85610c2c30 (diff)
Stabilize metrics-proxy tests
Synchronize access to 'response' field. Handle null response. Ensure output stream is closed. Specify timeout for request connection from pool.
Diffstat (limited to 'metrics-proxy/src')
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/HttpMetricFetcher.java11
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/MockHttpServer.java12
2 files changed, 12 insertions, 11 deletions
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/HttpMetricFetcher.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/HttpMetricFetcher.java
index 87bed1c79e3..677b0e065ad 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/HttpMetricFetcher.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/HttpMetricFetcher.java
@@ -2,12 +2,6 @@
package ai.vespa.metricsproxy.service;
import ai.vespa.util.http.hc5.VespaAsyncHttpClientBuilder;
-
-import java.io.InputStream;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-import java.util.logging.Level;
-
import com.yahoo.yolean.Exceptions;
import org.apache.hc.client5.http.config.RequestConfig;
import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
@@ -21,7 +15,11 @@ import org.apache.hc.core5.http.nio.support.classic.AbstractClassicEntityConsume
import org.apache.hc.core5.util.Timeout;
import java.io.IOException;
+import java.io.InputStream;
import java.net.URI;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+import java.util.logging.Level;
import java.util.logging.Logger;
/**
@@ -100,6 +98,7 @@ public abstract class HttpMetricFetcher {
CloseableHttpAsyncClient client = VespaAsyncHttpClientBuilder.create()
.setUserAgent("metrics-proxy-http-client")
.setDefaultRequestConfig(RequestConfig.custom()
+ .setConnectionRequestTimeout(Timeout.ofMilliseconds(SOCKET_TIMEOUT))
.setConnectTimeout(Timeout.ofMilliseconds(CONNECTION_TIMEOUT))
.setResponseTimeout(Timeout.ofMilliseconds(SOCKET_TIMEOUT))
.build())
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/MockHttpServer.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/MockHttpServer.java
index afb6285764a..e2c0bbd73ee 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/MockHttpServer.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/MockHttpServer.java
@@ -15,7 +15,7 @@ import java.net.InetSocketAddress;
public class MockHttpServer {
private String response;
- private HttpServer server;
+ private final HttpServer server;
/**
* Mock http server that will return response as body
@@ -46,10 +46,12 @@ public class MockHttpServer {
private class MyHandler implements HttpHandler {
public void handle(HttpExchange t) throws IOException {
- t.sendResponseHeaders(200, response.length());
- OutputStream os = t.getResponseBody();
- os.write(response.getBytes());
- os.close();
+ synchronized (MockHttpServer.this) {
+ t.sendResponseHeaders(200, response != null ? response.length() : 0);
+ try (OutputStream os = t.getResponseBody()) {
+ if (response != null) os.write(response.getBytes());
+ }
+ }
}
}