blob: bd6fba84e35a993a4c24c969b6a89d7c44e10a00 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
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());
}
}
|