From c7a5f2f9bcad7a31a387367cd9328b8b8b5087a5 Mon Sep 17 00:00:00 2001 From: Furisto <24721048+Furisto@users.noreply.github.com> Date: Thu, 5 Aug 2021 23:53:49 +0200 Subject: [PATCH] Tests for cgroup v2 io --- src/cgroups/v2/io.rs | 75 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 74 insertions(+), 1 deletion(-) diff --git a/src/cgroups/v2/io.rs b/src/cgroups/v2/io.rs index d41c15e6..3d4277c1 100644 --- a/src/cgroups/v2/io.rs +++ b/src/cgroups/v2/io.rs @@ -136,7 +136,10 @@ impl Io { #[cfg(test)] mod test { use super::*; - use crate::cgroups::test::setup; + use crate::{ + cgroups::test::{set_fixture, setup}, + utils::create_temp_dir, + }; use oci_spec::{LinuxBlockIo, LinuxThrottleDevice, LinuxWeightDevice}; use std::fs; struct BlockIoBuilder { @@ -290,4 +293,74 @@ mod test { assert_eq!("100", content); } + + #[test] + fn test_stat_io() { + let tmp = create_temp_dir("test_stat_io").expect("create test directory"); + let stat_content = [ + "7:10 rbytes=18432 wbytes=16842 rios=12 wios=0 dbytes=0 dios=0", + "7:9 rbytes=34629632 wbytes=274965 rios=1066 wios=319 dbytes=0 dios=0", + ] + .join("\n"); + set_fixture(&tmp, "io.stat", &stat_content).unwrap(); + + let actual = Io::stats(&tmp).expect("get cgroup stats"); + let expected = BlkioStats { + service_bytes: vec![ + BlkioDeviceStat { + major: 7, + minor: 10, + op_type: Some("read".to_owned()), + value: 18432, + }, + BlkioDeviceStat { + major: 7, + minor: 10, + op_type: Some("write".to_owned()), + value: 16842, + }, + BlkioDeviceStat { + major: 7, + minor: 9, + op_type: Some("read".to_owned()), + value: 34629632, + }, + BlkioDeviceStat { + major: 7, + minor: 9, + op_type: Some("write".to_owned()), + value: 274965, + }, + ], + serviced: vec![ + BlkioDeviceStat { + major: 7, + minor: 10, + op_type: Some("read".to_owned()), + value: 12, + }, + BlkioDeviceStat { + major: 7, + minor: 10, + op_type: Some("write".to_owned()), + value: 0, + }, + BlkioDeviceStat { + major: 7, + minor: 9, + op_type: Some("read".to_owned()), + value: 1066, + }, + BlkioDeviceStat { + major: 7, + minor: 9, + op_type: Some("write".to_owned()), + value: 319, + }, + ], + ..Default::default() + }; + + assert_eq!(actual, expected); + } }