diff options
Diffstat (limited to 'metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/HttpHandlerTestBase.java')
-rw-r--r-- | metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/HttpHandlerTestBase.java | 100 |
1 files changed, 100 insertions, 0 deletions
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 new file mode 100644 index 00000000000..bd6fba84e35 --- /dev/null +++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/HttpHandlerTestBase.java @@ -0,0 +1,100 @@ +/* + * Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + */ + +package ai.vespa.metricsproxy.http; + +import ai.vespa.metricsproxy.TestUtil; +import ai.vespa.metricsproxy.core.ConsumersConfig; +import ai.vespa.metricsproxy.core.MetricsConsumers; +import ai.vespa.metricsproxy.core.MetricsManager; +import ai.vespa.metricsproxy.metric.HealthMetric; +import ai.vespa.metricsproxy.metric.Metric; +import ai.vespa.metricsproxy.metric.dimensions.ApplicationDimensions; +import ai.vespa.metricsproxy.metric.dimensions.ApplicationDimensionsConfig; +import ai.vespa.metricsproxy.metric.dimensions.NodeDimensions; +import ai.vespa.metricsproxy.metric.dimensions.NodeDimensionsConfig; +import ai.vespa.metricsproxy.metric.model.MetricsPacket; +import ai.vespa.metricsproxy.service.DownService; +import ai.vespa.metricsproxy.service.DummyService; +import ai.vespa.metricsproxy.service.VespaService; +import ai.vespa.metricsproxy.service.VespaServices; +import com.google.common.collect.ImmutableList; +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.metric.ExternalMetrics.VESPA_NODE_SERVICE_ID; +import static ai.vespa.metricsproxy.service.DummyService.METRIC_1; + +/** + * Base class for http handler tests. + * + * @author gjoranv + */ +@SuppressWarnings("UnstableApiUsage") +public class HttpHandlerTestBase { + + protected static final List<VespaService> testServices = ImmutableList.of( + new DummyService(0, ""), + new DummyService(1, ""), + new DownService(HealthMetric.getDown("No response"))); + + protected static final VespaServices vespaServices = new VespaServices(testServices); + + protected static final String DEFAULT_CONSUMER = "default"; + protected static final String CUSTOM_CONSUMER = "custom-consumer"; + + protected static final String CPU_METRIC = "cpu"; + + protected static final String URI_BASE = "http://localhost"; + + protected static RequestHandlerTestDriver testDriver; + + + protected static MetricsManager getMetricsManager() { + MetricsManager metricsManager = TestUtil.createMetricsManager(vespaServices, getMetricsConsumers(), getApplicationDimensions(), getNodeDimensions()); + metricsManager.setExtraMetrics(ImmutableList.of( + new MetricsPacket.Builder(VESPA_NODE_SERVICE_ID) + .timestamp(Instant.now().getEpochSecond()) + .putMetrics(ImmutableList.of(new Metric(CPU_METRIC, 12.345))))); + return metricsManager; + } + + protected static MetricsConsumers getMetricsConsumers() { + var defaultConsumerDimension = new ConsumersConfig.Consumer.Metric.Dimension.Builder() + .key("consumer-dim").value("default-val"); + + var customConsumerDimension = new ConsumersConfig.Consumer.Metric.Dimension.Builder() + .key("consumer-dim").value("custom-val"); + + return new MetricsConsumers(new ConsumersConfig.Builder() + .consumer(new ConsumersConfig.Consumer.Builder() + .name(DEFAULT_PUBLIC_CONSUMER_ID.id) + .metric(new ConsumersConfig.Consumer.Metric.Builder() + .name(CPU_METRIC) + .outputname(CPU_METRIC)) + .metric(new ConsumersConfig.Consumer.Metric.Builder() + .name(METRIC_1) + .outputname(METRIC_1) + .dimension(defaultConsumerDimension))) + .consumer(new ConsumersConfig.Consumer.Builder() + .name(CUSTOM_CONSUMER) + .metric(new ConsumersConfig.Consumer.Metric.Builder() + .name(METRIC_1) + .outputname(METRIC_1) + .dimension(customConsumerDimension))) + .build()); + } + + protected static ApplicationDimensions getApplicationDimensions() { + return new ApplicationDimensions(new ApplicationDimensionsConfig.Builder().build()); + } + + protected static NodeDimensions getNodeDimensions() { + return new NodeDimensions(new NodeDimensionsConfig.Builder().build()); + } + +} |