diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-09-16 18:12:25 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-09-16 18:12:25 +0200 |
commit | f19cf2dd0f1f80735522ec868700d91f93f53076 (patch) | |
tree | b1a51ad154a958000ba4a4fc17c8eead8e87760a /metrics-proxy/src/test | |
parent | 751c42ec11614c9bac3d2bb56b9616df93c991d5 (diff) |
Use an async http client with only 2 threads.
Diffstat (limited to 'metrics-proxy/src/test')
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) {} + }); + } } |