diff options
author | valerijf <valerijf@yahoo-inc.com> | 2016-10-05 10:42:37 +0200 |
---|---|---|
committer | valerijf <valerijf@yahoo-inc.com> | 2016-10-06 14:15:54 +0200 |
commit | e9f90069e64681e3451eb2cd463be06e27ecba55 (patch) | |
tree | 76de5f3c8684d70c7be6517fd15075ac1ada3d1f /node-admin/src/test | |
parent | c076aea9556a8d86423d183a266bde60640a4501 (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.java | 36 | ||||
-rw-r--r-- | node-admin/src/test/resources/docker.stats.json | 376 |
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 |