aboutsummaryrefslogtreecommitdiffstats
path: root/node-admin/src/test
diff options
context:
space:
mode:
authorvalerijf <valerijf@yahoo-inc.com>2016-10-05 10:42:37 +0200
committervalerijf <valerijf@yahoo-inc.com>2016-10-06 14:15:54 +0200
commite9f90069e64681e3451eb2cd463be06e27ecba55 (patch)
tree76de5f3c8684d70c7be6517fd15075ac1ada3d1f /node-admin/src/test
parentc076aea9556a8d86423d183a266bde60640a4501 (diff)
Added test for relevant docker metrics retreiver
Diffstat (limited to 'node-admin/src/test')
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java36
-rw-r--r--node-admin/src/test/resources/docker.stats.json376
2 files changed, 412 insertions, 0 deletions
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java
index c1603a7535e..af5f384554c 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java
@@ -1,11 +1,17 @@
package com.yahoo.vespa.hosted.node.admin.maintenance;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.yahoo.vespa.hosted.dockerapi.ContainerStatsImpl;
+import com.yahoo.vespa.hosted.dockerapi.Docker;
import com.yahoo.vespa.hosted.node.maintenance.DeleteOldAppDataTest;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
+import java.io.File;
import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
import static org.junit.Assert.*;
@@ -27,4 +33,34 @@ public class StorageMaintainerTest {
if (usedBytes * 4 < writeSize || usedBytes > writeSize * 4)
fail("Used bytes is " + usedBytes + ", but wrote " + writeSize + " bytes, not even close.");
}
+
+ @Test
+ @SuppressWarnings("unchecked")
+ public void testGetRelevantMetrics() throws IOException {
+ final ObjectMapper objectMapper = new ObjectMapper();
+ ClassLoader classLoader = getClass().getClassLoader();
+ File statsFile = new File(classLoader.getResource("docker.stats.json").getFile());
+ Map<String, Object> dockerStats = objectMapper.readValue(statsFile, Map.class);
+
+ Map<String, Object> networks = (Map<String, Object>) dockerStats.get("networks");
+ Map<String, Object> cpu_stats = (Map<String, Object>) dockerStats.get("cpu_stats");
+ Map<String, Object> memory_stats = (Map<String, Object>) dockerStats.get("memory_stats");
+ Map<String, Object> blkio_stats = (Map<String, Object>) dockerStats.get("blkio_stats");
+ Docker.ContainerStats stats = new ContainerStatsImpl(networks, cpu_stats, memory_stats, blkio_stats);
+
+ Map<String, Object> expectedRelevantStats = new HashMap<>();
+ expectedRelevantStats.put("node.cpu.throttled_time", 4523);
+ expectedRelevantStats.put("node.cpu.system_cpu_usage", 5876882680000000L);
+ expectedRelevantStats.put("node.cpu.total_usage", 332131205198L);
+
+ expectedRelevantStats.put("node.memory.limit", 4294967296L);
+ expectedRelevantStats.put("node.memory.usage", 1752707072);
+
+ expectedRelevantStats.put("node.network.ipv4.bytes_rcvd", 19499270);
+ expectedRelevantStats.put("node.network.ipv4.bytes_sent", 20303455);
+ expectedRelevantStats.put("node.network.ipv6.bytes_rcvd", 3245766);
+ expectedRelevantStats.put("node.network.ipv6.bytes_sent", 54246745);
+
+ assertEquals(expectedRelevantStats, StorageMaintainer.getRelevantMetricsFromDockerStats(stats));
+ }
} \ No newline at end of file
diff --git a/node-admin/src/test/resources/docker.stats.json b/node-admin/src/test/resources/docker.stats.json
new file mode 100644
index 00000000000..1691736f11a
--- /dev/null
+++ b/node-admin/src/test/resources/docker.stats.json
@@ -0,0 +1,376 @@
+{
+ "read":"2016-10-05T07:28:17.228361751Z",
+ "precpu_stats":{
+ "cpu_usage":{
+ "total_usage":332026268601,
+ "percpu_usage":[
+ 46767331191,
+ 46637593621,
+ 36196010351,
+ 38846420953,
+ 44237804850,
+ 35751912062,
+ 44546685143,
+ 39042510430
+ ],
+ "usage_in_kernelmode":44040000000,
+ "usage_in_usermode":158940000000
+ },
+ "system_cpu_usage":5876874910000000,
+ "throttling_data":{
+ "periods":3212,
+ "throttled_periods":322,
+ "throttled_time":4490
+ }
+ },
+ "cpu_stats":{
+ "cpu_usage":{
+ "total_usage":332131205198,
+ "percpu_usage":[
+ 46774047576,
+ 46639554407,
+ 36204346956,
+ 38879143616,
+ 44256258947,
+ 35760086876,
+ 44567865660,
+ 39049901160
+ ],
+ "usage_in_kernelmode":44050000000,
+ "usage_in_usermode":158950000000
+ },
+ "system_cpu_usage":5876882680000000,
+ "throttling_data":{
+ "periods":3242,
+ "throttled_periods":332,
+ "throttled_time":4523
+ }
+ },
+ "memory_stats":{
+ "usage":1752707072,
+ "max_usage":1818116096,
+ "stats":{
+ "active_anon":1326051328,
+ "active_file":188919808,
+ "cache":426680320,
+ "hierarchical_memory_limit":4294967296,
+ "hierarchical_memsw_limit":8589934592,
+ "inactive_anon":0,
+ "inactive_file":237735936,
+ "mapped_file":62976000,
+ "pgfault":3102812,
+ "pgmajfault":1403,
+ "pgpgin":1691151,
+ "pgpgout":1263244,
+ "rss":1326026752,
+ "rss_huge":0,
+ "swap":0,
+ "total_active_anon":1326051328,
+ "total_active_file":188919808,
+ "total_cache":426680320,
+ "total_inactive_anon":0,
+ "total_inactive_file":237735936,
+ "total_mapped_file":62976000,
+ "total_pgfault":3102812,
+ "total_pgmajfault":1403,
+ "total_pgpgin":1691151,
+ "total_pgpgout":1263244,
+ "total_rss":1326026752,
+ "total_rss_huge":0,
+ "total_swap":0,
+ "total_unevictable":0,
+ "unevictable":0
+ },
+ "failcnt":0,
+ "limit":4294967296
+ },
+ "blkio_stats":{
+ "io_service_bytes_recursive":[
+ {
+ "major":252,
+ "minor":0,
+ "op":"Read",
+ "value":53248
+ },
+ {
+ "major":252,
+ "minor":0,
+ "op":"Write",
+ "value":602112
+ },
+ {
+ "major":252,
+ "minor":0,
+ "op":"Sync",
+ "value":0
+ },
+ {
+ "major":252,
+ "minor":0,
+ "op":"Async",
+ "value":655360
+ },
+ {
+ "major":252,
+ "minor":0,
+ "op":"Total",
+ "value":655360
+ },
+ {
+ "major":7,
+ "minor":0,
+ "op":"Read",
+ "value":308224
+ },
+ {
+ "major":7,
+ "minor":0,
+ "op":"Write",
+ "value":573440
+ },
+ {
+ "major":7,
+ "minor":0,
+ "op":"Sync",
+ "value":0
+ },
+ {
+ "major":7,
+ "minor":0,
+ "op":"Async",
+ "value":881664
+ },
+ {
+ "major":7,
+ "minor":0,
+ "op":"Total",
+ "value":881664
+ },
+ {
+ "major":253,
+ "minor":0,
+ "op":"Read",
+ "value":308224
+ },
+ {
+ "major":253,
+ "minor":0,
+ "op":"Write",
+ "value":573440
+ },
+ {
+ "major":253,
+ "minor":0,
+ "op":"Sync",
+ "value":0
+ },
+ {
+ "major":253,
+ "minor":0,
+ "op":"Async",
+ "value":881664
+ },
+ {
+ "major":253,
+ "minor":0,
+ "op":"Total",
+ "value":881664
+ },
+ {
+ "major":253,
+ "minor":3,
+ "op":"Read",
+ "value":343847936
+ },
+ {
+ "major":253,
+ "minor":3,
+ "op":"Write",
+ "value":786432
+ },
+ {
+ "major":253,
+ "minor":3,
+ "op":"Sync",
+ "value":131072
+ },
+ {
+ "major":253,
+ "minor":3,
+ "op":"Async",
+ "value":344503296
+ },
+ {
+ "major":253,
+ "minor":3,
+ "op":"Total",
+ "value":344634368
+ }
+ ],
+ "io_serviced_recursive":[
+ {
+ "major":252,
+ "minor":0,
+ "op":"Read",
+ "value":13
+ },
+ {
+ "major":252,
+ "minor":0,
+ "op":"Write",
+ "value":147
+ },
+ {
+ "major":252,
+ "minor":0,
+ "op":"Sync",
+ "value":0
+ },
+ {
+ "major":252,
+ "minor":0,
+ "op":"Async",
+ "value":160
+ },
+ {
+ "major":252,
+ "minor":0,
+ "op":"Total",
+ "value":160
+ },
+ {
+ "major":7,
+ "minor":0,
+ "op":"Read",
+ "value":37
+ },
+ {
+ "major":7,
+ "minor":0,
+ "op":"Write",
+ "value":124
+ },
+ {
+ "major":7,
+ "minor":0,
+ "op":"Sync",
+ "value":0
+ },
+ {
+ "major":7,
+ "minor":0,
+ "op":"Async",
+ "value":161
+ },
+ {
+ "major":7,
+ "minor":0,
+ "op":"Total",
+ "value":161
+ },
+ {
+ "major":253,
+ "minor":0,
+ "op":"Read",
+ "value":37
+ },
+ {
+ "major":253,
+ "minor":0,
+ "op":"Write",
+ "value":124
+ },
+ {
+ "major":253,
+ "minor":0,
+ "op":"Sync",
+ "value":0
+ },
+ {
+ "major":253,
+ "minor":0,
+ "op":"Async",
+ "value":161
+ },
+ {
+ "major":253,
+ "minor":0,
+ "op":"Total",
+ "value":161
+ },
+ {
+ "major":253,
+ "minor":3,
+ "op":"Read",
+ "value":11812
+ },
+ {
+ "major":253,
+ "minor":3,
+ "op":"Write",
+ "value":142
+ },
+ {
+ "major":253,
+ "minor":3,
+ "op":"Sync",
+ "value":2
+ },
+ {
+ "major":253,
+ "minor":3,
+ "op":"Async",
+ "value":11952
+ },
+ {
+ "major":253,
+ "minor":3,
+ "op":"Total",
+ "value":11954
+ }
+ ],
+ "io_queue_recursive":[
+
+ ],
+ "io_service_time_recursive":[
+
+ ],
+ "io_wait_time_recursive":[
+
+ ],
+ "io_merged_recursive":[
+
+ ],
+ "io_time_recursive":[
+
+ ],
+ "sectors_recursive":[
+
+ ]
+ },
+ "pids_stats":{
+
+ },
+ "networks":{
+ "eth0":{
+ "rx_bytes":19499270,
+ "rx_packets":58913,
+ "rx_errors":0,
+ "rx_dropped":0,
+ "tx_bytes":20303455,
+ "tx_packets":62319,
+ "tx_errors":0,
+ "tx_dropped":0
+ },
+ "eth1":{
+ "rx_bytes":3245766,
+ "rx_packets":23462,
+ "rx_errors":0,
+ "rx_dropped":0,
+ "tx_bytes":54246745,
+ "tx_packets":34562,
+ "tx_errors":0,
+ "tx_dropped":0
+ }
+ }
+} \ No newline at end of file