aboutsummaryrefslogtreecommitdiffstats
path: root/metrics-proxy/src/test
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-09-16 18:12:25 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2021-09-16 18:12:25 +0200
commitf19cf2dd0f1f80735522ec868700d91f93f53076 (patch)
treeb1a51ad154a958000ba4a4fc17c8eead8e87760a /metrics-proxy/src/test
parent751c42ec11614c9bac3d2bb56b9616df93c991d5 (diff)
Use an async http client with only 2 threads.
Diffstat (limited to 'metrics-proxy/src/test')
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsRetrieverTest.java11
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/NodeMetricsClientTest.java39
2 files changed, 29 insertions, 21 deletions
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsRetrieverTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsRetrieverTest.java
index b478f1ce632..09cc355d292 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsRetrieverTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsRetrieverTest.java
@@ -10,7 +10,6 @@ import java.time.Duration;
import java.util.Arrays;
import static ai.vespa.metricsproxy.TestUtil.getFileContents;
-import static ai.vespa.metricsproxy.http.application.ApplicationMetricsRetriever.MAX_THREADS;
import static ai.vespa.metricsproxy.http.application.ApplicationMetricsRetriever.MAX_TIMEOUT;
import static ai.vespa.metricsproxy.http.application.ApplicationMetricsRetriever.MIN_TIMEOUT;
import static ai.vespa.metricsproxy.http.application.ApplicationMetricsRetriever.timeout;
@@ -145,13 +144,13 @@ public class ApplicationMetricsRetrieverTest {
@Test
public void test_timeout_calculation() {
- assertEquals(MIN_TIMEOUT, timeout(1, 1));
- assertEquals(MIN_TIMEOUT, timeout(MAX_THREADS, MAX_THREADS));
+ assertEquals(MIN_TIMEOUT, timeout(1));
+ assertEquals(MIN_TIMEOUT, timeout(20));
// These values must be updated if the calculation in the timeout method itself is changed.
- assertEquals(Duration.ofSeconds(100), timeout(100, MAX_THREADS));
- assertEquals(Duration.ofSeconds(200), timeout(200, MAX_THREADS));
- assertEquals(MAX_TIMEOUT, timeout(240, MAX_THREADS));
+ assertEquals(Duration.ofSeconds(100), timeout(100));
+ assertEquals(Duration.ofSeconds(200), timeout(200));
+ assertEquals(MAX_TIMEOUT, timeout(240));
}
private MetricsNodesConfig nodesConfig(String... paths) {
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/NodeMetricsClientTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/NodeMetricsClientTest.java
index 6644579147f..4bf62a62445 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/NodeMetricsClientTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/NodeMetricsClientTest.java
@@ -2,12 +2,12 @@
package ai.vespa.metricsproxy.http.application;
import ai.vespa.metricsproxy.http.metrics.MetricsV1Handler;
+import ai.vespa.metricsproxy.metric.model.ConsumerId;
import ai.vespa.metricsproxy.metric.model.MetricsPacket;
import com.github.tomakehurst.wiremock.junit.WireMockClassRule;
import com.yahoo.test.ManualClock;
-import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
-import org.apache.hc.client5.http.impl.classic.HttpClients;
+import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.ClassRule;
@@ -16,6 +16,7 @@ import org.junit.Test;
import java.net.URI;
import java.time.Duration;
import java.util.List;
+import java.util.concurrent.ExecutionException;
import static ai.vespa.metricsproxy.TestUtil.getFileContents;
import static ai.vespa.metricsproxy.http.ValuesFetcher.defaultMetricsConsumerId;
@@ -41,7 +42,7 @@ public class NodeMetricsClientTest {
private static final String TEST_FILE = "generic-sample.json";
private static final String RESPONSE = getFileContents(TEST_FILE);
- private static final CloseableHttpClient httpClient = HttpClients.createDefault();
+ private static final CloseableHttpAsyncClient httpClient = ApplicationMetricsRetriever.createHttpClient();
private static final String CPU_METRIC = "cpu.util";
private static final String REPLACED_CPU_METRIC = "replaced_cpu_util";
@@ -51,7 +52,6 @@ public class NodeMetricsClientTest {
private static Node node;
- private ManualClock clock;
private NodeMetricsClient nodeMetricsClient;
@ClassRule
@@ -78,8 +78,8 @@ public class NodeMetricsClientTest {
@Before
public void setupClient() {
- clock = new ManualClock();
- nodeMetricsClient = new NodeMetricsClient(httpClient, node, clock);
+ httpClient.start();
+ nodeMetricsClient = new NodeMetricsClient(httpClient, node, new ManualClock());
}
@Test
@@ -88,10 +88,10 @@ public class NodeMetricsClientTest {
}
@Test
- public void metrics_are_retrieved_upon_first_update() {
+ public void metrics_are_retrieved_upon_first_update() throws InterruptedException, ExecutionException {
assertEquals(0, nodeMetricsClient.getMetrics(defaultMetricsConsumerId).size());
assertEquals(0, nodeMetricsClient.snapshotsRetrieved());
- assertTrue(nodeMetricsClient.updateSnapshots(defaultMetricsConsumerId, TTL));
+ updateSnapshot(defaultMetricsConsumerId, TTL);
assertEquals(1, nodeMetricsClient.snapshotsRetrieved());
List<MetricsPacket> metrics = nodeMetricsClient.getMetrics(defaultMetricsConsumerId);
assertEquals(1, nodeMetricsClient.snapshotsRetrieved());
@@ -101,31 +101,31 @@ public class NodeMetricsClientTest {
@Test
public void metrics_are_refreshed_on_every_update() {
assertEquals(0, nodeMetricsClient.snapshotsRetrieved());
- assertTrue(nodeMetricsClient.updateSnapshots(defaultMetricsConsumerId, TTL));
+ updateSnapshot(defaultMetricsConsumerId, TTL);
assertEquals(1, nodeMetricsClient.snapshotsRetrieved());
- assertTrue(nodeMetricsClient.updateSnapshots(defaultMetricsConsumerId, Duration.ZERO));
+ updateSnapshot(defaultMetricsConsumerId, Duration.ZERO);
assertEquals(2, nodeMetricsClient.snapshotsRetrieved());
}
@Test
public void metrics_are_not_refreshed_if_ttl_not_expired() {
assertEquals(0, nodeMetricsClient.snapshotsRetrieved());
- assertTrue(nodeMetricsClient.updateSnapshots(defaultMetricsConsumerId, TTL));
+ updateSnapshot(defaultMetricsConsumerId, TTL);
assertEquals(1, nodeMetricsClient.snapshotsRetrieved());
- assertTrue(nodeMetricsClient.updateSnapshots(defaultMetricsConsumerId, TTL));
+ updateSnapshot(defaultMetricsConsumerId, TTL);
assertEquals(1, nodeMetricsClient.snapshotsRetrieved());
- assertTrue(nodeMetricsClient.updateSnapshots(defaultMetricsConsumerId, Duration.ZERO));
+ updateSnapshot(defaultMetricsConsumerId, Duration.ZERO);
assertEquals(2, nodeMetricsClient.snapshotsRetrieved());
}
@Test
public void metrics_for_different_consumers_are_cached_separately() {
- assertTrue(nodeMetricsClient.updateSnapshots(defaultMetricsConsumerId,TTL));
+ updateSnapshot(defaultMetricsConsumerId, TTL);
List<MetricsPacket> defaultMetrics = nodeMetricsClient.getMetrics(defaultMetricsConsumerId);
assertEquals(1, nodeMetricsClient.snapshotsRetrieved());
assertEquals(4, defaultMetrics.size());
- assertTrue(nodeMetricsClient.updateSnapshots(toConsumerId(CUSTOM_CONSUMER), TTL));
+ updateSnapshot(toConsumerId(CUSTOM_CONSUMER), TTL);
List<MetricsPacket> customMetrics = nodeMetricsClient.getMetrics(toConsumerId(CUSTOM_CONSUMER));
assertEquals(2, nodeMetricsClient.snapshotsRetrieved());
assertEquals(4, customMetrics.size());
@@ -133,4 +133,13 @@ public class NodeMetricsClientTest {
MetricsPacket replacedCpuMetric = customMetrics.get(0);
assertTrue(replacedCpuMetric.metrics().containsKey(toMetricId(REPLACED_CPU_METRIC)));
}
+ private void updateSnapshot(ConsumerId consumerId, Duration ttl) {
+
+ var optional = nodeMetricsClient.startSnapshotUpdate(consumerId, ttl);
+ optional.ifPresent(future -> {
+ try {
+ assertTrue(future.get());
+ } catch (InterruptedException | ExecutionException e) {}
+ });
+ }
}