diff options
author | gjoranv <gv@verizonmedia.com> | 2020-01-14 16:07:22 +0100 |
---|---|---|
committer | gjoranv <gv@verizonmedia.com> | 2020-01-14 16:07:41 +0100 |
commit | fd2b59ab0c025e63c353edd4657b6582abb4097b (patch) | |
tree | 300830712f017a5314b4ea760a8c3b4557d7caa3 /metrics-proxy | |
parent | 6d09bcb10d27f3980547cd5ea24cefdd6e115ee1 (diff) |
Enable the default public metrics consumer in hosted Vespa.
- Always filter this consumer from yamas routing, as the effect
of including it is uncertain.
Diffstat (limited to 'metrics-proxy')
2 files changed, 33 insertions, 3 deletions
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java index 9487b65a650..d2838d5b1d2 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java @@ -16,6 +16,7 @@ import java.util.Map; import java.util.logging.Logger; import java.util.stream.Collectors; +import static ai.vespa.metricsproxy.http.ValuesFetcher.DEFAULT_PUBLIC_CONSUMER_ID; import static ai.vespa.metricsproxy.metric.model.ServiceId.toServiceId; import static com.yahoo.stream.CustomCollectors.toLinkedMap; import static java.util.Collections.emptyList; @@ -112,15 +113,19 @@ public class YamasJsonUtil { Map.Entry::getValue)); } - if (packet.consumers().isEmpty()) model.routing = null; - else model.routing = ImmutableMap.of(YAMAS_ROUTING, toYamasJsonNamespaces(packet.consumers())); + YamasJsonModel.YamasJsonNamespace namespaces = toYamasJsonNamespaces(packet.consumers()); + if (namespaces.namespaces.isEmpty()) model.routing = null; + else model.routing = ImmutableMap.of(YAMAS_ROUTING, namespaces); return model; } private static YamasJsonModel.YamasJsonNamespace toYamasJsonNamespaces(Collection<ConsumerId> consumers) { YamasJsonModel.YamasJsonNamespace namespaces = new YamasJsonModel.YamasJsonNamespace(); - namespaces.namespaces = consumers.stream().map(consumer -> consumer.id).collect(Collectors.toList()); + namespaces.namespaces = consumers.stream() + .filter(consumerId -> consumerId != DEFAULT_PUBLIC_CONSUMER_ID) + .map(consumer -> consumer.id) + .collect(Collectors.toList()); return namespaces; } 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 cdef510e73b..d3a5622d263 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 @@ -5,10 +5,15 @@ import ai.vespa.metricsproxy.metric.model.MetricsPacket; import org.junit.Test; import java.util.List; +import java.util.Set; +import static ai.vespa.metricsproxy.core.VespaMetrics.VESPA_CONSUMER_ID; +import static ai.vespa.metricsproxy.http.ValuesFetcher.DEFAULT_PUBLIC_CONSUMER_ID; 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.assertTrue; @@ -53,6 +58,26 @@ public class YamasJsonUtilTest { } @Test + public void default_public_consumer_is_filtered_from_yamas_routing() { + MetricsPacket packet = new MetricsPacket.Builder(toServiceId("foo")) + .addConsumers(Set.of(VESPA_CONSUMER_ID, DEFAULT_PUBLIC_CONSUMER_ID)) + .build(); + YamasJsonModel jsonModel = YamasJsonUtil.toYamasArray(singleton(packet)).metrics.get(0); + List<String> namespaces = jsonModel.routing.get(YAMAS_ROUTING).namespaces; + assertEquals(1, namespaces.size()); + assertEquals(VESPA_CONSUMER_ID.id, namespaces.get(0)); + } + + @Test + public void only_default_public_consumer_yields_null_routing_in_json_model() { + MetricsPacket packet = new MetricsPacket.Builder(toServiceId("foo")) + .addConsumers(Set.of(DEFAULT_PUBLIC_CONSUMER_ID)) + .build(); + YamasJsonModel jsonModel = YamasJsonUtil.toYamasArray(singleton(packet)).metrics.get(0); + assertNull(jsonModel.routing); + } + + @Test public void empty_json_string_yields_empty_packet_list() { List<MetricsPacket.Builder> builders = toMetricsPackets(""); assertTrue(builders.isEmpty()); |