diff options
author | gjoranv <gv@verizonmedia.com> | 2022-09-26 22:30:14 +0200 |
---|---|---|
committer | gjoranv <gv@verizonmedia.com> | 2022-09-26 22:30:14 +0200 |
commit | e4507a9e813e0eab970422a2f4df0c4c60a5e5e1 (patch) | |
tree | 2abb858e943efec60f39e374d05e6df29af75522 /metrics-proxy | |
parent | bbc79e913fce52a52c76c3427d5d655e59955acf (diff) |
Ignore case when looking up metrics consumer.
Diffstat (limited to 'metrics-proxy')
3 files changed, 21 insertions, 6 deletions
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/ValuesFetcher.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/ValuesFetcher.java index b316a620a9b..037fca95588 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/ValuesFetcher.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/ValuesFetcher.java @@ -10,6 +10,7 @@ import ai.vespa.metricsproxy.service.VespaServices; import java.time.Instant; import java.util.List; +import java.util.Optional; import java.util.logging.Logger; import java.util.stream.Collectors; @@ -65,12 +66,14 @@ public class ValuesFetcher { public static ConsumerId getConsumerOrDefault(String requestedConsumer, MetricsConsumers consumers) { if (requestedConsumer == null) return defaultMetricsConsumerId; - ConsumerId consumerId = toConsumerId(requestedConsumer); - if (! consumers.getAllConsumers().contains(consumerId)) { - log.info("No consumer with id '" + requestedConsumer + "' - using the default consumer instead."); - return defaultMetricsConsumerId; - } - return consumerId; + Optional<ConsumerId> consumerId = consumers.getAllConsumers().stream() + .filter(consumer -> consumer.id.equalsIgnoreCase(requestedConsumer)) + .findFirst(); + + if (consumerId.isPresent()) return consumerId.get(); + + log.info("No consumer with id '" + requestedConsumer + "' - using the default consumer instead."); + return defaultMetricsConsumerId; } } diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ConsumerId.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ConsumerId.java index 9ec22154627..693a1217119 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ConsumerId.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ConsumerId.java @@ -1,6 +1,7 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package ai.vespa.metricsproxy.metric.model; +import java.util.Locale; import java.util.Objects; /** diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/metrics/MetricsHandlerTestBase.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/metrics/MetricsHandlerTestBase.java index 1c6a09c3ee0..b6521a89ce7 100644 --- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/metrics/MetricsHandlerTestBase.java +++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/metrics/MetricsHandlerTestBase.java @@ -13,6 +13,7 @@ import org.junit.Ignore; import org.junit.Test; import java.io.IOException; +import java.util.Locale; import static ai.vespa.metricsproxy.metric.dimensions.PublicDimensions.INTERNAL_SERVICE_ID; import static ai.vespa.metricsproxy.metric.dimensions.PublicDimensions.REASON; @@ -151,6 +152,16 @@ public abstract class MetricsHandlerTestBase<MODEL> extends HttpHandlerTestBase assertEquals("custom-val", dummy1Metrics.dimensions.get(REASON)); } + @Test + public void consumer_name_is_case_insensitive() { + GenericJsonModel jsonModel = getResponseAsGenericJsonModel(CUSTOM_CONSUMER.toUpperCase(Locale.ROOT)); + GenericService dummyService = jsonModel.services.get(0); + GenericMetrics dummy0Metrics = getMetricsForService("dummy0", dummyService); + + // If name was case-sensitive, this would be the default value. + assertEquals("custom-val", dummy0Metrics.dimensions.get(REASON)); + } + private static GenericMetrics getMetricsForService(String serviceInstance, GenericService service) { for (var metrics : service.metrics) { if (getServiceIdDimension(metrics).equals(serviceInstance)) |