summaryrefslogtreecommitdiffstats
path: root/metrics-proxy/src/test
diff options
context:
space:
mode:
authorOla Aunrønning <olaa@verizonmedia.com>2019-08-30 10:58:36 +0200
committerOla Aunrønning <olaa@verizonmedia.com>2019-08-30 10:58:36 +0200
commit6d1f6a5589ae52e1c58fd9c28927562dbda3f468 (patch)
treedd28ffda9cf6dcdc1888a75fd36a7484cac6fc15 /metrics-proxy/src/test
parent0d70292084a2f50b7c6e95673790f063d2c77767 (diff)
Added YamasHandler and test
Diffstat (limited to 'metrics-proxy/src/test')
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/gatherer/NodeMetricGathererTest.java112
1 files changed, 112 insertions, 0 deletions
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/gatherer/NodeMetricGathererTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/gatherer/NodeMetricGathererTest.java
new file mode 100644
index 00000000000..8752032b643
--- /dev/null
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/gatherer/NodeMetricGathererTest.java
@@ -0,0 +1,112 @@
+package ai.vespa.metricsproxy.gatherer;
+
+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.NodeDimensions;
+import ai.vespa.metricsproxy.metric.model.DimensionId;
+import ai.vespa.metricsproxy.metric.model.MetricsPacket;
+import ai.vespa.metricsproxy.metric.model.ServiceId;
+import ai.vespa.metricsproxy.service.VespaService;
+import ai.vespa.metricsproxy.service.VespaServices;
+import org.junit.Test;
+
+import java.nio.file.Path;
+import java.time.Instant;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.Assert.*;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+/**
+ * @author olaa
+ */
+public class NodeMetricGathererTest {
+
+ @Test
+ public void gatherMetrics() throws Exception {
+
+ MetricsManager metricsManager = mock(MetricsManager.class);
+ VespaServices vespaServices = mock(VespaServices.class);
+ ApplicationDimensions applicationDimensions = mock(ApplicationDimensions.class);
+ NodeDimensions nodeDimensions = mock(NodeDimensions.class);
+ NodeMetricGatherer.FileWrapper fileWrapper = mock(NodeMetricGatherer.FileWrapper.class);
+ List<VespaService> mockedVespaServices = mockedVespaServices();
+
+ NodeMetricGatherer nodeMetricGatherer = new NodeMetricGatherer(metricsManager, vespaServices, applicationDimensions, nodeDimensions, fileWrapper);
+ when(fileWrapper.walkTree(any())).thenReturn(List.of(Path.of("")).stream());
+ when(fileWrapper.getLastModifiedTime(any())).thenReturn(Instant.ofEpochMilli(0));
+ when(fileWrapper.readAllLines(any())).thenReturn(List.of("123 456"));
+ when(vespaServices.getVespaServices()).thenReturn(mockedVespaServices);
+ when(applicationDimensions.getDimensions()).thenReturn(Collections.emptyMap());
+ when(nodeDimensions.getDimensions()).thenReturn(Collections.emptyMap());
+
+ List<MetricsPacket> packets = nodeMetricGatherer.gatherMetrics();
+ assertEquals(5, packets.size());
+ Map<DimensionId, String> serviceHealthDimensions = Map.of(DimensionId.toDimensionId("instance"), "instance", DimensionId.toDimensionId("metrictype"), "health");
+ List<MetricsPacket> expectedPackets = List.of(
+ metricsPacket(0, "system-coredumps-processing", Collections.emptyList(), Collections.emptyMap()),
+ metricsPacket(0, "host_life", List.of(new Metric("uptime", 123), new Metric("alive", 1)), Collections.emptyMap()),
+ metricsPacket(0, "service1", Collections.emptyList(), serviceHealthDimensions),
+ metricsPacket(0, "service2", Collections.emptyList(), serviceHealthDimensions),
+ metricsPacket(1, "service3", Collections.emptyList(), serviceHealthDimensions)
+ );
+
+ assertEqualMetricPackets(expectedPackets, packets);
+ }
+
+ private void assertEqualMetricPackets(List<MetricsPacket> expectedPackets, List<MetricsPacket> actualPackets) {
+ assertEquals(expectedPackets.size(), actualPackets.size());
+ expectedPackets.stream()
+ .forEach(expectedPacket ->
+ actualPackets.stream()
+ .filter(packet -> packet.service.equals(expectedPacket.service))
+ .forEach(actualPacket -> {
+ assertEquals(expectedPacket.statusMessage, actualPacket.statusMessage);
+ assertEquals(expectedPacket.statusCode, actualPacket.statusCode);
+ assertEquals(expectedPacket.metrics(), actualPacket.metrics());
+ assertEquals(expectedPacket.dimensions(), actualPacket.dimensions());
+ })
+ );
+ }
+
+ private List<VespaService> mockedVespaServices() {
+
+ HealthMetric healthy = HealthMetric.get("OK", "");
+ HealthMetric unhealthy = HealthMetric.get("down", "");
+
+ VespaService service1 = mock(VespaService.class);
+ when(service1.getInstanceName()).thenReturn("instance");
+ when(service1.getMonitoringName()).thenReturn("service1");
+ when(service1.getHealth()).thenReturn(healthy);
+
+ VespaService service2 = mock(VespaService.class);
+ when(service2.getInstanceName()).thenReturn("instance");
+ when(service2.getMonitoringName()).thenReturn("service2");
+ when(service2.getHealth()).thenReturn(healthy);
+
+
+ VespaService service3 = mock(VespaService.class);
+ when(service3.getInstanceName()).thenReturn("instance");
+ when(service3.getMonitoringName()).thenReturn("service3");
+ when(service3.getHealth()).thenReturn(unhealthy);
+
+ return List.of(service1, service2, service3);
+
+ }
+
+ private MetricsPacket metricsPacket(int statusCode, String service,
+ Collection<Metric> metrics, Map<DimensionId, String> dimensions) {
+ return new MetricsPacket.Builder(ServiceId.toServiceId(service))
+ .putDimensions(dimensions)
+ .putMetrics(metrics)
+ .statusCode(statusCode)
+ .build();
+ }
+} \ No newline at end of file