summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Marius Venstad <jonmv@users.noreply.github.com>2019-06-24 14:32:43 +0200
committerGitHub <noreply@github.com>2019-06-24 14:32:43 +0200
commita512024d5c8eafc0c692b3074b407fc34f38795e (patch)
treed0111d9aeb8f848bcba1b32cf19ca00a1766430b
parentd3fc7d9efbf656ec9a5623084fc91be0c79789e8 (diff)
parent5f7c02da995f865548c9e71da4324f56b747ef42 (diff)
Merge pull request #9888 from vespa-engine/revert-9860-gjoranv/add-default-public-metric-set
Revert "Gjoranv/add default public metrics consumer" MERGEOK
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/ConsumersConfigGenerator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java8
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultPublicConsumer.java32
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultPublicMetrics.java69
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/SystemMetrics.java1
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java1
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricsConsumer.java14
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/PredefinedMetricSets.java9
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/MetricsBuilder.java5
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java81
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java13
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java33
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java3
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/GenericMetricsHandler.java35
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/ExternalMetrics.java2
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/core/MetricsManagerTest.java1
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/GenericMetricsHandlerTest.java133
17 files changed, 98 insertions, 344 deletions
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 b2ab7e19f85..29d1b557c49 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
@@ -66,7 +66,7 @@ class ConsumersConfigGenerator {
return original != null ? newMetric.addDimensionsFrom(original) : newMetric;
}
- static Consumer.Builder toConsumerBuilder(MetricsConsumer consumer) {
+ private static Consumer.Builder toConsumerBuilder(MetricsConsumer consumer) {
Consumer.Builder builder = new Consumer.Builder().name(consumer.getId());
consumer.getMetrics().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 f290911c6bd..5a41696c6f2 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
@@ -41,14 +41,12 @@ import java.util.logging.Logger;
import static com.yahoo.vespa.model.admin.metricsproxy.ConsumersConfigGenerator.addMetrics;
import static com.yahoo.vespa.model.admin.metricsproxy.ConsumersConfigGenerator.generateConsumers;
-import static com.yahoo.vespa.model.admin.metricsproxy.ConsumersConfigGenerator.toConsumerBuilder;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyContainerCluster.AppDimensionNames.APPLICATION;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyContainerCluster.AppDimensionNames.APPLICATION_ID;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyContainerCluster.AppDimensionNames.INSTANCE;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyContainerCluster.AppDimensionNames.LEGACY_APPLICATION;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyContainerCluster.AppDimensionNames.TENANT;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyContainerCluster.AppDimensionNames.ZONE;
-import static com.yahoo.vespa.model.admin.monitoring.DefaultPublicConsumer.getDefaultPublicConsumer;
import static com.yahoo.vespa.model.admin.monitoring.VespaMetricsConsumer.getVespaMetricsConsumer;
import static com.yahoo.vespa.model.admin.monitoring.MetricSet.emptyMetricSet;
import static com.yahoo.vespa.model.container.xml.BundleMapper.JarSuffix.JAR_WITH_DEPS;
@@ -130,10 +128,8 @@ public class MetricsProxyContainerCluster extends ContainerCluster<MetricsProxyC
@Override
public void getConfig(ConsumersConfig.Builder builder) {
- var amendedVespaConsumer = addMetrics(getVespaMetricsConsumer(), getAdditionalDefaultMetrics().getMetrics());
- builder.consumer.addAll(generateConsumers(amendedVespaConsumer, getUserMetricsConsumers()));
-
- if (! isHostedVespa()) builder.consumer.add(toConsumerBuilder(getDefaultPublicConsumer()));
+ var amendedDefaultConsumer = addMetrics(getVespaMetricsConsumer(), getAdditionalDefaultMetrics().getMetrics());
+ builder.consumer.addAll(generateConsumers(amendedDefaultConsumer, getUserMetricsConsumers()));
}
@Override
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 fbd1c7455dd..00000000000
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultPublicConsumer.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright 2019 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.GenericMetricsHandler;
-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 = GenericMetricsHandler.DEFAULT_PUBLIC_CONSUMER_ID.id;
-
- private static final MetricSet publicConsumerMetrics = new MetricSet("public-consumer-metrics",
- emptyList(),
- ImmutableList.of(defaultPublicMetricSet,
- defaultVespaMetricSet,
- 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/DefaultPublicMetrics.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultPublicMetrics.java
deleted file mode 100644
index dc250179460..00000000000
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultPublicMetrics.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright 2019 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 com.google.common.collect.ImmutableSet;
-
-import java.util.LinkedHashSet;
-import java.util.Set;
-
-import static java.util.Collections.emptyList;
-
-/**
- * TODO: Add content metrics.
- *
- * @author gjoranv
- */
-public class DefaultPublicMetrics {
-
- public static MetricSet defaultPublicMetricSet = createMetricSet();
-
- private static MetricSet createMetricSet() {
- return new MetricSet("public",
- getAllMetrics(),
- emptyList());
- }
-
- private static Set<Metric> getAllMetrics() {
- return ImmutableSet.<Metric>builder()
- .addAll(getContainerMetrics())
- .addAll(getQrserverMetrics())
- .build();
- }
-
- private static Set<Metric> getContainerMetrics() {
- Set<Metric> metrics = new LinkedHashSet<>();
-
- metrics.add(new Metric("http.status.1xx.rate"));
- metrics.add(new Metric("http.status.2xx.rate"));
- metrics.add(new Metric("http.status.3xx.rate"));
- metrics.add(new Metric("http.status.4xx.rate"));
- metrics.add(new Metric("http.status.5xx.rate"));
- metrics.add(new Metric("jdisc.gc.ms.average"));
- metrics.add(new Metric("mem.heap.free.average"));
-
- return metrics;
- }
-
- private static Set<Metric> getQrserverMetrics() {
- Set<Metric> metrics = new LinkedHashSet<>();
-
- metrics.add(new Metric("queries.rate"));
- metrics.add(new Metric("query_latency.average"));
- metrics.add(new Metric("query_latency.95percentile"));
- metrics.add(new Metric("query_latency.99percentile"));
- metrics.add(new Metric("hits_per_query.average"));
- metrics.add(new Metric("totalhits_per_query.average"));
- metrics.add(new Metric("degraded_queries.rate"));
- metrics.add(new Metric("failed_queries.rate"));
- metrics.add(new Metric("serverActiveThreads.average"));
-
- return metrics;
- }
-
- private DefaultPublicMetrics() { }
-
-}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/SystemMetrics.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/SystemMetrics.java
index cce2891df76..b49fd36da78 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/SystemMetrics.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/SystemMetrics.java
@@ -8,6 +8,7 @@ import java.util.Set;
/**
* @author gjoranv
*/
+@SuppressWarnings("UnusedDeclaration") // Used by model amenders
public class SystemMetrics {
public static final String CPU_UTIL = "cpu.util";
public static final String CPU_SYS_UTIL = "cpu.sys.util";
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java
index ca29e348094..0749df8ddf2 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java
@@ -13,6 +13,7 @@ import static java.util.Collections.singleton;
*
* @author gjoranv
*/
+@SuppressWarnings("UnusedDeclaration") // Used by model amenders
public class VespaMetricSet {
public static final MetricSet vespaMetricSet = new MetricSet("vespa",
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
index 9f3bfdc8ae8..81e9cfcd6a0 100644
--- 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
@@ -10,7 +10,7 @@ import static com.yahoo.vespa.model.admin.monitoring.VespaMetricSet.vespaMetricS
import static java.util.Collections.emptyList;
/**
- * This class sets up the 'Vespa' metrics consumer, which is mainly used for Yamas in hosted Vespa.
+ * This class sets up the 'Vespa' metrics consumer.
*
* @author trygve
* @author gjoranv
@@ -19,14 +19,14 @@ 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));
+ private static final MetricSet defaultConsumerMetrics = new MetricSet("vespa-consumer-metrics",
+ emptyList(),
+ ImmutableList.of(vespaMetricSet,
+ systemMetricSet,
+ networkMetricSet));
public static MetricsConsumer getVespaMetricsConsumer() {
- return new MetricsConsumer(VESPA_CONSUMER_ID, vespaConsumerMetrics);
+ return new MetricsConsumer(VESPA_CONSUMER_ID, defaultConsumerMetrics);
}
}
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..4638353f39f 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,6 @@ 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.NetworkMetrics.networkMetricSet;
import static com.yahoo.vespa.model.admin.monitoring.SystemMetrics.systemMetricSet;
import static com.yahoo.vespa.model.admin.monitoring.DefaultVespaMetrics.defaultVespaMetricSet;
@@ -21,7 +20,6 @@ import static com.yahoo.vespa.model.admin.monitoring.VespaMetricSet.vespaMetricS
public class PredefinedMetricSets {
public static final Map<String, MetricSet> predefinedMetricSets = toMapById(
- defaultPublicMetricSet,
defaultVespaMetricSet,
vespaMetricSet,
systemMetricSet,
@@ -30,11 +28,8 @@ public class PredefinedMetricSets {
private static Map<String, MetricSet> toMapById(MetricSet... metricSets) {
Map<String, MetricSet> availableMetricSets = new LinkedHashMap<>();
- for (MetricSet metricSet : metricSets) {
- var existing = availableMetricSets.put(metricSet.getId(), metricSet);
- if (existing != null)
- throw new IllegalArgumentException("There are two predefined metric sets with id " + existing.getId());
- }
+ for (MetricSet metricSet : metricSets)
+ availableMetricSets.put(metricSet.getId(), metricSet);
return Collections.unmodifiableMap(availableMetricSets);
}
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 b13fa4917e4..0ad0d57c1c3 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,7 +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;
@@ -78,10 +77,6 @@ public class MetricsBuilder {
private void throwIfIllegalConsumerId(Metrics metrics, String consumerId) {
if (consumerId.equalsIgnoreCase(VESPA_CONSUMER_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 (metrics.hasConsumerIgnoreCase(consumerId))
throw new IllegalArgumentException("'" + consumerId + "' is used as id for two metrics consumers (case is ignored.)");
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java
index 78c1c5931a2..ff38a184eec 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java
@@ -25,17 +25,14 @@ import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.C
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.MY_APPLICATION;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.MY_INSTANCE;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.MY_TENANT;
-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.metricsproxy.MetricsProxyModelTester.checkMetric;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.consumersConfigFromModel;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.consumersConfigFromXml;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getApplicationDimensionsConfig;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getCustomConsumer;
+import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getHostedModel;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getModel;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getQrStartConfig;
-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.VespaMetricsConsumer.VESPA_CONSUMER_ID;
import static com.yahoo.vespa.model.admin.monitoring.DefaultVespaMetrics.defaultVespaMetricSet;
import static com.yahoo.vespa.model.admin.monitoring.NetworkMetrics.networkMetricSet;
@@ -57,14 +54,14 @@ public class MetricsProxyContainerClusterTest {
private static int numVespaMetrics = vespaMetricSet.getMetrics().size();
private static int numSystemMetrics = systemMetricSet.getMetrics().size();
private static int numNetworkMetrics = networkMetricSet.getMetrics().size();
- private static int numMetricsForVespaConsumer = numVespaMetrics + numSystemMetrics + numNetworkMetrics;
+ private static int numMetricsForDefaultConsumer = numVespaMetrics + numSystemMetrics + numNetworkMetrics;
@Rule
public ExpectedException thrown = ExpectedException.none();
@Test
public void metrics_proxy_bundle_is_included_in_bundles_config() {
- VespaModel model = getModel(servicesWithAdminOnly(), self_hosted);
+ VespaModel model = getModel(servicesWithAdminOnly());
var builder = new BundlesConfig.Builder();
model.getConfig(builder, CLUSTER_CONFIG_ID);
BundlesConfig config = builder.build();
@@ -74,7 +71,7 @@ public class MetricsProxyContainerClusterTest {
@Test
public void cluster_is_prepared_so_that_application_metadata_config_is_produced() {
- VespaModel model = getModel(servicesWithAdminOnly(), self_hosted);
+ VespaModel model = getModel(servicesWithAdminOnly());
var builder = new ApplicationMetadataConfig.Builder();
model.getConfig(builder, CLUSTER_CONFIG_ID);
ApplicationMetadataConfig config = builder.build();
@@ -85,44 +82,26 @@ public class MetricsProxyContainerClusterTest {
@Test
public void verbose_gc_logging_is_disabled() {
- VespaModel model = getModel(servicesWithAdminOnly(), self_hosted);
+ VespaModel model = getModel(servicesWithAdminOnly());
QrStartConfig config = getQrStartConfig(model);
assertFalse(config.jvm().verbosegc());
}
-
- @Test
- 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);
-
- int numMetricsForPublicDefaultConsumer = defaultPublicMetricSet.getMetrics().size() + numDefaultVespaMetrics + numSystemMetrics;
- assertEquals(numMetricsForPublicDefaultConsumer, config.consumer(1).metric().size());
- }
-
@Test
- public void default_public_consumer_is_not_set_up_for_hosted() {
- ConsumersConfig config = consumersConfigFromXml(servicesWithAdminOnly(), hosted);
- assertEquals(1, config.consumer().size());
+ public void default_consumer_is_always_present_and_has_all_vespa_metrics_and_all_system_metrics() {
+ ConsumersConfig config = consumersConfigFromXml(servicesWithAdminOnly());
assertEquals(config.consumer(0).name(), VESPA_CONSUMER_ID);
+ assertEquals(numMetricsForDefaultConsumer, config.consumer(0).metric().size());
}
@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(numMetricsForVespaConsumer, config.consumer(0).metric().size());
- }
-
- @Test
- public void vespa_consumer_can_be_amended_via_admin_object() {
- VespaModel model = getModel(servicesWithAdminOnly(), self_hosted);
+ public void default_consumer_can_be_amended_via_admin_object() {
+ VespaModel model = getModel(servicesWithAdminOnly());
var additionalMetric = new Metric("additional-metric");
model.getAdmin().setAdditionalDefaultMetrics(new MetricSet("amender-metrics", singleton(additionalMetric)));
ConsumersConfig config = consumersConfigFromModel(model);
- assertEquals(numMetricsForVespaConsumer + 1, config.consumer(0).metric().size());
+ assertEquals(numMetricsForDefaultConsumer + 1, config.consumer(0).metric().size());
ConsumersConfig.Consumer vespaConsumer = config.consumer(0);
assertTrue("Did not contain additional metric", checkMetric(vespaConsumer, additionalMetric));
@@ -130,28 +109,19 @@ public class MetricsProxyContainerClusterTest {
@Test
public void vespa_is_a_reserved_consumer_id() {
- assertReservedConsumerId("Vespa");
- }
-
- @Test
- public void public_is_a_reserved_consumer_id() {
- assertReservedConsumerId("default");
- }
-
- private void assertReservedConsumerId(String consumerId) {
String services = String.join("\n",
- "<services>",
- " <admin version='2.0'>",
- " <adminserver hostalias='node1'/>",
- " <metrics>",
- " <consumer id='" + consumerId + "'/>",
- " </metrics>",
- " </admin>",
- "</services>"
+ "<services>",
+ " <admin version='2.0'>",
+ " <adminserver hostalias='node1'/>",
+ " <metrics>",
+ " <consumer id='vespa'/>",
+ " </metrics>",
+ " </admin>",
+ "</services>"
);
thrown.expect(IllegalArgumentException.class);
- thrown.expectMessage("'" + consumerId + "' is not allowed as metrics consumer id");
- consumersConfigFromXml(services, self_hosted);
+ thrown.expectMessage("'Vespa' is not allowed as metrics consumer id");
+ consumersConfigFromXml(services);
}
@Test
@@ -168,13 +138,12 @@ public class MetricsProxyContainerClusterTest {
" </admin>",
"</services>"
);
- VespaModel hostedModel = getModel(services, hosted);
- ConsumersConfig config = consumersConfigFromModel(hostedModel);
+ ConsumersConfig config = consumersConfigFromXml(services);
assertEquals(1, config.consumer().size());
// All default metrics are retained
ConsumersConfig.Consumer vespaConsumer = config.consumer(0);
- assertEquals(numMetricsForVespaConsumer + 1, vespaConsumer.metric().size());
+ assertEquals(numMetricsForDefaultConsumer + 1, vespaConsumer.metric().size());
Metric customMetric1 = new Metric("custom.metric1");
assertTrue("Did not contain metric: " + customMetric1, checkMetric(vespaConsumer, customMetric1));
@@ -195,7 +164,7 @@ public class MetricsProxyContainerClusterTest {
);
thrown.expect(IllegalArgumentException.class);
thrown.expectMessage("'a' is used as id for two metrics consumers");
- consumersConfigFromXml(services, self_hosted);
+ consumersConfigFromXml(services);
}
@Test
@@ -247,7 +216,7 @@ public class MetricsProxyContainerClusterTest {
@Test
public void hosted_application_propagates_application_dimensions() {
- VespaModel hostedModel = getModel(servicesWithAdminOnly(), hosted);
+ VespaModel hostedModel = getHostedModel(servicesWithAdminOnly());
ApplicationDimensionsConfig config = getApplicationDimensionsConfig(hostedModel);
assertEquals(zoneString(Zone.defaultZone()), config.dimensions(AppDimensionNames.ZONE));
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java
index 5d3bcd58f3d..f755871ac4b 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java
@@ -11,8 +11,7 @@ import org.junit.Test;
import static com.yahoo.config.model.api.container.ContainerServiceType.METRICS_PROXY_CONTAINER;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.CLUSTER_CONFIG_ID;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.CONTAINER_CONFIG_ID;
-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.metricsproxy.MetricsProxyModelTester.getHostedModel;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getModel;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getNodeDimensionsConfig;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getRpcConnectorConfig;
@@ -50,7 +49,7 @@ public class MetricsProxyContainerTest {
@Test
public void metrics_proxy_requires_less_memory_than_other_containers() {
- VespaModel model = getModel(servicesWithContent(), self_hosted);
+ VespaModel model = getModel(servicesWithContent());
MetricsProxyContainer container = (MetricsProxyContainer)model.id2producer().get(CONTAINER_CONFIG_ID);
assertThat(container.getStartupCommand(), containsString("-Xms32m"));
assertThat(container.getStartupCommand(), containsString("-Xmx512m"));
@@ -58,7 +57,7 @@ public class MetricsProxyContainerTest {
@Test
public void http_server_is_running_on_expected_port() {
- VespaModel model = getModel(servicesWithContent(), self_hosted);
+ VespaModel model = getModel(servicesWithContent());
MetricsProxyContainer container = (MetricsProxyContainer)model.id2producer().get(CONTAINER_CONFIG_ID);
assertEquals(19092, container.getSearchPort());
assertEquals(19092, container.getHealthPort());
@@ -70,7 +69,7 @@ public class MetricsProxyContainerTest {
@Test
public void metrics_rpc_server_is_running_on_expected_port() {
- VespaModel model = getModel(servicesWithContent(), self_hosted);
+ VespaModel model = getModel(servicesWithContent());
MetricsProxyContainer container = (MetricsProxyContainer)model.id2producer().get(CONTAINER_CONFIG_ID);
int offset = container.metricsRpcPortOffset();
@@ -86,7 +85,7 @@ public class MetricsProxyContainerTest {
@Test
public void admin_rpc_server_is_running() {
- VespaModel model = getModel(servicesWithContent(), self_hosted);
+ VespaModel model = getModel(servicesWithContent());
MetricsProxyContainer container = (MetricsProxyContainer)model.id2producer().get(CONTAINER_CONFIG_ID);
int offset = container.metricsRpcPortOffset() - 1;
@@ -100,7 +99,7 @@ public class MetricsProxyContainerTest {
@Test
public void hosted_application_propagates_node_dimensions() {
String services = servicesWithContent();
- VespaModel hostedModel = getModel(services, hosted);
+ VespaModel hostedModel = getHostedModel(services);
assertEquals(1, hostedModel.getHosts().size());
String configId = CLUSTER_CONFIG_ID + "/" + hostedModel.getHosts().iterator().next().getHostname();
NodeDimensionsConfig config = getNodeDimensionsConfig(hostedModel, configId);
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 ad6a7de935b..59b7110e96e 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
@@ -16,9 +16,6 @@ import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.admin.monitoring.Metric;
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;
import static org.junit.Assert.assertEquals;
@@ -36,17 +33,20 @@ class MetricsProxyModelTester {
// Used for all configs that are produced by the container, not the cluster.
static final String CONTAINER_CONFIG_ID = CLUSTER_CONFIG_ID + "/localhost";
- enum TestMode {
- self_hosted,
- hosted
+ static VespaModel getModel(String servicesXml) {
+ var numberOfHosts = 1;
+ var tester = new VespaModelTester();
+ tester.addHosts(numberOfHosts);
+ tester.setHosted(false);
+ return tester.createModel(servicesXml, true);
}
- static VespaModel getModel(String servicesXml, TestMode testMode) {
- var numberOfHosts = testMode == hosted ? 2 : 1;
+ static VespaModel getHostedModel(String servicesXml) {
+ var numberOfHosts = 2;
var tester = new VespaModelTester();
tester.addHosts(numberOfHosts);
- tester.setHosted(testMode == hosted);
- if (testMode == hosted) tester.setApplicationId(MY_TENANT, MY_APPLICATION, MY_INSTANCE);
+ tester.setHosted(true);
+ tester.setApplicationId(MY_TENANT, MY_APPLICATION, MY_INSTANCE);
return tester.createModel(servicesXml, true);
}
@@ -59,16 +59,17 @@ class MetricsProxyModelTester {
}
static ConsumersConfig.Consumer getCustomConsumer(String servicesXml) {
- ConsumersConfig config = consumersConfigFromXml(servicesXml, self_hosted);
+ ConsumersConfig config = consumersConfigFromXml(servicesXml);
+ assertEquals(2, config.consumer().size());
for (ConsumersConfig.Consumer consumer : config.consumer()) {
- if (! consumer.name().equals(VESPA_CONSUMER_ID) && ! consumer.name().equals(DEFAULT_PUBLIC_CONSUMER_ID))
+ if (! consumer.name().equals(VESPA_CONSUMER_ID))
return consumer;
}
- throw new RuntimeException("Custom consumer not found!");
+ throw new RuntimeException("Two consumers with the reserved id - this cannot happen.");
}
- static ConsumersConfig consumersConfigFromXml(String servicesXml, TestMode testMode) {
- return consumersConfigFromModel(getModel(servicesXml, testMode));
+ static ConsumersConfig consumersConfigFromXml(String servicesXml) {
+ return consumersConfigFromModel(getModel(servicesXml));
}
static ConsumersConfig consumersConfigFromModel(VespaModel model) {
@@ -88,7 +89,7 @@ class MetricsProxyModelTester {
}
static VespaServicesConfig getVespaServicesConfig(String servicesXml) {
- VespaModel model = getModel(servicesXml, self_hosted);
+ VespaModel model = getModel(servicesXml);
return new VespaServicesConfig((VespaServicesConfig.Builder) model.getConfig(new VespaServicesConfig.Builder(), CONTAINER_CONFIG_ID));
}
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 ab9f4f6c9c4..2ca24dad1e2 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
@@ -117,8 +117,7 @@ public class VespaMetrics {
.statusCode(health.getStatus().ordinal()) // TODO: MetricsPacket should use StatusCode instead of int
.statusMessage(health.getMessage())
.putDimensions(service.getDimensions())
- .putDimension(INSTANCE_DIMENSION_ID, service.getInstanceName())
- .addConsumers(metricsConsumers.getAllConsumers());
+ .putDimension(INSTANCE_DIMENSION_ID, service.getInstanceName());
}
/**
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/GenericMetricsHandler.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/GenericMetricsHandler.java
index f61a96917a9..cadfc053b94 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/GenericMetricsHandler.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/GenericMetricsHandler.java
@@ -4,9 +4,7 @@
package ai.vespa.metricsproxy.http;
-import ai.vespa.metricsproxy.core.MetricsConsumers;
import ai.vespa.metricsproxy.core.MetricsManager;
-import ai.vespa.metricsproxy.metric.model.ConsumerId;
import ai.vespa.metricsproxy.metric.model.MetricsPacket;
import ai.vespa.metricsproxy.metric.model.json.JsonRenderingException;
import ai.vespa.metricsproxy.service.VespaServices;
@@ -21,33 +19,22 @@ import java.nio.charset.Charset;
import java.time.Instant;
import java.util.List;
import java.util.concurrent.Executor;
-import java.util.logging.Logger;
-import java.util.stream.Collectors;
-import static ai.vespa.metricsproxy.metric.model.ConsumerId.toConsumerId;
import static ai.vespa.metricsproxy.metric.model.json.GenericJsonUtil.toGenericJsonModel;
/**
- * Http handler that exposes the generic metrics format.
+ * Handler exposing the generic metrics format via http.
*
* @author gjoranv
*/
public class GenericMetricsHandler extends ThreadedHttpRequestHandler {
- private static final Logger log = Logger.getLogger(GenericMetricsHandler.class.getName());
- public static final ConsumerId DEFAULT_PUBLIC_CONSUMER_ID = toConsumerId("default");
-
- private final MetricsConsumers metricsConsumers;
private final MetricsManager metricsManager;
private final VespaServices vespaServices;
@Inject
- public GenericMetricsHandler(Executor executor,
- MetricsManager metricsManager,
- VespaServices vespaServices,
- MetricsConsumers metricsConsumers) {
+ public GenericMetricsHandler(Executor executor, MetricsManager metricsManager, VespaServices vespaServices) {
super(executor);
- this.metricsConsumers = metricsConsumers;
this.metricsManager = metricsManager;
this.vespaServices = vespaServices;
}
@@ -55,29 +42,13 @@ public class GenericMetricsHandler extends ThreadedHttpRequestHandler {
@Override
public HttpResponse handle(HttpRequest request) {
try {
- ConsumerId consumer = getConsumerOrDefault(request.getProperty("consumer"));
-
- List<MetricsPacket> metrics = metricsManager.getMetrics(vespaServices.getVespaServices(), Instant.now())
- .stream()
- .filter(metricsPacket -> metricsPacket.consumers().contains(consumer))
- .collect(Collectors.toList());
+ List<MetricsPacket> metrics = metricsManager.getMetrics(vespaServices.getVespaServices(), Instant.now());
return new Response(200, toGenericJsonModel(metrics).serialize());
} catch (JsonRenderingException e) {
return new Response(500, e.getMessageAsJson());
}
}
- private ConsumerId getConsumerOrDefault(String consumer) {
- if (consumer == null) return DEFAULT_PUBLIC_CONSUMER_ID;
-
- ConsumerId consumerId = toConsumerId(consumer);
- if (! metricsConsumers.getAllConsumers().contains(consumerId)) {
- log.info("No consumer with id '" + consumer + "' - using the default consumer instead.");
- return DEFAULT_PUBLIC_CONSUMER_ID;
- }
- return consumerId;
- }
-
private static class Response extends HttpResponse {
private final byte[] data;
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/ExternalMetrics.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/ExternalMetrics.java
index 64ede137e8e..26ae177d767 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/ExternalMetrics.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/ExternalMetrics.java
@@ -53,8 +53,6 @@ public class ExternalMetrics {
}
public void setExtraMetrics(List<MetricsPacket.Builder> externalPackets) {
- // TODO: Metrics filtering per consumer is not yet implemented.
- // Split each packet per metric, and re-aggregate based on the metrics each consumer wants. Then filter out all packages with no consumers.
log.log(DEBUG, () -> "Setting new external metrics with " + externalPackets.size() + " metrics packets.");
externalPackets.forEach(packet -> {
packet.addConsumers(consumers.getAllConsumers())
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 e441c353292..eb620fd37be 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
@@ -140,7 +140,6 @@ public class MetricsManagerTest {
service0.setSystemMetrics(oldSystemMetrics);
}
- // TODO: test that non-whitelisted metrics are filtered out, but this is currently not the case, see ExternalMetrics.setExtraMetrics
@Test
public void extra_metrics_packets_containing_whitelisted_metrics_are_added() {
metricsManager.setExtraMetrics(ImmutableList.of(
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/GenericMetricsHandlerTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/GenericMetricsHandlerTest.java
index 29ab8c66694..301dbf56c3f 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/GenericMetricsHandlerTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/GenericMetricsHandlerTest.java
@@ -6,7 +6,6 @@ package ai.vespa.metricsproxy.http;
import ai.vespa.metricsproxy.TestUtil;
import ai.vespa.metricsproxy.core.ConsumersConfig;
-import ai.vespa.metricsproxy.core.ConsumersConfig.Consumer;
import ai.vespa.metricsproxy.core.MetricsConsumers;
import ai.vespa.metricsproxy.core.MetricsManager;
import ai.vespa.metricsproxy.metric.HealthMetric;
@@ -30,13 +29,12 @@ import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
-import java.io.IOException;
import java.time.Instant;
import java.util.List;
import java.util.concurrent.Executors;
import static ai.vespa.metricsproxy.core.VespaMetrics.INSTANCE_DIMENSION_ID;
-import static ai.vespa.metricsproxy.http.GenericMetricsHandler.DEFAULT_PUBLIC_CONSUMER_ID;
+import static ai.vespa.metricsproxy.core.VespaMetrics.VESPA_CONSUMER_ID;
import static ai.vespa.metricsproxy.metric.model.ServiceId.toServiceId;
import static ai.vespa.metricsproxy.metric.model.StatusCode.DOWN;
import static ai.vespa.metricsproxy.metric.model.json.JacksonUtil.createObjectMapper;
@@ -45,7 +43,6 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
/**
* @author gjoranv
@@ -58,69 +55,38 @@ public class GenericMetricsHandlerTest {
new DummyService(1, ""),
new DownService(HealthMetric.getDown("No response")));
- private static final VespaServices vespaServices = new VespaServices(testServices);
-
- private static final String DEFAULT_CONSUMER = "default";
- private static final String CUSTOM_CONSUMER = "custom-consumer";
-
private static final String CPU_METRIC = "cpu";
private static final String URI = "http://localhost/metrics/v1/values";
+ private static final VespaServices vespaServices = new VespaServices(testServices);
private static RequestHandlerTestDriver testDriver;
@BeforeClass
- public static void setup() {
+ public static void setupMetricsManager() {
MetricsManager metricsManager = TestUtil.createMetricsManager(vespaServices, getMetricsConsumers(), getApplicationDimensions(), getNodeDimensions());
metricsManager.setExtraMetrics(ImmutableList.of(
new MetricsPacket.Builder(toServiceId("foo"))
.timestamp(Instant.now().getEpochSecond())
.putMetrics(ImmutableList.of(new Metric(CPU_METRIC, 12.345)))));
- GenericMetricsHandler handler = new GenericMetricsHandler(Executors.newSingleThreadExecutor(), metricsManager, vespaServices, getMetricsConsumers());
+ GenericMetricsHandler handler = new GenericMetricsHandler(Executors.newSingleThreadExecutor(), metricsManager, vespaServices);
testDriver = new RequestHandlerTestDriver(handler);
}
- private GenericJsonModel getResponseAsJsonModel(String consumer) {
- String response = testDriver.sendRequest(URI + "?consumer=" + consumer).readAll();
- try {
- return createObjectMapper().readValue(response, GenericJsonModel.class);
- } catch (IOException e) {
- fail("Failed to create json model: " + e.getMessage());
- throw new RuntimeException(e);
- }
- }
-
@Ignore
@Test
public void visually_inspect_response() throws Exception{
- String response = testDriver.sendRequest(URI+ "?consumer=default").readAll();
+ String response = testDriver.sendRequest(URI).readAll();
ObjectMapper mapper = createObjectMapper();
var jsonModel = mapper.readValue(response, GenericJsonModel.class);
System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonModel));
}
@Test
- public void no_explicit_consumer_gives_the_default_consumer() {
- String responseDefaultConsumer = testDriver.sendRequest(URI + "?consumer=default").readAll();
- String responseNoConsumer = testDriver.sendRequest(URI).readAll();
- assertEqualsExceptTimestamps(responseDefaultConsumer, responseNoConsumer);
- }
-
- @Test
- public void unknown_consumer_gives_the_default_consumer() {
+ public void response_contains_node_metrics() throws Exception {
String response = testDriver.sendRequest(URI).readAll();
- String responseUnknownConsumer = testDriver.sendRequest(URI + "?consumer=not_defined").readAll();
- assertEqualsExceptTimestamps(response, responseUnknownConsumer);
- }
-
- private void assertEqualsExceptTimestamps(String s1, String s2) {
- assertEquals(replaceTimestamps(s1), replaceTimestamps(s2));
- }
-
- @Test
- public void response_contains_node_metrics() {
- GenericJsonModel jsonModel = getResponseAsJsonModel(DEFAULT_CONSUMER);
+ var jsonModel = createObjectMapper().readValue(response, GenericJsonModel.class);
assertNotNull(jsonModel.node);
assertEquals(1, jsonModel.node.metrics.size());
@@ -128,8 +94,9 @@ public class GenericMetricsHandlerTest {
}
@Test
- public void response_contains_service_metrics() {
- GenericJsonModel jsonModel = getResponseAsJsonModel(DEFAULT_CONSUMER);
+ public void response_contains_service_metrics() throws Exception {
+ String response = testDriver.sendRequest(URI).readAll();
+ var jsonModel = createObjectMapper().readValue(response, GenericJsonModel.class);
assertEquals(2, jsonModel.services.size());
GenericService dummyService = jsonModel.services.get(0);
@@ -137,50 +104,17 @@ public class GenericMetricsHandlerTest {
GenericMetrics dummy0Metrics = getMetricsForInstance("dummy0", dummyService);
assertEquals(1L, dummy0Metrics.values.get(METRIC_1).longValue());
- assertEquals("default-val", dummy0Metrics.dimensions.get("consumer-dim"));
+ assertEquals("metric-dim", dummy0Metrics.dimensions.get("dim0"));
GenericMetrics dummy1Metrics = getMetricsForInstance("dummy1", dummyService);
assertEquals(6L, dummy1Metrics.values.get(METRIC_1).longValue());
- assertEquals("default-val", dummy1Metrics.dimensions.get("consumer-dim"));
- }
-
- @Test
- public void all_consumers_get_health_from_service_that_is_down() {
- assertDownServiceHealth(DEFAULT_CONSUMER);
- assertDownServiceHealth(CUSTOM_CONSUMER);
+ assertEquals("metric-dim", dummy1Metrics.dimensions.get("dim0"));
}
@Test
- public void all_timestamps_are_equal_and_non_zero() {
- GenericJsonModel jsonModel = getResponseAsJsonModel(DEFAULT_CONSUMER);
-
- Long nodeTimestamp = jsonModel.node.timestamp;
- assertNotEquals(0L, (long) nodeTimestamp);
- for (var service : jsonModel.services)
- assertEquals(nodeTimestamp, service.timestamp);
- }
-
- @Test
- public void custom_consumer_gets_only_its_whitelisted_metrics() {
- GenericJsonModel jsonModel = getResponseAsJsonModel(CUSTOM_CONSUMER);
-
- assertNotNull(jsonModel.node);
- // TODO: see comment in ExternalMetrics.setExtraMetrics
- // assertEquals(0, jsonModel.node.metrics.size());
-
- assertEquals(2, jsonModel.services.size());
- GenericService dummyService = jsonModel.services.get(0);
- assertEquals(2, dummyService.metrics.size());
-
- GenericMetrics dummy0Metrics = getMetricsForInstance("dummy0", dummyService);
- assertEquals("custom-val", dummy0Metrics.dimensions.get("consumer-dim"));
-
- GenericMetrics dummy1Metrics = getMetricsForInstance("dummy1", dummyService);
- assertEquals("custom-val", dummy1Metrics.dimensions.get("consumer-dim"));
- }
-
- private void assertDownServiceHealth(String consumer) {
- GenericJsonModel jsonModel = getResponseAsJsonModel(consumer);
+ public void response_contains_health_from_service_that_is_down() throws Exception {
+ String response = testDriver.sendRequest(URI).readAll();
+ var jsonModel = createObjectMapper().readValue(response, GenericJsonModel.class);
GenericService downService = jsonModel.services.get(1);
assertEquals(DOWN.status, downService.status.code);
@@ -193,8 +127,15 @@ public class GenericMetricsHandlerTest {
assertEquals(DownService.NAME, downService.metrics.get(0).dimensions.get(INSTANCE_DIMENSION_ID.id));
}
- private String replaceTimestamps(String s) {
- return s.replaceAll("timestamp\":\\d+,", "timestamp\":1,");
+ @Test
+ public void all_timestamps_are_equal_and_non_zero() throws Exception {
+ String response = testDriver.sendRequest(URI).readAll();
+ var jsonModel = createObjectMapper().readValue(response, GenericJsonModel.class);
+
+ Long nodeTimestamp = jsonModel.node.timestamp;
+ assertNotEquals(0L, (long) nodeTimestamp);
+ for (var service : jsonModel.services)
+ assertEquals(nodeTimestamp, service.timestamp);
}
private static GenericMetrics getMetricsForInstance(String instance, GenericService service) {
@@ -202,33 +143,23 @@ public class GenericMetricsHandlerTest {
if (metrics.dimensions.get(INSTANCE_DIMENSION_ID.id).equals(instance))
return metrics;
}
- fail("Could not find metrics for service instance " + instance);
- throw new RuntimeException();
+ throw new RuntimeException("Could not find metrics for service instance " + instance);
}
private static MetricsConsumers getMetricsConsumers() {
- var defaultConsumerDimension = new Consumer.Metric.Dimension.Builder()
- .key("consumer-dim").value("default-val");
-
- var customConsumerDimension = new Consumer.Metric.Dimension.Builder()
- .key("consumer-dim").value("custom-val");
+ ConsumersConfig.Consumer.Metric.Dimension.Builder metricDimension = new ConsumersConfig.Consumer.Metric.Dimension.Builder()
+ .key("dim0").value("metric-dim");
return new MetricsConsumers(new ConsumersConfig.Builder()
- .consumer(new Consumer.Builder()
- .name(DEFAULT_PUBLIC_CONSUMER_ID.id)
- .metric(new Consumer.Metric.Builder()
+ .consumer(new ConsumersConfig.Consumer.Builder()
+ .name(VESPA_CONSUMER_ID.id)
+ .metric(new ConsumersConfig.Consumer.Metric.Builder()
.name(CPU_METRIC)
.outputname(CPU_METRIC))
- .metric(new Consumer.Metric.Builder()
- .name(METRIC_1)
- .outputname(METRIC_1)
- .dimension(defaultConsumerDimension)))
- .consumer(new Consumer.Builder()
- .name(CUSTOM_CONSUMER)
- .metric(new Consumer.Metric.Builder()
+ .metric(new ConsumersConfig.Consumer.Metric.Builder()
.name(METRIC_1)
.outputname(METRIC_1)
- .dimension(customConsumerDimension)))
+ .dimension(metricDimension)))
.build());
}