aboutsummaryrefslogtreecommitdiffstats
path: root/metrics-proxy
diff options
context:
space:
mode:
authorgjoranv <gv@verizonmedia.com>2022-09-26 22:30:14 +0200
committergjoranv <gv@verizonmedia.com>2022-09-26 22:30:14 +0200
commite4507a9e813e0eab970422a2f4df0c4c60a5e5e1 (patch)
tree2abb858e943efec60f39e374d05e6df29af75522 /metrics-proxy
parentbbc79e913fce52a52c76c3427d5d655e59955acf (diff)
Ignore case when looking up metrics consumer.
Diffstat (limited to 'metrics-proxy')
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/ValuesFetcher.java15
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ConsumerId.java1
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/metrics/MetricsHandlerTestBase.java11
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))