]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
test-009: add support for newer cpu.* output
authorKamalesh Babulal <kamalesh.babulal@oracle.com>
Tue, 19 Jul 2022 12:15:28 +0000 (17:45 +0530)
committerTom Hromatka <tom.hromatka@oracle.com>
Tue, 19 Jul 2022 20:54:31 +0000 (14:54 -0600)
With Ubuntu 5.15.0-1014 kernel, there are a few changes to the output
of cgget -g cpu:<cgroup> provides for both cgroup V1 and V2:
cgroup V1:
----------
- new stat files cpu.cfs_burst_us, cpu.idle

cgroup V2:
----------
- new stat files cpu.idle, cpu.max.burst

adopt these changes while looking for expected out based on the cgroup
version. Also, convert the expected out templates into per cgroup
version list[], making it easier to match using a for loop, instead of
nested if else. Using a list also makes it easier to append any new
changes to the output template.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
ftests/009-cgget-g_flag_controller_only.py

index 88775037c413422096656a9c6a0a2018896b17c0..c9344c8499768d209fcaac4eb6ee62193d9d2b34 100755 (executable)
@@ -16,82 +16,110 @@ import os
 CONTROLLER = 'cpu'
 CGNAME = '009cgget'
 
-EXPECTED_OUT_V1 = '''009cgget:
-cpu.cfs_period_us: 100000
-cpu.stat: nr_periods 0
-        nr_throttled 0
-        throttled_time 0
-cpu.shares: 1024
-cpu.cfs_quota_us: -1
-cpu.uclamp.min: 0.00
-cpu.uclamp.max: max
-'''
-
-EXPECTED_OUT_V1_CFS_BANDWIDTH = '''009cgget:
-cpu.cfs_burst_us: 0
-cpu.cfs_period_us: 100000
-cpu.stat: nr_periods 0
-        nr_throttled 0
-        throttled_time 0
-        nr_bursts 0
-        burst_time 0
-cpu.shares: 1024
-cpu.idle: 0
-cpu.cfs_quota_us: -1
-cpu.uclamp.min: 0.00
-cpu.uclamp.max: max
-'''
-
-EXPECTED_OUT_V2 = '''009cgget:
-cpu.weight: 100
-cpu.stat: usage_usec 0
-        user_usec 0
-        system_usec 0
-        nr_periods 0
-        nr_throttled 0
-        throttled_usec 0
-cpu.weight.nice: 0
-cpu.pressure: some avg10=0.00 avg60=0.00 avg300=0.00 total=0
-cpu.max: max 100000
-cpu.uclamp.min: 0.00
-cpu.uclamp.max: max
-'''
-
-EXPECTED_OUT_V2_PSI = '''009cgget:
-cpu.weight: 100
-cpu.stat: usage_usec 0
-        user_usec 0
-        system_usec 0
-        nr_periods 0
-        nr_throttled 0
-        throttled_usec 0
-cpu.weight.nice: 0
-cpu.pressure: some avg10=0.00 avg60=0.00 avg300=0.00 total=0
-        full avg10=0.00 avg60=0.00 avg300=0.00 total=0
-cpu.max: max 100000
-cpu.uclamp.min: 0.00
-cpu.uclamp.max: max
-'''
-
-EXPECTED_OUT_V2_PSI_CFS_BANDWIDTH = '''009cgget:
-cpu.weight: 100
-cpu.stat: usage_usec 0
-        user_usec 0
-        system_usec 0
-        nr_periods 0
-        nr_throttled 0
-        throttled_usec 0
-        nr_bursts 0
-        burst_usec 0
-cpu.weight.nice: 0
-cpu.pressure: some avg10=0.00 avg60=0.00 avg300=0.00 total=0
-        full avg10=0.00 avg60=0.00 avg300=0.00 total=0
-cpu.idle: 0
-cpu.max.burst: 0
-cpu.max: max 100000
-cpu.uclamp.min: 0.00
-cpu.uclamp.max: max
-'''
+EXPECTED_OUT_V1 = [
+    '''009cgget:
+    cpu.cfs_period_us: 100000
+    cpu.stat: nr_periods 0
+            nr_throttled 0
+            throttled_time 0
+    cpu.shares: 1024
+    cpu.cfs_quota_us: -1
+    cpu.uclamp.min: 0.00
+    cpu.uclamp.max: max''',
+    # cfs_bandwidth without cpu.stat nr_busts, burst_time
+    '''009cgget:
+    cpu.cfs_burst_us: 0
+    cpu.cfs_period_us: 100000
+    cpu.stat: nr_periods 0
+            nr_throttled 0
+            throttled_time 0
+    cpu.shares: 1024
+    cpu.idle: 0
+    cpu.cfs_quota_us: -1
+    cpu.uclamp.min: 0.00
+    cpu.uclamp.max: max''',
+    # cfs_bandwidth with cpu.stat nr_busts, burst_time
+    '''009cgget:
+    cpu.cfs_burst_us: 0
+    cpu.cfs_period_us: 100000
+    cpu.stat: nr_periods 0
+            nr_throttled 0
+            throttled_time 0
+            nr_bursts 0
+            burst_time 0
+    cpu.shares: 1024
+    cpu.idle: 0
+    cpu.cfs_quota_us: -1
+    cpu.uclamp.min: 0.00
+    cpu.uclamp.max: max'''
+]
+
+EXPECTED_OUT_V2 = [
+    '''009cgget:
+    cpu.weight: 100
+    cpu.stat: usage_usec 0
+            user_usec 0
+            system_usec 0
+            nr_periods 0
+            nr_throttled 0
+            throttled_usec 0
+    cpu.weight.nice: 0
+    cpu.pressure: some avg10=0.00 avg60=0.00 avg300=0.00 total=0
+    cpu.max: max 100000
+    cpu.uclamp.min: 0.00
+    cpu.uclamp.max: max''',
+    # with PSI
+    '''009cgget:
+    cpu.weight: 100
+    cpu.stat: usage_usec 0
+            user_usec 0
+            system_usec 0
+            nr_periods 0
+            nr_throttled 0
+            throttled_usec 0
+    cpu.weight.nice: 0
+    cpu.pressure: some avg10=0.00 avg60=0.00 avg300=0.00 total=0
+            full avg10=0.00 avg60=0.00 avg300=0.00 total=0
+    cpu.max: max 100000
+    cpu.uclamp.min: 0.00
+    cpu.uclamp.max: max''',
+    # with PSI, cfs_bandwidth without cpu.stat nr_busts, burst_time
+    '''009cgget:
+    cpu.weight: 100
+    cpu.stat: usage_usec 0
+            user_usec 0
+            system_usec 0
+            nr_periods 0
+            nr_throttled 0
+            throttled_usec 0
+    cpu.weight.nice: 0
+    cpu.pressure: some avg10=0.00 avg60=0.00 avg300=0.00 total=0
+            full avg10=0.00 avg60=0.00 avg300=0.00 total=0
+    cpu.idle: 0
+    cpu.max.burst: 0
+    cpu.max: max 100000
+    cpu.uclamp.min: 0.00
+    cpu.uclamp.max: max''',
+    # with PSI, cfs_bandwidth with cpu.stat nr_busts, burst_time
+    '''009cgget:
+    cpu.weight: 100
+    cpu.stat: usage_usec 0
+            user_usec 0
+            system_usec 0
+            nr_periods 0
+            nr_throttled 0
+            throttled_usec 0
+            nr_bursts 0
+            burst_usec 0
+    cpu.weight.nice: 0
+    cpu.pressure: some avg10=0.00 avg60=0.00 avg300=0.00 total=0
+            full avg10=0.00 avg60=0.00 avg300=0.00 total=0
+    cpu.idle: 0
+    cpu.max.burst: 0
+    cpu.max: max 100000
+    cpu.uclamp.min: 0.00
+    cpu.uclamp.max: max'''
+]
 
 
 def prereqs(config):
@@ -114,18 +142,13 @@ def test(config):
     version = CgroupVersion.get_version(CONTROLLER)
 
     if version == CgroupVersion.CGROUP_V1:
-        expected_out = EXPECTED_OUT_V1
-
-        if len(out.splitlines()) != len(expected_out.splitlines()):
-            expected_out = EXPECTED_OUT_V1_CFS_BANDWIDTH
+        for expected_out in EXPECTED_OUT_V1:
+            if len(out.splitlines()) == len(expected_out.splitlines()):
+                break
     elif version == CgroupVersion.CGROUP_V2:
-        expected_out = EXPECTED_OUT_V2
-
-        if len(out.splitlines()) != len(expected_out.splitlines()):
-            expected_out = EXPECTED_OUT_V2_PSI
-
-            if len(out.splitlines()) != len(expected_out.splitlines()):
-                expected_out = EXPECTED_OUT_V2_PSI_CFS_BANDWIDTH
+        for expected_out in EXPECTED_OUT_V2:
+            if len(out.splitlines()) == len(expected_out.splitlines()):
+                break
 
     if len(out.splitlines()) != len(expected_out.splitlines()):
         result = consts.TEST_FAILED