summaryrefslogtreecommitdiffstats
path: root/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/cgroup/CgroupTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/cgroup/CgroupTest.java')
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/cgroup/CgroupTest.java76
1 files changed, 56 insertions, 20 deletions
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/cgroup/CgroupTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/cgroup/CgroupTest.java
index 27580082020..c93d90329f7 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/cgroup/CgroupTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/cgroup/CgroupTest.java
@@ -1,6 +1,4 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.cgroup;
import com.yahoo.vespa.hosted.node.admin.container.ContainerId;
@@ -10,7 +8,6 @@ import com.yahoo.vespa.hosted.node.admin.task.util.file.UnixPath;
import com.yahoo.vespa.test.file.TestFileSystem;
import org.junit.jupiter.api.Test;
-import java.io.IOException;
import java.nio.file.FileSystem;
import java.util.Map;
import java.util.Optional;
@@ -23,6 +20,8 @@ import static com.yahoo.vespa.hosted.node.admin.cgroup.CpuController.StatField.T
import static com.yahoo.vespa.hosted.node.admin.cgroup.CpuController.StatField.USER_USAGE_USEC;
import static com.yahoo.vespa.hosted.node.admin.cgroup.CpuController.sharesToWeight;
import static com.yahoo.vespa.hosted.node.admin.cgroup.CpuController.weightToShares;
+import static com.yahoo.vespa.hosted.node.admin.cgroup.IoController.Device;
+import static com.yahoo.vespa.hosted.node.admin.cgroup.IoController.Max;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -75,35 +74,39 @@ public class CgroupTest {
}
@Test
- public void reads_cpu_stats() throws IOException {
- cgroupRoot.resolve("cpu.stat").writeUtf8File("usage_usec 17794243\n" +
- "user_usec 16099205\n" +
- "system_usec 1695038\n" +
- "nr_periods 12465\n" +
- "nr_throttled 25\n" +
- "throttled_usec 14256\n");
+ public void reads_cpu_stats() {
+ cgroupRoot.resolve("cpu.stat").writeUtf8File("""
+ usage_usec 17794243
+ user_usec 16099205
+ system_usec 1695038
+ nr_periods 12465
+ nr_throttled 25
+ throttled_usec 14256
+ """);
assertEquals(Map.of(TOTAL_USAGE_USEC, 17794243L, USER_USAGE_USEC, 16099205L, SYSTEM_USAGE_USEC, 1695038L,
TOTAL_PERIODS, 12465L, THROTTLED_PERIODS, 25L, THROTTLED_TIME_USEC, 14256L), containerCgroup.cpu().readStats());
}
@Test
- public void reads_memory_metrics() throws IOException {
+ public void reads_memory_metrics() {
cgroupRoot.resolve("memory.current").writeUtf8File("2525093888\n");
assertEquals(2525093888L, containerCgroup.memory().readCurrent().value());
cgroupRoot.resolve("memory.max").writeUtf8File("4322885632\n");
assertEquals(4322885632L, containerCgroup.memory().readMax().value());
- cgroupRoot.resolve("memory.stat").writeUtf8File("anon 3481600\n" +
- "file 69206016\n" +
- "kernel_stack 73728\n" +
- "slab 3552304\n" +
- "percpu 262336\n" +
- "sock 73728\n" +
- "shmem 8380416\n" +
- "file_mapped 1081344\n" +
- "file_dirty 135168\n");
+ cgroupRoot.resolve("memory.stat").writeUtf8File("""
+ anon 3481600
+ file 69206016
+ kernel_stack 73728
+ slab 3552304
+ percpu 262336
+ sock 73728
+ shmem 8380416
+ file_mapped 1081344
+ file_dirty 135168
+ """);
assertEquals(69206016L, containerCgroup.memory().readFileSystemCache().value());
}
@@ -117,4 +120,37 @@ public class CgroupTest {
() -> "Original shares: " + originalShares + ", round trip shares: " + roundTripShares + ", diff: " + diff);
}
}
+
+ @Test
+ void reads_io_max() {
+ assertEquals(Optional.empty(), containerCgroup.io().readMax());
+
+ cgroupRoot.resolve("io.max").writeUtf8File("");
+ assertEquals(Optional.of(Map.of()), containerCgroup.io().readMax());
+
+ cgroupRoot.resolve("io.max").writeUtf8File("""
+ 253:1 rbps=11 wbps=max riops=22 wiops=33
+ 253:0 rbps=max wbps=44 riops=max wiops=55
+ """);
+ assertEquals(Map.of(new Device(253, 1), new Max(Size.from(11), Size.max(), Size.from(22), Size.from(33)),
+ new Device(253, 0), new Max(Size.max(), Size.from(44), Size.max(), Size.from(55))),
+ containerCgroup.io().readMax().orElseThrow());
+ }
+
+ @Test
+ void writes_io_max() {
+ Device device = new Device(253, 0);
+ Max initial = new Max(Size.max(), Size.from(44), Size.max(), Size.from(55));
+ assertTrue(containerCgroup.io().updateMax(context, device, initial));
+ assertEquals("253:0 rbps=max wbps=44 riops=max wiops=55\n", cgroupRoot.resolve("io.max").readUtf8File());
+
+ cgroupRoot.resolve("io.max").writeUtf8File("""
+ 253:1 rbps=11 wbps=max riops=22 wiops=33
+ 253:0 rbps=max wbps=44 riops=max wiops=55
+ """);
+ assertFalse(containerCgroup.io().updateMax(context, device, initial));
+
+ cgroupRoot.resolve("io.max").writeUtf8File("");
+ assertFalse(containerCgroup.io().updateMax(context, device, Max.UNLIMITED));
+ }
}