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
|
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.metricsproxy.metric;
import ai.vespa.metricsproxy.metric.model.StatusCode;
import ai.vespa.metricsproxy.service.DummyService;
import ai.vespa.metricsproxy.service.VespaService;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
import static ai.vespa.metricsproxy.metric.model.MetricId.toMetricId;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
/**
* @author Unknowm
*/
public class MetricsTest {
private static final double EPSILON = 0.00000000001;
@Test
public void testIterator() {
Metrics m = new Metrics();
long now = System.currentTimeMillis() / 1000;
m.add(new Metric(toMetricId("a"), 1, now));
m.add(new Metric(toMetricId("b"), 2.5, now));
//should expire after 0 seconds
m.add(new Metric(toMetricId("c"), 2, now));
Map<String, Number> map = new HashMap<>();
for (Metric metric: m.list()) {
String k = metric.getName().id;
assertFalse(map.containsKey(k));
map.put(k, metric.getValue());
}
assertEquals(1, map.get("a").intValue());
assertEquals(2.5, map.get("b").doubleValue(), EPSILON);
}
@Test
public void testBasicMetric() {
Metrics m = new Metrics();
m.add(new Metric(toMetricId("count"), 1, System.currentTimeMillis() / 1000));
assertEquals(1, m.list().size());
assertEquals(toMetricId("count"), m.list().get(0).getName());
}
@Test
public void testHealthMetric() {
HealthMetric m = HealthMetric.get(null, null);
assertFalse(m.isOk());
m = HealthMetric.get("up", "test message");
assertTrue(m.isOk());
assertEquals("test message", m.getMessage());
m = HealthMetric.get("ok", "test message");
assertTrue(m.isOk());
assertEquals("test message", m.getMessage());
m = HealthMetric.get("bad", "test message");
assertFalse(m.isOk());
assertEquals(StatusCode.UNKNOWN, m.getStatus());
}
@Test
public void testMetricFormatter() {
MetricsFormatter formatter = new MetricsFormatter(false, false);
VespaService service = new DummyService(0, "config.id");
String data = formatter.format(service, "key", 1);
assertEquals("'config.id'.key=1", data);
formatter = new MetricsFormatter(true, false);
data = formatter.format(service, "key", 1);
assertEquals("dummy.'config.id'.key=1", data);
formatter = new MetricsFormatter(true, true);
data = formatter.format(service, "key", 1);
assertEquals("dummy.config.'id'.key=1", data);
formatter = new MetricsFormatter(false, true);
data = formatter.format(service, "key", 1);
assertEquals("config.'id'.key=1", data);
}
@Test
public void testTimeAdjustment() {
assertEquals(0L, Metric.adjustTime(0L, 0L));
assertEquals(59L, Metric.adjustTime(59L, 59L));
assertEquals(60L, Metric.adjustTime(60L, 60L));
assertEquals(60L, Metric.adjustTime(59L, 60L));
assertEquals(60L, Metric.adjustTime(60L, 59L));
assertEquals(59L, Metric.adjustTime(59L, 61L));
}
}
|