summaryrefslogtreecommitdiffstats
path: root/metrics-proxy/src/test
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-12-16 21:26:32 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2021-12-16 21:26:32 +0100
commit47dab19f0e4ab17e501e26f82d2ce443406d3155 (patch)
treecf99a2e39394b3e9409a30217aac674a411ec4d2 /metrics-proxy/src/test
parent7f04f3a850619c73ea25aab853ff7ec1ea71e707 (diff)
Avoid creating a temporary YamasArrayJsonModel which contains a copy of the MetricsPacket list that is used just for simple json printing with an ObjectMapper.
Insteda do it the old school by genrating the json with the core api which is streaming.
Diffstat (limited to 'metrics-proxy/src/test')
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonModelTest.java25
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtilTest.java76
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java2
3 files changed, 58 insertions, 45 deletions
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonModelTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonModelTest.java
index 540445fba5b..a5bc7a0877a 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonModelTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonModelTest.java
@@ -1,15 +1,17 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.metricsproxy.metric.model.json;
+import ai.vespa.metricsproxy.http.yamas.YamasResponse;
import ai.vespa.metricsproxy.metric.model.MetricsPacket;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;
import java.io.BufferedReader;
+import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
-import java.util.Collections;
+import java.util.List;
import static ai.vespa.metricsproxy.metric.model.ConsumerId.toConsumerId;
import static ai.vespa.metricsproxy.metric.model.MetricId.toMetricId;
@@ -32,10 +34,11 @@ public class YamasJsonModelTest {
public void array_definition_creates_correct_json() throws IOException {
YamasJsonModel jsonModel = getYamasJsonModel("yamas-array.json");
- YamasArrayJsonModel yamasData = new YamasArrayJsonModel();
- yamasData.add(jsonModel);
-
- assertEquals(EXPECTED_JSON, yamasData.serialize());
+ try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
+ YamasResponse response = new YamasResponse(200, List.of(YamasJsonUtil.toMetricsPacketBuilder(jsonModel).build()));
+ response.render(outputStream);
+ assertEquals(EXPECTED_JSON, outputStream.toString());
+ }
}
@Test
@@ -48,10 +51,11 @@ public class YamasJsonModelTest {
assertEquals(5.555555555E9, jsonModel.metrics.get("memory_rss"), 0.1d); //Not using custom double renderer
// Serialize and verify
- YamasArrayJsonModel yamasArray = new YamasArrayJsonModel();
- yamasArray.add(jsonModel);
- String string = yamasArray.serialize();
- assertEquals(EXPECTED_JSON, string);
+ try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
+ YamasResponse response = new YamasResponse(200, List.of(YamasJsonUtil.toMetricsPacketBuilder(jsonModel).build()));
+ response.render(outputStream);
+ assertEquals(EXPECTED_JSON, outputStream.toString());
+ }
}
@Test
@@ -65,8 +69,7 @@ public class YamasJsonModelTest {
assertEquals(5.555555555E9, metricsPacket.metrics().get(toMetricId("memory_rss")).doubleValue(), 0.1d); //Not using custom double rendrer
// Serialize and verify
- YamasArrayJsonModel yamasArray = YamasJsonUtil.toYamasArray(Collections.singleton(metricsPacket), true);
- String string = yamasArray.serialize();
+ String string = YamasJsonUtil.toJson(List.of(metricsPacket), true);
assertEquals(EXPECTED_JSON, string);
}
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtilTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtilTest.java
index 1a0d5c3e149..ebd80b38a42 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtilTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtilTest.java
@@ -2,8 +2,12 @@
package ai.vespa.metricsproxy.metric.model.json;
import ai.vespa.metricsproxy.metric.model.MetricsPacket;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ArrayNode;
import org.junit.Test;
+import java.io.IOException;
import java.util.List;
import java.util.Set;
@@ -12,69 +16,75 @@ import static ai.vespa.metricsproxy.http.ValuesFetcher.defaultMetricsConsumerId;
import static ai.vespa.metricsproxy.metric.model.ServiceId.toServiceId;
import static ai.vespa.metricsproxy.metric.model.json.YamasJsonUtil.YAMAS_ROUTING;
import static ai.vespa.metricsproxy.metric.model.json.YamasJsonUtil.toMetricsPackets;
-import static java.util.Collections.singleton;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
/**
* @author gjoranv
*/
public class YamasJsonUtilTest {
+ private static final ObjectMapper jsonMapper = new ObjectMapper();
+ private static JsonNode metrics(MetricsPacket packet, boolean addStatus) throws IOException {
+ return metrics(List.of(packet), addStatus).get(0);
+ }
+ private static ArrayNode metrics(List<MetricsPacket> packets, boolean addStatus) throws IOException {
+ return (ArrayNode) jsonMapper.readTree(YamasJsonUtil.toJson(packets, addStatus)).get("metrics");
+ }
@Test
- public void json_model_gets_null_status_by_default() {
- MetricsPacket packet = new MetricsPacket.Builder(toServiceId("foo"))
- .build();
- YamasJsonModel jsonModel = YamasJsonUtil.toYamasArray(singleton(packet)).metrics.get(0);
- assertNull(jsonModel.status_code);
- assertNull(jsonModel.status_msg);
+ public void json_model_gets_null_status_by_default() throws IOException {
+ ArrayNode json = metrics(List.of(new MetricsPacket.Builder(toServiceId("foo")).build(),
+ new MetricsPacket.Builder(toServiceId("bar")).build()), false);
+ assertFalse(json.get(0).has("status_code"));
+ assertFalse(json.get(0).has("status_msg"));
+ assertTrue(json.get(1).has("status_code"));
+ assertTrue(json.get(1).has("status_msg"));
}
@Test
- public void status_is_included_in_json_model_when_explicitly_asked_for() {
- MetricsPacket packet = new MetricsPacket.Builder(toServiceId("foo"))
- .build();
- YamasJsonModel jsonModel = YamasJsonUtil.toYamasArray(singleton(packet), true).metrics.get(0);
- assertNotNull(jsonModel.status_code);
- assertNotNull(jsonModel.status_msg);
+ public void status_is_included_in_json_model_when_explicitly_asked_for() throws IOException {
+ ArrayNode json = metrics(List.of(new MetricsPacket.Builder(toServiceId("foo")).build(),
+ new MetricsPacket.Builder(toServiceId("bar")).build()), true);
+ assertTrue(json.get(0).has("status_code"));
+ assertTrue(json.get(0).has("status_msg"));
+ assertTrue(json.get(1).has("status_code"));
+ assertTrue(json.get(1).has("status_msg"));
}
@Test
- public void timestamp_0_in_packet_is_translated_to_null_in_json_model() {
- MetricsPacket packet = new MetricsPacket.Builder(toServiceId("foo"))
- .timestamp(0L)
- .build();
- YamasJsonModel jsonModel = YamasJsonUtil.toYamasArray(singleton(packet)).metrics.get(0);
- assertNull(jsonModel.timestamp);
+ public void timestamp_0_in_packet_is_translated_to_null_in_json_model() throws IOException {
+ MetricsPacket packet = new MetricsPacket.Builder(toServiceId("foo")).timestamp(0L).build();
+ JsonNode json = metrics(packet, true);
+ assertFalse(json.has("timestamp"));
}
@Test
- public void empty_consumers_is_translated_to_null_routing_in_json_model() {
- MetricsPacket packet = new MetricsPacket.Builder(toServiceId("foo"))
- .build();
- YamasJsonModel jsonModel = YamasJsonUtil.toYamasArray(singleton(packet)).metrics.get(0);
- assertNull(jsonModel.routing);
+ public void empty_consumers_is_translated_to_null_routing_in_json_model() throws IOException {
+ MetricsPacket packet = new MetricsPacket.Builder(toServiceId("foo")).build();
+ JsonNode json = metrics(packet, true);
+ assertFalse(json.has("routing"));
}
@Test
- public void default_public_consumer_is_filtered_from_yamas_routing() {
+ public void default_public_consumer_is_filtered_from_yamas_routing() throws IOException {
MetricsPacket packet = new MetricsPacket.Builder(toServiceId("foo"))
.addConsumers(Set.of(vespaMetricsConsumerId, defaultMetricsConsumerId))
.build();
- YamasJsonModel jsonModel = YamasJsonUtil.toYamasArray(singleton(packet)).metrics.get(0);
- List<String> namespaces = jsonModel.routing.get(YAMAS_ROUTING).namespaces;
+ JsonNode json = metrics(packet, false);
+ JsonNode routing = json.get("routing");
+ JsonNode yamas = routing.get(YAMAS_ROUTING);
+ ArrayNode namespaces = (ArrayNode) yamas.get("namespaces");
assertEquals(1, namespaces.size());
- assertEquals(vespaMetricsConsumerId.id, namespaces.get(0));
+ assertEquals(vespaMetricsConsumerId.id, namespaces.get(0).asText());
}
@Test
- public void only_default_public_consumer_yields_null_routing_in_json_model() {
+ public void only_default_public_consumer_yields_null_routing_in_json_model() throws IOException {
MetricsPacket packet = new MetricsPacket.Builder(toServiceId("foo"))
.addConsumers(Set.of(defaultMetricsConsumerId))
.build();
- YamasJsonModel jsonModel = YamasJsonUtil.toYamasArray(singleton(packet)).metrics.get(0);
- assertNull(jsonModel.routing);
+ JsonNode json = metrics(packet, false);
+ assertFalse(json.has(YAMAS_ROUTING));
}
@Test
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java
index 214df36d6a1..8a489ac70c7 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java
@@ -150,7 +150,7 @@ public class RpcMetricsTest {
JsonNode jsonObject = metrics.get(i);
assertFalse(jsonObject.has("status_code"));
assertFalse(jsonObject.has("status_msg"));
- assertThat(jsonObject.get("dimensions").get("foo").textValue(), is("bar"));
+ assertEquals("bar", jsonObject.get("dimensions").get("foo").textValue());
assertThat(jsonObject.get("dimensions").get("bar").textValue(), is("foo"));
assertThat(jsonObject.get("dimensions").get("serviceDim").textValue(), is("serviceDimValue"));
assertThat(jsonObject.get("routing").get("yamas").get("namespaces").size(), is(1));