diff options
author | Valerij Fredriksen <freva@users.noreply.github.com> | 2020-09-18 14:53:29 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-18 14:53:29 +0200 |
commit | 42adcf6286491f57d6fa4ea087c760d6a8f84d26 (patch) | |
tree | 8de34b1fd94b0493ba8a6ddc96c4bdcfa345c8dd | |
parent | bf3ca4359b94aff539fc79b80b4caac66225a028 (diff) | |
parent | 00704b6e5506a1b422ba8b1c89897f0c867523f4 (diff) |
Merge pull request #14447 from vespa-engine/bratseth/autoscaling-metric-set
Bratseth/autoscaling metric set
40 files changed, 188 insertions, 204 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java index 1b5be1c2f97..3f432620b90 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java @@ -31,7 +31,7 @@ import java.util.Collections; import java.util.List; import java.util.Optional; -import static com.yahoo.vespa.model.admin.monitoring.MetricSet.emptyMetricSet; +import static com.yahoo.vespa.model.admin.monitoring.MetricSet.empty; /** * This is the admin pseudo-plugin of the Vespa model, responsible for @@ -49,7 +49,7 @@ public class Admin extends AbstractConfigProducer implements Serializable { private final Metrics metrics; private MetricsProxyContainerCluster metricsProxyCluster; - private MetricSet additionalDefaultMetrics = emptyMetricSet(); + private MetricSet additionalDefaultMetrics = empty(); private final List<Slobrok> slobroks = new ArrayList<>(); private Configserver defaultConfigserver; diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/ConsumersConfigGenerator.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/ConsumersConfigGenerator.java index 3f9edae10c0..2c039118cb9 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/ConsumersConfigGenerator.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/ConsumersConfigGenerator.java @@ -12,8 +12,6 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import static com.yahoo.vespa.model.admin.monitoring.VespaMetricsConsumer.VESPA_CONSUMER_ID; - /** * Helper class to generate config for metrics consumers. * @@ -22,14 +20,16 @@ import static com.yahoo.vespa.model.admin.monitoring.VespaMetricsConsumer.VESPA_ class ConsumersConfigGenerator { /** - * @param userConsumers The consumers set up by the user in services.xml - * @return A list of consumer builders (a mapping from consumer to its metrics) + * @param userConsumers the consumers set up by the user in services.xml + * @return a list of consumer builders (a mapping from consumer to its metrics) */ static List<Consumer.Builder> generateConsumers(MetricsConsumer defaultConsumer, Map<String, MetricsConsumer> userConsumers) { - // Normally, the user given consumers should not contain VESPA_CONSUMER_ID, but it's allowed for some internally used applications. + // Normally, the user given consumers should not contain VESPA_CONSUMER_ID, + // but it's allowed for some internally used applications. var allConsumers = new LinkedHashMap<>(userConsumers); - allConsumers.put(VESPA_CONSUMER_ID, combineConsumers(defaultConsumer, allConsumers.get(VESPA_CONSUMER_ID))); + allConsumers.put(MetricsConsumer.vespa.id(), + combineConsumers(defaultConsumer, allConsumers.get(MetricsConsumer.vespa.id()))); return allConsumers.values().stream() .map(ConsumersConfigGenerator::toConsumerBuilder) @@ -45,18 +45,18 @@ class ConsumersConfigGenerator { */ private static MetricsConsumer combineConsumers(MetricsConsumer original, MetricsConsumer overriding) { if (overriding == null) return original; - return addMetrics(original, overriding.getMetrics()); + return addMetrics(original, overriding.metrics()); } static MetricsConsumer addMetrics(MetricsConsumer original, Map<String, Metric> metrics) { if (metrics == null) return original; - Map<String, Metric> combinedMetrics = new LinkedHashMap<>(original.getMetrics()); + Map<String, Metric> combinedMetrics = new LinkedHashMap<>(original.metrics()); metrics.forEach((name, newMetric) -> - combinedMetrics.put(name, combineMetrics(original.getMetrics().get(name), newMetric))); + combinedMetrics.put(name, combineMetrics(original.metrics().get(name), newMetric))); - return new MetricsConsumer(original.getId(), - new MetricSet(original.getMetricSet().getId(), combinedMetrics.values())); + return new MetricsConsumer(original.id(), + new MetricSet(original.metricSet().getId(), combinedMetrics.values())); } private static Metric combineMetrics(Metric original, Metric newMetric) { @@ -64,8 +64,8 @@ class ConsumersConfigGenerator { } static Consumer.Builder toConsumerBuilder(MetricsConsumer consumer) { - Consumer.Builder builder = new Consumer.Builder().name(consumer.getId()); - consumer.getMetrics().values().forEach(metric -> builder.metric(toConsumerMetricBuilder(metric))); + Consumer.Builder builder = new Consumer.Builder().name(consumer.id()); + consumer.metrics().values().forEach(metric -> builder.metric(toConsumerMetricBuilder(metric))); return builder; } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java index b5936887b50..fbf6dcfd5eb 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java @@ -56,9 +56,7 @@ import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyContainerClus import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyContainerCluster.AppDimensionNames.LEGACY_APPLICATION; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyContainerCluster.AppDimensionNames.SYSTEM; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyContainerCluster.AppDimensionNames.TENANT; -import static com.yahoo.vespa.model.admin.monitoring.DefaultPublicConsumer.getDefaultPublicConsumer; -import static com.yahoo.vespa.model.admin.monitoring.MetricSet.emptyMetricSet; -import static com.yahoo.vespa.model.admin.monitoring.VespaMetricsConsumer.getVespaMetricsConsumer; +import static com.yahoo.vespa.model.admin.monitoring.MetricSet.empty; /** * Container cluster for metrics proxy containers. @@ -161,10 +159,10 @@ public class MetricsProxyContainerCluster extends ContainerCluster<MetricsProxyC @Override public void getConfig(ConsumersConfig.Builder builder) { - var amendedVespaConsumer = addMetrics(getVespaMetricsConsumer(), getAdditionalDefaultMetrics().getMetrics()); + var amendedVespaConsumer = addMetrics(MetricsConsumer.vespa, getAdditionalDefaultMetrics().getMetrics()); builder.consumer.addAll(generateConsumers(amendedVespaConsumer, getUserMetricsConsumers())); - builder.consumer.add(toConsumerBuilder(getDefaultPublicConsumer())); + builder.consumer.add(toConsumerBuilder(MetricsConsumer.defaultConsumer)); } @Override @@ -210,7 +208,7 @@ public class MetricsProxyContainerCluster extends ContainerCluster<MetricsProxyC private MetricSet getAdditionalDefaultMetrics() { return getAdmin() .map(Admin::getAdditionalDefaultMetrics) - .orElse(emptyMetricSet()); + .orElse(empty()); } // Returns the metrics consumers from services.xml diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/AutoscalingMetrics.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/AutoscalingMetrics.java new file mode 100644 index 00000000000..f6f51ed91fb --- /dev/null +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/AutoscalingMetrics.java @@ -0,0 +1,26 @@ +// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.vespa.model.admin.monitoring; + +import java.util.Arrays; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * Metrics used for autoscaling + * + * @author bratseth + */ +public class AutoscalingMetrics { + + public static final MetricSet autoscalingMetricSet = create(); + + private static MetricSet create() { + return new MetricSet("autoscaling", + metrics("cpu.util", "mem_total.util", "disk.util")); + } + + private static Set<Metric> metrics(String ... names) { + return Arrays.stream(names).map(Metric::new).collect(Collectors.toSet()); + } + +} diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/CloudWatch.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/CloudWatch.java index 5351c3fb3a7..66a278b3fb6 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/CloudWatch.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/CloudWatch.java @@ -8,6 +8,7 @@ import java.util.Optional; * @author gjoranv */ public class CloudWatch { + private final String region; private final String namespace; private final MetricsConsumer consumer; @@ -23,7 +24,7 @@ public class CloudWatch { public String region() { return region; } public String namespace() { return namespace; } - public String consumer() { return consumer.getId(); } + public String consumer() { return consumer.id(); } public Optional<HostedAuth> hostedAuth() {return Optional.ofNullable(hostedAuth); } public Optional<SharedCredentials> sharedCredentials() {return Optional.ofNullable(sharedCredentials); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultPublicMetrics.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultMetrics.java index c80cebe3d5b..adc0d0b1db8 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultPublicMetrics.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultMetrics.java @@ -9,7 +9,6 @@ import java.util.LinkedHashSet; import java.util.Set; import static com.yahoo.vespa.model.admin.monitoring.DefaultVespaMetrics.defaultVespaMetricSet; -import static java.util.Collections.emptyList; import static java.util.Collections.singleton; /** @@ -18,14 +17,14 @@ import static java.util.Collections.singleton; * * @author gjoranv */ -public class DefaultPublicMetrics { +public class DefaultMetrics { - public static final String DEFAULT_METRIC_SET_ID = "default"; + public static final String defaultMetricSetId = "default"; - public static MetricSet defaultPublicMetricSet = createMetricSet(); + public static MetricSet defaultMetricSet = createMetricSet(); private static MetricSet createMetricSet() { - return new MetricSet(DEFAULT_METRIC_SET_ID, + return new MetricSet(defaultMetricSetId, getAllMetrics(), singleton(defaultVespaMetricSet)); } @@ -95,6 +94,6 @@ public class DefaultPublicMetrics { return metrics; } - private DefaultPublicMetrics() { } + private DefaultMetrics() { } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultPublicConsumer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultPublicConsumer.java deleted file mode 100644 index 68b1fc3c983..00000000000 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultPublicConsumer.java +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -package com.yahoo.vespa.model.admin.monitoring; - -import ai.vespa.metricsproxy.http.ValuesFetcher; -import com.google.common.collect.ImmutableList; - -import static com.yahoo.vespa.model.admin.monitoring.DefaultPublicMetrics.defaultPublicMetricSet; -import static com.yahoo.vespa.model.admin.monitoring.DefaultVespaMetrics.defaultVespaMetricSet; -import static com.yahoo.vespa.model.admin.monitoring.SystemMetrics.systemMetricSet; -import static java.util.Collections.emptyList; - -/** - * @author gjoranv - */ -public class DefaultPublicConsumer { - - public static final String DEFAULT_PUBLIC_CONSUMER_ID = ValuesFetcher.DEFAULT_PUBLIC_CONSUMER_ID.id; - - private static final MetricSet publicConsumerMetrics = new MetricSet("public-consumer-metrics", - emptyList(), - ImmutableList.of(defaultPublicMetricSet, - systemMetricSet)); - - public static MetricsConsumer getDefaultPublicConsumer() { - return new MetricsConsumer(DEFAULT_PUBLIC_CONSUMER_ID, publicConsumerMetrics); - } - -} diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/MetricSet.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/MetricSet.java index d879a6f445d..30797f27789 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/MetricSet.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/MetricSet.java @@ -24,21 +24,19 @@ public class MetricSet { private final Map<String, Metric> metrics; private final Set<MetricSet> children; + public MetricSet(String id, Collection<Metric> metrics) { + this(id, metrics, Collections.emptySet()); + } public MetricSet(String id, Collection<Metric> metrics, Collection<MetricSet> children) { - Objects.requireNonNull(id, "Id cannot be null or empty."); + this.id = Objects.requireNonNull(id, "Id cannot be null or empty."); - this.id = id; this.metrics = toMapByName(metrics); this.children = new LinkedHashSet<>(children); } - public MetricSet(String id, Collection<Metric> metrics) { - this(id, metrics, Collections.emptySet()); - } - - public static MetricSet emptyMetricSet() { - return new MetricSet("empty", Collections.emptySet()); + public static MetricSet empty() { + return new MetricSet("empty", Set.of()); } public final String getId() { return id; } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/MetricsConsumer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/MetricsConsumer.java index a8fbcf50b02..698b01c306a 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/MetricsConsumer.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/MetricsConsumer.java @@ -1,26 +1,44 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.model.admin.monitoring; -import javax.annotation.concurrent.Immutable; +import ai.vespa.metricsproxy.core.VespaMetrics; +import ai.vespa.metricsproxy.http.ValuesFetcher; + import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Objects; +import static com.yahoo.vespa.model.admin.monitoring.AutoscalingMetrics.autoscalingMetricSet; +import static com.yahoo.vespa.model.admin.monitoring.DefaultMetrics.defaultMetricSet; +import static com.yahoo.vespa.model.admin.monitoring.NetworkMetrics.networkMetricSet; +import static com.yahoo.vespa.model.admin.monitoring.SystemMetrics.systemMetricSet; +import static com.yahoo.vespa.model.admin.monitoring.VespaMetricSet.vespaMetricSet; import static java.util.Collections.unmodifiableList; /** - * Represents an arbitrary metric consumer + * A metric consumer is a set of metrics given an id that can be requested at runtime. * - * @author trygve + * @author Trygve Berdal * @author gjoranv */ -@Immutable +// TODO: This construct seems redundant when we have metrics sets public class MetricsConsumer { + // Pre-defined consumers + public static final MetricsConsumer vespa = + consumer(VespaMetrics.vespaMetricsConsumerId.id, vespaMetricSet, systemMetricSet, networkMetricSet); + public static final MetricsConsumer defaultConsumer = + consumer(ValuesFetcher.defaultMetricsConsumerId.id, defaultMetricSet, systemMetricSet); + // Referenced from com.yahoo.vespa.hosted.provision.autoscale.NodeMetricsFetcher + public static final MetricsConsumer autoscaling = + consumer("autoscaling", autoscalingMetricSet); + private final String id; private final MetricSet metricSet; + // TODO: This shouldn't be here private final List<CloudWatch> cloudWatches = new ArrayList<>(); /** @@ -32,16 +50,16 @@ public class MetricsConsumer { this.metricSet = Objects.requireNonNull(metricSet, "A consumer must have a non-null metric set."); } - public String getId() { + public String id() { return id; } - public MetricSet getMetricSet() { return metricSet; } + public MetricSet metricSet() { return metricSet; } /** - * @return Map of metric with metric name as key + * @return map of metric with metric name as key */ - public Map<String, Metric> getMetrics() { + public Map<String, Metric> metrics() { return metricSet.getMetrics(); } @@ -53,4 +71,8 @@ public class MetricsConsumer { return unmodifiableList(cloudWatches); } + private static MetricsConsumer consumer(String id, MetricSet ... metricSets) { + return new MetricsConsumer(id, new MetricSet(id + "-consumer-metrics", List.of(), Arrays.asList(metricSets))); + } + } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricsConsumer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricsConsumer.java deleted file mode 100644 index 9f3bfdc8ae8..00000000000 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricsConsumer.java +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.model.admin.monitoring; - -import ai.vespa.metricsproxy.core.VespaMetrics; -import com.google.common.collect.ImmutableList; - -import static com.yahoo.vespa.model.admin.monitoring.NetworkMetrics.networkMetricSet; -import static com.yahoo.vespa.model.admin.monitoring.SystemMetrics.systemMetricSet; -import static com.yahoo.vespa.model.admin.monitoring.VespaMetricSet.vespaMetricSet; -import static java.util.Collections.emptyList; - -/** - * This class sets up the 'Vespa' metrics consumer, which is mainly used for Yamas in hosted Vespa. - * - * @author trygve - * @author gjoranv - */ -public class VespaMetricsConsumer { - - public static final String VESPA_CONSUMER_ID = VespaMetrics.VESPA_CONSUMER_ID.id; - - private static final MetricSet vespaConsumerMetrics = new MetricSet("vespa-consumer-metrics", - emptyList(), - ImmutableList.of(vespaMetricSet, - systemMetricSet, - networkMetricSet)); - - public static MetricsConsumer getVespaMetricsConsumer() { - return new MetricsConsumer(VESPA_CONSUMER_ID, vespaConsumerMetrics); - } - -} diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/Metrics.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/Metrics.java index 1f81f16a80b..6f9e9a08aa6 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/Metrics.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/Metrics.java @@ -17,7 +17,7 @@ public class Metrics { private final Map<String, MetricsConsumer> consumers = new LinkedHashMap<>(); public void addConsumer(MetricsConsumer consumer) { - consumers.put(consumer.getId(), consumer); + consumers.put(consumer.id(), consumer); } public Map<String, MetricsConsumer> getConsumers() { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/PredefinedMetricSets.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/PredefinedMetricSets.java index 694108d4bb1..dd514f1e245 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/PredefinedMetricSets.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/PredefinedMetricSets.java @@ -7,7 +7,8 @@ import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; -import static com.yahoo.vespa.model.admin.monitoring.DefaultPublicMetrics.defaultPublicMetricSet; +import static com.yahoo.vespa.model.admin.monitoring.AutoscalingMetrics.autoscalingMetricSet; +import static com.yahoo.vespa.model.admin.monitoring.DefaultMetrics.defaultMetricSet; import static com.yahoo.vespa.model.admin.monitoring.NetworkMetrics.networkMetricSet; import static com.yahoo.vespa.model.admin.monitoring.SystemMetrics.systemMetricSet; import static com.yahoo.vespa.model.admin.monitoring.DefaultVespaMetrics.defaultVespaMetricSet; @@ -20,14 +21,17 @@ import static com.yahoo.vespa.model.admin.monitoring.VespaMetricSet.vespaMetricS */ public class PredefinedMetricSets { - public static final Map<String, MetricSet> predefinedMetricSets = toMapById( - defaultPublicMetricSet, + private static final Map<String, MetricSet> sets = toMapById( + defaultMetricSet, defaultVespaMetricSet, vespaMetricSet, systemMetricSet, - networkMetricSet + networkMetricSet, + autoscalingMetricSet ); + public static Map<String, MetricSet> get() { return sets; } + private static Map<String, MetricSet> toMapById(MetricSet... metricSets) { Map<String, MetricSet> availableMetricSets = new LinkedHashMap<>(); for (MetricSet metricSet : metricSets) { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/MetricsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/MetricsBuilder.java index b686288868f..919830d912f 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/MetricsBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/MetricsBuilder.java @@ -14,8 +14,6 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import static com.yahoo.vespa.model.admin.monitoring.DefaultPublicConsumer.DEFAULT_PUBLIC_CONSUMER_ID; -import static com.yahoo.vespa.model.admin.monitoring.VespaMetricsConsumer.VESPA_CONSUMER_ID; import static com.yahoo.vespa.model.admin.monitoring.DefaultVespaMetrics.defaultVespaMetricSet; import static com.yahoo.vespa.model.admin.monitoring.SystemMetrics.systemMetricSet; @@ -85,11 +83,11 @@ public class MetricsBuilder { } private void throwIfIllegalConsumerId(Metrics metrics, String consumerId) { - if (consumerId.equalsIgnoreCase(VESPA_CONSUMER_ID) && applicationType != ApplicationType.HOSTED_INFRASTRUCTURE) + if (consumerId.equalsIgnoreCase(MetricsConsumer.vespa.id()) && applicationType != ApplicationType.HOSTED_INFRASTRUCTURE) throw new IllegalArgumentException("'Vespa' is not allowed as metrics consumer id (case is ignored.)"); - if (consumerId.equalsIgnoreCase(DEFAULT_PUBLIC_CONSUMER_ID)) - throw new IllegalArgumentException("'" + DEFAULT_PUBLIC_CONSUMER_ID + "' is not allowed as metrics consumer id (case is ignored.)"); + if (consumerId.equalsIgnoreCase(MetricsConsumer.defaultConsumer.id())) + throw new IllegalArgumentException("'" + MetricsConsumer.defaultConsumer.id() + "' is not allowed as metrics consumer id (case is ignored.)"); if (metrics.hasConsumerIgnoreCase(consumerId)) throw new IllegalArgumentException("'" + consumerId + "' is used as id for two metrics consumers (case is ignored.)"); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/CloudWatchValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/CloudWatchValidator.java index 462ac39fa84..025b7875677 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/CloudWatchValidator.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/CloudWatchValidator.java @@ -31,7 +31,7 @@ public class CloudWatchValidator extends Validator { } private List<String> consumerIds(List<MetricsConsumer> offendingConsumers) { - return offendingConsumers.stream().map(MetricsConsumer::getId).collect(toList()); + return offendingConsumers.stream().map(MetricsConsumer::id).collect(toList()); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java index d2f06da992c..b643f771d73 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java @@ -18,6 +18,7 @@ import com.yahoo.vespa.model.admin.ModelConfigProvider; import com.yahoo.vespa.model.admin.monitoring.DefaultMonitoring; import com.yahoo.vespa.model.admin.monitoring.Monitoring; import com.yahoo.vespa.model.admin.monitoring.builder.Metrics; +import com.yahoo.vespa.model.admin.monitoring.builder.PredefinedMetricSets; import com.yahoo.vespa.model.admin.monitoring.builder.xml.MetricsBuilder; import com.yahoo.vespa.model.filedistribution.FileDistributionConfigProducer; import org.w3c.dom.Element; @@ -25,8 +26,6 @@ import org.w3c.dom.Element; import java.util.ArrayList; import java.util.List; -import static com.yahoo.vespa.model.admin.monitoring.builder.PredefinedMetricSets.predefinedMetricSets; - /** * A base class for admin model builders, to support common functionality across versions. * @@ -69,8 +68,8 @@ public abstract class DomAdminBuilderBase extends VespaDomBuilder.DomConfigProdu @Override protected Admin doBuild(DeployState deployState, AbstractConfigProducer parent, Element adminElement) { Monitoring monitoring = getMonitoring(XML.getChild(adminElement,"monitoring"), deployState.isHosted()); - Metrics metrics = new MetricsBuilder(applicationType, predefinedMetricSets) - .buildMetrics(XML.getChild(adminElement, "metrics")); + Metrics metrics = new MetricsBuilder(applicationType, PredefinedMetricSets.get()) + .buildMetrics(XML.getChild(adminElement, "metrics")); FileDistributionConfigProducer fileDistributionConfigProducer = getFileDistributionConfigProducer(parent, deployState.isHosted()); Admin admin = new Admin(parent, monitoring, metrics, multitenant, fileDistributionConfigProducer, deployState.isHosted()); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/DedicatedAdminV4Test.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/DedicatedAdminV4Test.java index be7fc19a429..71dc1564277 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/admin/DedicatedAdminV4Test.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/DedicatedAdminV4Test.java @@ -87,7 +87,7 @@ public class DedicatedAdminV4Test { MetricsConsumer consumer = model.getAdmin().getUserMetrics().getConsumers().get("slingstone"); assertNotNull(consumer); - Metric metric = consumer.getMetrics().get("foobar.count"); + Metric metric = consumer.metrics().get("foobar.count"); assertNotNull(metric); assertEquals("foobar", metric.outputName); } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsConsumersTest.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsConsumersTest.java index 12a10a7e354..36eb30073b3 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsConsumersTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsConsumersTest.java @@ -4,6 +4,7 @@ import ai.vespa.metricsproxy.core.ConsumersConfig; import com.yahoo.vespa.model.VespaModel; import com.yahoo.vespa.model.admin.monitoring.Metric; import com.yahoo.vespa.model.admin.monitoring.MetricSet; +import com.yahoo.vespa.model.admin.monitoring.MetricsConsumer; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -16,13 +17,11 @@ import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.c import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getCustomConsumer; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getModel; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.servicesWithAdminOnly; -import static com.yahoo.vespa.model.admin.monitoring.DefaultPublicConsumer.DEFAULT_PUBLIC_CONSUMER_ID; -import static com.yahoo.vespa.model.admin.monitoring.DefaultPublicMetrics.defaultPublicMetricSet; +import static com.yahoo.vespa.model.admin.monitoring.DefaultMetrics.defaultMetricSet; import static com.yahoo.vespa.model.admin.monitoring.DefaultVespaMetrics.defaultVespaMetricSet; import static com.yahoo.vespa.model.admin.monitoring.NetworkMetrics.networkMetricSet; import static com.yahoo.vespa.model.admin.monitoring.SystemMetrics.systemMetricSet; import static com.yahoo.vespa.model.admin.monitoring.VespaMetricSet.vespaMetricSet; -import static com.yahoo.vespa.model.admin.monitoring.VespaMetricsConsumer.VESPA_CONSUMER_ID; import static java.util.Collections.singleton; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -34,7 +33,7 @@ import static org.junit.Assert.assertTrue; */ public class MetricsConsumersTest { - private static int numPublicDefaultMetrics = defaultPublicMetricSet.getMetrics().size(); + private static int numPublicDefaultMetrics = defaultMetricSet.getMetrics().size(); private static int numDefaultVespaMetrics = defaultVespaMetricSet.getMetrics().size(); private static int numVespaMetrics = vespaMetricSet.getMetrics().size(); private static int numSystemMetrics = systemMetricSet.getMetrics().size(); @@ -48,9 +47,9 @@ public class MetricsConsumersTest { public void default_public_consumer_is_set_up_for_self_hosted() { ConsumersConfig config = consumersConfigFromXml(servicesWithAdminOnly(), self_hosted); assertEquals(2, config.consumer().size()); - assertEquals(config.consumer(1).name(), DEFAULT_PUBLIC_CONSUMER_ID); + assertEquals(MetricsConsumer.defaultConsumer.id(), config.consumer(1).name()); - int numMetricsForPublicDefaultConsumer = defaultPublicMetricSet.getMetrics().size() + numSystemMetrics; + int numMetricsForPublicDefaultConsumer = defaultMetricSet.getMetrics().size() + numSystemMetrics; assertEquals(numMetricsForPublicDefaultConsumer, config.consumer(1).metric().size()); } @@ -58,14 +57,14 @@ public class MetricsConsumersTest { public void vespa_consumer_and_default_public_consumer_is_set_up_for_hosted() { ConsumersConfig config = consumersConfigFromXml(servicesWithAdminOnly(), hosted); assertEquals(2, config.consumer().size()); - assertEquals(config.consumer(0).name(), VESPA_CONSUMER_ID); - assertEquals(config.consumer(1).name(), DEFAULT_PUBLIC_CONSUMER_ID); + assertEquals(MetricsConsumer.vespa.id(), config.consumer(0).name()); + assertEquals(MetricsConsumer.defaultConsumer.id(), config.consumer(1).name()); } @Test public void vespa_consumer_is_always_present_and_has_all_vespa_metrics_and_all_system_metrics() { ConsumersConfig config = consumersConfigFromXml(servicesWithAdminOnly(), self_hosted); - assertEquals(config.consumer(0).name(), VESPA_CONSUMER_ID); + assertEquals(MetricsConsumer.vespa.id(), config.consumer(0).name()); assertEquals(numMetricsForVespaConsumer, config.consumer(0).metric().size()); } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java index 8ecb13d7ae5..b6037d2614e 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java @@ -14,12 +14,11 @@ import ai.vespa.metricsproxy.service.VespaServicesConfig; import com.yahoo.search.config.QrStartConfig; import com.yahoo.vespa.model.VespaModel; import com.yahoo.vespa.model.admin.monitoring.Metric; +import com.yahoo.vespa.model.admin.monitoring.MetricsConsumer; import com.yahoo.vespa.model.test.VespaModelTester; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.TestMode.hosted; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.TestMode.self_hosted; -import static com.yahoo.vespa.model.admin.monitoring.DefaultPublicConsumer.DEFAULT_PUBLIC_CONSUMER_ID; -import static com.yahoo.vespa.model.admin.monitoring.VespaMetricsConsumer.VESPA_CONSUMER_ID; /** * @author gjoranv @@ -76,7 +75,8 @@ class MetricsProxyModelTester { static ConsumersConfig.Consumer getCustomConsumer(String servicesXml) { ConsumersConfig config = consumersConfigFromXml(servicesXml, self_hosted); for (ConsumersConfig.Consumer consumer : config.consumer()) { - if (! consumer.name().equals(VESPA_CONSUMER_ID) && ! consumer.name().equals(DEFAULT_PUBLIC_CONSUMER_ID)) + if (! consumer.name().equals(MetricsConsumer.vespa.id()) && + ! consumer.name().equals(MetricsConsumer.defaultConsumer.id())) return consumer; } throw new RuntimeException("Custom consumer not found!"); diff --git a/config/src/main/java/com/yahoo/vespa/config/ConfigPayload.java b/config/src/main/java/com/yahoo/vespa/config/ConfigPayload.java index f4858843574..2f3a4bd2172 100644 --- a/config/src/main/java/com/yahoo/vespa/config/ConfigPayload.java +++ b/config/src/main/java/com/yahoo/vespa/config/ConfigPayload.java @@ -22,6 +22,7 @@ import java.io.OutputStream; * @author Ulf Lilleengen */ public class ConfigPayload { + private final Slime slime; public ConfigPayload(Slime slime) { diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/Application.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/Application.java index 51213b173dd..2e73a02c75b 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/Application.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/Application.java @@ -37,7 +37,9 @@ import java.util.Set; public class Application implements ModelResult { private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(Application.class.getName()); - private final long appGeneration; // The config generation for this application + + /** The config generation for this application. */ + private final long applicationGeneration; private final boolean internalRedeploy; private final Version vespaVersion; private final Model model; @@ -45,12 +47,12 @@ public class Application implements ModelResult { private final MetricUpdater metricUpdater; private final ApplicationId app; - public Application(Model model, ServerCache cache, long appGeneration, boolean internalRedeploy, + public Application(Model model, ServerCache cache, long applicationGeneration, boolean internalRedeploy, Version vespaVersion, MetricUpdater metricUpdater, ApplicationId app) { Objects.requireNonNull(model, "The model cannot be null"); this.model = model; this.cache = cache; - this.appGeneration = appGeneration; + this.applicationGeneration = applicationGeneration; this.internalRedeploy = internalRedeploy; this.vespaVersion = vespaVersion; this.metricUpdater = metricUpdater; @@ -62,7 +64,7 @@ public class Application implements ModelResult { * * @return the config generation */ - public Long getApplicationGeneration() { return appGeneration; } + public Long getApplicationGeneration() { return applicationGeneration; } /** Returns the application model, never null */ @Override @@ -72,13 +74,13 @@ public class Application implements ModelResult { public String toString() { StringBuilder sb = new StringBuilder(); sb.append("application '").append(app.application().value()).append("', "); - sb.append("generation ").append(appGeneration).append(", "); + sb.append("generation ").append(applicationGeneration).append(", "); sb.append("vespa version ").append(vespaVersion); return sb.toString(); } public ApplicationInfo toApplicationInfo() { - return new ApplicationInfo(app, appGeneration, model); + return new ApplicationInfo(app, applicationGeneration, model); } public ServerCache getCache() { @@ -134,7 +136,7 @@ public class Application implements ModelResult { throw new ConfigurationRuntimeException("Unable to resolve config " + configKey); } - ConfigResponse configResponse = responseFactory.createResponse(payload, appGeneration, internalRedeploy); + ConfigResponse configResponse = responseFactory.createResponse(payload, applicationGeneration, internalRedeploy); metricUpdater.incrementProcTime(System.currentTimeMillis() - start); if (useCache(req)) { cache.put(cacheKey, configResponse, configResponse.getConfigMd5()); diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java index 6d2ef4028c6..7601d90043e 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java @@ -50,7 +50,7 @@ public class ActivatedModelsBuilder extends ModelsBuilder<Application> { private static final Logger log = Logger.getLogger(ActivatedModelsBuilder.class.getName()); private final TenantName tenant; - private final long appGeneration; + private final long applicationGeneration; private final SessionZooKeeperClient zkClient; private final PermanentApplicationPackage permanentApplicationPackage; private final ConfigDefinitionRepo configDefinitionRepo; @@ -60,7 +60,7 @@ public class ActivatedModelsBuilder extends ModelsBuilder<Application> { private final SecretStore secretStore; public ActivatedModelsBuilder(TenantName tenant, - long appGeneration, + long applicationGeneration, SessionZooKeeperClient zkClient, GlobalComponentRegistry globalComponentRegistry) { super(globalComponentRegistry.getModelFactoryRegistry(), @@ -68,7 +68,7 @@ public class ActivatedModelsBuilder extends ModelsBuilder<Application> { globalComponentRegistry.getZone(), HostProvisionerProvider.from(globalComponentRegistry.getHostProvisioner())); this.tenant = tenant; - this.appGeneration = appGeneration; + this.applicationGeneration = applicationGeneration; this.zkClient = zkClient; this.permanentApplicationPackage = globalComponentRegistry.getPermanentApplicationPackage(); this.configDefinitionRepo = globalComponentRegistry.getStaticConfigDefinitionRepo(); @@ -87,7 +87,7 @@ public class ActivatedModelsBuilder extends ModelsBuilder<Application> { Optional<AllocatedHosts> ignored // Ignored since we have this in the app package for activated models ) { log.log(Level.FINE, String.format("Loading model version %s for session %s application %s", - modelFactory.version(), appGeneration, applicationId)); + modelFactory.version(), applicationGeneration, applicationId)); ModelContext.Properties modelContextProperties = createModelContextProperties(applicationId); Provisioned provisioned = new Provisioned(); ModelContext modelContext = new ModelContextImpl( @@ -110,7 +110,7 @@ public class ActivatedModelsBuilder extends ModelsBuilder<Application> { ServerCache serverCache = new ServerCache(configDefinitionRepo, zkClient.getUserConfigDefinitions()); return new Application(modelFactory.createModel(modelContext), serverCache, - appGeneration, + applicationGeneration, applicationPackage.getMetaData().isInternalRedeploy(), modelFactory.version(), applicationMetricUpdater, diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/ConfigResponseFactory.java b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/ConfigResponseFactory.java index 88aa41ca735..415fa764823 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/ConfigResponseFactory.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/ConfigResponseFactory.java @@ -26,10 +26,11 @@ public interface ConfigResponseFactory { /** * Creates a {@link ConfigResponse} for a given payload and generation. - * @param payload the {@link ConfigPayload} to put in the response. - * @param generation the payload generation. @return A {@link ConfigResponse} that can be sent to the client. - * @param internalRedeploy whether this config generation was produced by an internal redeployment, + * @param payload the {@link ConfigPayload} to put in the response + * @param generation the payload generation + * @param internalRedeploy whether this config generation was produced by an internal redeployment * not a change to the application package + * @return a {@link ConfigResponse} that can be sent to the client */ ConfigResponse createResponse(ConfigPayload payload, long generation, boolean internalRedeploy); diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/MetricConsumerFactory.java b/container-core/src/main/java/com/yahoo/container/jdisc/MetricConsumerFactory.java index d0cf07584e4..ecf120bfe44 100644 --- a/container-core/src/main/java/com/yahoo/container/jdisc/MetricConsumerFactory.java +++ b/container-core/src/main/java/com/yahoo/container/jdisc/MetricConsumerFactory.java @@ -4,8 +4,8 @@ package com.yahoo.container.jdisc; import com.yahoo.jdisc.application.MetricConsumer; /** - * <p>This is the interface to implement if one wishes to configure a non-default <code>MetricConsumer</code>. Simply - * add the implementing class as a component in your services.xml file.</p> + * This is the interface to implement if one wishes to configure a non-default <code>MetricConsumer</code>. Simply + * add the implementing class as a component in your services.xml file. * * @author Simon Thoresen Hult */ diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java index c04dca465a1..b895d6221c3 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java @@ -21,7 +21,6 @@ import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; -import java.util.logging.Logger; import java.util.stream.Collectors; import static ai.vespa.metricsproxy.metric.dimensions.PublicDimensions.INTERNAL_SERVICE_ID; @@ -31,14 +30,11 @@ import static ai.vespa.metricsproxy.metric.model.ServiceId.toServiceId; import static com.google.common.base.Strings.isNullOrEmpty; /** - * @author Unknown * @author gjoranv */ public class VespaMetrics { - private static final Logger log = Logger.getLogger(VespaMetrics.class.getPackage().getName()); - - public static final ConsumerId VESPA_CONSUMER_ID = toConsumerId("Vespa"); + public static final ConsumerId vespaMetricsConsumerId = toConsumerId("Vespa"); public static final DimensionId METRIC_TYPE_DIMENSION_ID = toDimensionId("metrictype"); public static final DimensionId INSTANCE_DIMENSION_ID = toDimensionId(INTERNAL_SERVICE_ID); @@ -68,8 +64,8 @@ public class VespaMetrics { } /** - * @param services The services to get metrics for - * @return A list of metrics packet builders (to allow modification by the caller). + * @param services the services to get metrics for + * @return a list of metrics packet builders (to allow modification by the caller) */ public List<MetricsPacket.Builder> getMetrics(List<VespaService> services) { List<MetricsPacket.Builder> metricsPackets = new ArrayList<>(); @@ -253,7 +249,7 @@ public class VespaMetrics { String alias = key; boolean isForwarded = false; - for (ConsumersConfig.Consumer.Metric metricConsumer : getMetricDefinitions(VESPA_CONSUMER_ID)) { + for (ConsumersConfig.Consumer.Metric metricConsumer : getMetricDefinitions(vespaMetricsConsumerId)) { if (metricConsumer.name().equals(key)) { alias = metricConsumer.outputname(); isForwarded = true; 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 51bdae1aab3..cf2f6210f39 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 @@ -24,7 +24,7 @@ public class ValuesFetcher { private static final Logger log = Logger.getLogger(ValuesFetcher.class.getName()); - public static final ConsumerId DEFAULT_PUBLIC_CONSUMER_ID = toConsumerId("default"); + public static final ConsumerId defaultMetricsConsumerId = toConsumerId("default"); private final MetricsManager metricsManager; private final VespaServices vespaServices; @@ -62,12 +62,12 @@ public class ValuesFetcher { } public static ConsumerId getConsumerOrDefault(String requestedConsumer, MetricsConsumers consumers) { - if (requestedConsumer == null) return DEFAULT_PUBLIC_CONSUMER_ID; + 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 DEFAULT_PUBLIC_CONSUMER_ID; + return defaultMetricsConsumerId; } return consumerId; } diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsRetriever.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsRetriever.java index 5c7e64c4ed1..15f924505be 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsRetriever.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsRetriever.java @@ -22,7 +22,7 @@ import java.util.concurrent.TimeUnit; 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.http.ValuesFetcher.defaultMetricsConsumerId; import static java.util.Collections.emptyList; import static java.util.stream.Collectors.toMap; @@ -50,7 +50,6 @@ public class ApplicationMetricsRetriever extends AbstractComponent { // Non-final for testing private Duration taskTimeout; - @Inject public ApplicationMetricsRetriever(MetricsNodesConfig nodesConfig) { clients = createNodeClients(nodesConfig); @@ -66,7 +65,7 @@ public class ApplicationMetricsRetriever extends AbstractComponent { } public Map<Node, List<MetricsPacket>> getMetrics() { - return getMetrics(DEFAULT_PUBLIC_CONSUMER_ID); + return getMetrics(defaultMetricsConsumerId); } public Map<Node, List<MetricsPacket>> getMetrics(ConsumerId consumer) { diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricsPacket.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricsPacket.java index 8d5a1f50918..2d5cd9acb5d 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricsPacket.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricsPacket.java @@ -29,6 +29,7 @@ import static java.util.stream.Collectors.joining; * @author gjoranv */ public class MetricsPacket { + public final int statusCode; public final String statusMessage; public final long timestamp; @@ -80,7 +81,8 @@ public class MetricsPacket { } public static class Builder { - // Set sensible defaults here, and use null guard in all setters. + + // Set defaults here, and use null guard in all setters. // Except for 'service' for which we require an explicit non-null value. private ServiceId service; private int statusCode = 0; 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 d2838d5b1d2..d71b11a4ff2 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,7 +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.http.ValuesFetcher.defaultMetricsConsumerId; import static ai.vespa.metricsproxy.metric.model.ServiceId.toServiceId; import static com.yahoo.stream.CustomCollectors.toLinkedMap; import static java.util.Collections.emptyList; @@ -123,7 +123,7 @@ public class YamasJsonUtil { private static YamasJsonModel.YamasJsonNamespace toYamasJsonNamespaces(Collection<ConsumerId> consumers) { YamasJsonModel.YamasJsonNamespace namespaces = new YamasJsonModel.YamasJsonNamespace(); namespaces.namespaces = consumers.stream() - .filter(consumerId -> consumerId != DEFAULT_PUBLIC_CONSUMER_ID) + .filter(consumerId -> consumerId != defaultMetricsConsumerId) .map(consumer -> consumer.id) .collect(Collectors.toList()); return namespaces; diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/node/ServiceHealthGatherer.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/node/ServiceHealthGatherer.java index 923fb4d646d..a11acf07156 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/node/ServiceHealthGatherer.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/node/ServiceHealthGatherer.java @@ -12,13 +12,11 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; - /** * @author olaa */ public class ServiceHealthGatherer { - protected static List<MetricsPacket.Builder> gatherServiceHealthMetrics(VespaServices vespaServices) { return vespaServices.getVespaServices() .stream() @@ -33,4 +31,5 @@ public class ServiceHealthGatherer { ) .collect(Collectors.toList()); } + } diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/TestUtil.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/TestUtil.java index e067639023d..27ac3bbab01 100644 --- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/TestUtil.java +++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/TestUtil.java @@ -35,4 +35,5 @@ public class TestUtil { } return new BufferedReader(new InputStreamReader(in)).lines().collect(Collectors.joining("\n")); } + } diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/core/MetricsManagerTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/core/MetricsManagerTest.java index f21774aeb15..fd1961fc168 100644 --- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/core/MetricsManagerTest.java +++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/core/MetricsManagerTest.java @@ -28,7 +28,7 @@ import java.util.Map; import static ai.vespa.metricsproxy.core.MetricsManager.VESPA_VERSION; import static ai.vespa.metricsproxy.core.VespaMetrics.METRIC_TYPE_DIMENSION_ID; -import static ai.vespa.metricsproxy.core.VespaMetrics.VESPA_CONSUMER_ID; +import static ai.vespa.metricsproxy.core.VespaMetrics.vespaMetricsConsumerId; import static ai.vespa.metricsproxy.metric.ExternalMetrics.ROLE_DIMENSION; import static ai.vespa.metricsproxy.metric.model.DimensionId.toDimensionId; import static ai.vespa.metricsproxy.metric.model.MetricId.toMetricId; @@ -241,7 +241,7 @@ public class MetricsManagerTest { return new MetricsConsumers(new ConsumersConfig.Builder() .consumer(new Consumer.Builder() - .name(VESPA_CONSUMER_ID.id) + .name(vespaMetricsConsumerId.id) .metric(new Consumer.Metric.Builder() .name(WHITELISTED_METRIC_ID) .outputname(WHITELISTED_METRIC_ID)) diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/HttpHandlerTestBase.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/HttpHandlerTestBase.java index d776368687d..ab586334baa 100644 --- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/HttpHandlerTestBase.java +++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/HttpHandlerTestBase.java @@ -22,7 +22,7 @@ import com.yahoo.container.jdisc.RequestHandlerTestDriver; import java.time.Instant; import java.util.List; -import static ai.vespa.metricsproxy.http.ValuesFetcher.DEFAULT_PUBLIC_CONSUMER_ID; +import static ai.vespa.metricsproxy.http.ValuesFetcher.defaultMetricsConsumerId; import static ai.vespa.metricsproxy.metric.ExternalMetrics.VESPA_NODE_SERVICE_ID; import static ai.vespa.metricsproxy.metric.dimensions.PublicDimensions.REASON; import static ai.vespa.metricsproxy.service.DummyService.METRIC_1; @@ -71,7 +71,7 @@ public class HttpHandlerTestBase { return new MetricsConsumers(new ConsumersConfig.Builder() .consumer(new ConsumersConfig.Consumer.Builder() - .name(DEFAULT_PUBLIC_CONSUMER_ID.id) + .name(defaultMetricsConsumerId.id) .metric(new ConsumersConfig.Consumer.Metric.Builder() .name(CPU_METRIC) .outputname(CPU_METRIC)) diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsHandlerTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsHandlerTest.java index 0fa6fea7d11..d7576718e8a 100644 --- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsHandlerTest.java +++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsHandlerTest.java @@ -12,7 +12,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.github.tomakehurst.wiremock.junit.WireMockRule; import com.yahoo.container.jdisc.RequestHandlerTestDriver; import java.util.regex.Pattern; -import java.util.stream.Collectors; + import org.json.JSONArray; import org.json.JSONObject; import org.junit.Before; @@ -26,7 +26,7 @@ import java.util.Map; import java.util.concurrent.Executors; import static ai.vespa.metricsproxy.TestUtil.getFileContents; -import static ai.vespa.metricsproxy.http.ValuesFetcher.DEFAULT_PUBLIC_CONSUMER_ID; +import static ai.vespa.metricsproxy.http.ValuesFetcher.defaultMetricsConsumerId; import static ai.vespa.metricsproxy.http.application.ApplicationMetricsHandler.METRICS_V1_PATH; import static ai.vespa.metricsproxy.http.application.ApplicationMetricsHandler.METRICS_VALUES_PATH; import static ai.vespa.metricsproxy.http.application.ApplicationMetricsHandler.PROMETHEUS_VALUES_PATH; @@ -89,7 +89,7 @@ public class ApplicationMetricsHandlerTest { private void setupWireMock() { port = wireMockRule.port(); wireMockRule.stubFor(get(urlPathEqualTo(MOCK_METRICS_PATH)) - .withQueryParam("consumer", equalTo(DEFAULT_PUBLIC_CONSUMER_ID.id)) + .withQueryParam("consumer", equalTo(defaultMetricsConsumerId.id)) .willReturn(aResponse().withBody(RESPONSE))); // Add a slightly different response for a custom consumer. @@ -132,7 +132,7 @@ public class ApplicationMetricsHandlerTest { @Test public void response_contains_node() { - GenericApplicationModel jsonModel = getResponseAsJsonModel(DEFAULT_PUBLIC_CONSUMER_ID.id); + GenericApplicationModel jsonModel = getResponseAsJsonModel(defaultMetricsConsumerId.id); assertEquals(1, jsonModel.nodes.size()); GenericJsonModel nodeModel = jsonModel.nodes.get(0); @@ -161,7 +161,7 @@ public class ApplicationMetricsHandlerTest { @Test public void response_contains_services_with_metrics() { - GenericApplicationModel jsonModel = getResponseAsJsonModel(DEFAULT_PUBLIC_CONSUMER_ID.id); + GenericApplicationModel jsonModel = getResponseAsJsonModel(defaultMetricsConsumerId.id); GenericJsonModel nodeModel = jsonModel.nodes.get(0); assertEquals(2, nodeModel.services.size()); @@ -174,7 +174,7 @@ public class ApplicationMetricsHandlerTest { @Test public void metrics_processors_are_applied() { - GenericApplicationModel jsonModel = getResponseAsJsonModel(DEFAULT_PUBLIC_CONSUMER_ID.id); + GenericApplicationModel jsonModel = getResponseAsJsonModel(defaultMetricsConsumerId.id); GenericService searchnode = jsonModel.nodes.get(0).services.get(0); Map<String, String> dimensions = searchnode.metrics.get(0).dimensions; @@ -233,7 +233,7 @@ public class ApplicationMetricsHandlerTest { private static MetricsConsumers getMetricsConsumers() { return new MetricsConsumers(new ConsumersConfig.Builder() .consumer(new ConsumersConfig.Consumer.Builder() - .name(DEFAULT_PUBLIC_CONSUMER_ID.id)) + .name(defaultMetricsConsumerId.id)) .consumer(new ConsumersConfig.Consumer.Builder() .name(CUSTOM_CONSUMER)) .build()); 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 d8443ece8e8..eba32941620 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 @@ -16,7 +16,7 @@ import java.net.URI; import java.util.List; import static ai.vespa.metricsproxy.TestUtil.getFileContents; -import static ai.vespa.metricsproxy.http.ValuesFetcher.DEFAULT_PUBLIC_CONSUMER_ID; +import static ai.vespa.metricsproxy.http.ValuesFetcher.defaultMetricsConsumerId; import static ai.vespa.metricsproxy.metric.model.ConsumerId.toConsumerId; import static ai.vespa.metricsproxy.metric.model.MetricId.toMetricId; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; @@ -56,12 +56,12 @@ public class NodeMetricsClientTest { @BeforeClass public static void setupWireMock() { node = new Node("id", "localhost", wireMockRule.port(), MetricsV1Handler.VALUES_PATH); - URI metricsUri = node.metricsUri(DEFAULT_PUBLIC_CONSUMER_ID); + URI metricsUri = node.metricsUri(defaultMetricsConsumerId); wireMockRule.stubFor(get(urlPathEqualTo(metricsUri.getPath())) .willReturn(aResponse().withBody(RESPONSE))); wireMockRule.stubFor(get(urlPathEqualTo(metricsUri.getPath())) - .withQueryParam("consumer", equalTo(DEFAULT_PUBLIC_CONSUMER_ID.id)) + .withQueryParam("consumer", equalTo(defaultMetricsConsumerId.id)) .willReturn(aResponse().withBody(RESPONSE))); // Add a slightly different response for a custom consumer. @@ -85,34 +85,34 @@ public class NodeMetricsClientTest { @Test public void metrics_are_retrieved_upon_first_request() { - List<MetricsPacket> metrics = nodeMetricsClient.getMetrics(DEFAULT_PUBLIC_CONSUMER_ID); + List<MetricsPacket> metrics = nodeMetricsClient.getMetrics(defaultMetricsConsumerId); assertEquals(1, nodeMetricsClient.snapshotsRetrieved()); assertEquals(4, metrics.size()); } @Test public void cached_metrics_are_used_when_ttl_has_not_expired() { - nodeMetricsClient.getMetrics(DEFAULT_PUBLIC_CONSUMER_ID); + nodeMetricsClient.getMetrics(defaultMetricsConsumerId); assertEquals(1, nodeMetricsClient.snapshotsRetrieved()); clock.advance(NodeMetricsClient.METRICS_TTL.minusMillis(1)); - nodeMetricsClient.getMetrics(DEFAULT_PUBLIC_CONSUMER_ID); + nodeMetricsClient.getMetrics(defaultMetricsConsumerId); assertEquals(1, nodeMetricsClient.snapshotsRetrieved()); } @Test public void metrics_are_refreshed_when_ttl_has_expired() { - nodeMetricsClient.getMetrics(DEFAULT_PUBLIC_CONSUMER_ID); + nodeMetricsClient.getMetrics(defaultMetricsConsumerId); assertEquals(1, nodeMetricsClient.snapshotsRetrieved()); clock.advance(NodeMetricsClient.METRICS_TTL.plusMillis(1)); - nodeMetricsClient.getMetrics(DEFAULT_PUBLIC_CONSUMER_ID); + nodeMetricsClient.getMetrics(defaultMetricsConsumerId); assertEquals(2, nodeMetricsClient.snapshotsRetrieved()); } @Test public void metrics_for_different_consumers_are_cached_separately() { - List<MetricsPacket> defaultMetrics = nodeMetricsClient.getMetrics(DEFAULT_PUBLIC_CONSUMER_ID); + List<MetricsPacket> defaultMetrics = nodeMetricsClient.getMetrics(defaultMetricsConsumerId); assertEquals(1, nodeMetricsClient.snapshotsRetrieved()); assertEquals(4, defaultMetrics.size()); 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 d3a5622d263..67430e50e10 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 @@ -7,8 +7,8 @@ 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.core.VespaMetrics.vespaMetricsConsumerId; +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; @@ -60,18 +60,18 @@ 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)) + .addConsumers(Set.of(vespaMetricsConsumerId, defaultMetricsConsumerId)) .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)); + assertEquals(vespaMetricsConsumerId.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)) + .addConsumers(Set.of(defaultMetricsConsumerId)) .build(); YamasJsonModel jsonModel = YamasJsonUtil.toYamasArray(singleton(packet)).metrics.get(0); assertNull(jsonModel.routing); diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/IntegrationTester.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/IntegrationTester.java index 7275cb737c4..9dcf2d9c375 100644 --- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/IntegrationTester.java +++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/IntegrationTester.java @@ -22,7 +22,7 @@ import ai.vespa.metricsproxy.service.VespaServicesConfig.Service; import java.io.IOException; -import static ai.vespa.metricsproxy.core.VespaMetrics.VESPA_CONSUMER_ID; +import static ai.vespa.metricsproxy.core.VespaMetrics.vespaMetricsConsumerId; import static ai.vespa.metricsproxy.metric.model.ConsumerId.toConsumerId; import static ai.vespa.metricsproxy.metric.model.ServiceId.toServiceId; import static ai.vespa.metricsproxy.service.HttpMetricFetcher.STATE_PATH; @@ -88,7 +88,7 @@ public class IntegrationTester implements AutoCloseable { private ConsumersConfig consumersConfig() { return new ConsumersConfig.Builder() - .consumer(createConsumer(VESPA_CONSUMER_ID, "foo.count", "foo_count")) + .consumer(createConsumer(vespaMetricsConsumerId, "foo.count", "foo_count")) .consumer(createConsumer(CUSTOM_CONSUMER_ID, "foo.count", "foo.count")) .build(); } 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 a363247ff52..8d5bba77844 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 @@ -19,7 +19,7 @@ import org.junit.Test; import java.util.List; import static ai.vespa.metricsproxy.TestUtil.getFileContents; -import static ai.vespa.metricsproxy.core.VespaMetrics.VESPA_CONSUMER_ID; +import static ai.vespa.metricsproxy.core.VespaMetrics.vespaMetricsConsumerId; import static ai.vespa.metricsproxy.metric.model.DimensionId.toDimensionId; import static ai.vespa.metricsproxy.rpc.IntegrationTester.CUSTOM_CONSUMER_ID; import static ai.vespa.metricsproxy.rpc.IntegrationTester.MONITORING_SYSTEM; @@ -144,7 +144,7 @@ public class RpcMetricsTest { assertThat(jsonObject.getJSONObject("routing").getJSONObject("yamas").getJSONArray("namespaces").length(), is(1)); if (jsonObject.getJSONObject("metrics").has("foo_count")) { assertThat(jsonObject.getJSONObject("metrics").getInt("foo_count"), is(1)); - assertThat(jsonObject.getJSONObject("routing").getJSONObject("yamas").getJSONArray("namespaces").get(0), is(VESPA_CONSUMER_ID.id)); + assertThat(jsonObject.getJSONObject("routing").getJSONObject("yamas").getJSONArray("namespaces").get(0), is(vespaMetricsConsumerId.id)); } else { assertThat(jsonObject.getJSONObject("metrics").getInt("foo.count"), is(1)); assertThat(jsonObject.getJSONObject("routing").getJSONObject("yamas").getJSONArray("namespaces").get(0), is(CUSTOM_CONSUMER_ID.id)); @@ -190,7 +190,7 @@ public class RpcMetricsTest { assertNotNull("Did not find expected metric with name 'bar'", m2); try (RpcClient rpcClient = new RpcClient(tester.rpcPort())) { - String response = getAllMetricNamesForService(services.get(0).getMonitoringName(), VESPA_CONSUMER_ID, rpcClient); + String response = getAllMetricNamesForService(services.get(0).getMonitoringName(), vespaMetricsConsumerId, rpcClient); assertThat(response, is("foo.count=ON;output-name=foo_count,bar.count=OFF,")); } } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricsFetcher.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricsFetcher.java index acdd419c0de..1361faba66c 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricsFetcher.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricsFetcher.java @@ -62,7 +62,8 @@ public class NodeMetricsFetcher extends AbstractComponent implements NodeMetrics .stream() .findFirst(); if (metricsV2Container.isEmpty()) return Collections.emptyList(); - String url = "http://" + metricsV2Container.get().hostname() + ":" + 4080 + apiPath + "?consumer=default"; + // Consumer 'autoscaling' defined in com.yahoo.vespa.model.admin.monitoring.MetricConsumer + String url = "http://" + metricsV2Container.get().hostname() + ":" + 4080 + apiPath + "?consumer=autoscaling"; String response = httpClient.get(url); return new MetricsResponse(response).metrics(); } @@ -114,7 +115,6 @@ public class NodeMetricsFetcher extends AbstractComponent implements NodeMetrics } } - } } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricsFetcherTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricsFetcherTest.java index 6bf52218302..d418d818ef3 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricsFetcherTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricsFetcherTest.java @@ -41,7 +41,7 @@ public class NodeMetricsFetcherTest { { httpClient.cannedResponse = cannedResponseForApplication1; List<NodeMetrics.MetricValue> values = new ArrayList<>(fetcher.fetchMetrics(application1)); - assertEquals("http://host-1.yahoo.com:4080/metrics/v2/values?consumer=default", + assertEquals("http://host-1.yahoo.com:4080/metrics/v2/values?consumer=autoscaling", httpClient.requestsReceived.get(0)); assertEquals(5, values.size()); assertEquals("metric value cpu.util: 16.2 at 1970-01-01T00:20:34Z for host-1.yahoo.com", values.get(0).toString()); @@ -54,7 +54,7 @@ public class NodeMetricsFetcherTest { { httpClient.cannedResponse = cannedResponseForApplication2; List<NodeMetrics.MetricValue> values = new ArrayList<>(fetcher.fetchMetrics(application2)); - assertEquals("http://host-3.yahoo.com:4080/metrics/v2/values?consumer=default", + assertEquals("http://host-3.yahoo.com:4080/metrics/v2/values?consumer=autoscaling", httpClient.requestsReceived.get(1)); assertEquals(3, values.size()); assertEquals("metric value cpu.util: 10.0 at 1970-01-01T00:21:40Z for host-3.yahoo.com", values.get(0).toString()); diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java index 6a9108311b1..f1c421f6c22 100644 --- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java +++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java @@ -22,7 +22,7 @@ import static org.junit.Assert.fail; */ public class EvaluationTestCase { - private double tolerance = 0.000001; + private final double tolerance = 0.000001; @Test public void testEvaluation() { |