]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
ftests/013: Refactor code to match outputs with same line
authorKamalesh Babulal <kamalesh.babulal@oracle.com>
Mon, 8 Jul 2024 11:16:49 +0000 (16:46 +0530)
committerTom Hromatka <tom.hromatka@oracle.com>
Wed, 17 Jul 2024 21:26:47 +0000 (15:26 -0600)
Refactor the code to match controller(s) output, with expected
controller(s) output, where more than one items in the expected output
list matches number of lines. Without this patch, the output is matched
only against the first item matching the line count in the expected
output.

-----------------------------------------------------------------
Test Results:
        Run Date:                          Jun 24 11:17:11
        Passed:                                  1 test(s)
        Skipped:                                 0 test(s)
        Failed:                                  0 test(s)
-----------------------------------------------------------------
Timing Results:
        Test                              Time (sec)
        --------------------------------------------
        setup                                   0.00
        013-cgget-multiple_g_flags.py           0.05
        teardown                                0.00
        --------------------------------------------
        Total Run Time                          0.05

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

index b02cde5fce3842bebb69bbcb28d41ccae9b35b10..c95551c249a3e7e849a3144fc8c4b893d46f6fd5 100755 (executable)
@@ -10,6 +10,7 @@
 from cgroup import Cgroup, CgroupVersion
 import consts
 import ftests
+import utils
 import sys
 import os
 
@@ -32,51 +33,37 @@ def test(config):
     result = consts.TEST_PASSED
     cause = None
 
-    # Append pid controller [0] and cpu controller [N - 2]
-    EXPECTED_OUT_V1 = [OUT_PREFIX + consts.EXPECTED_PIDS_OUT[0] + expected_out
-                       for expected_out in consts.EXPECTED_CPU_OUT_V1[:-2]]
-    # Append pid controller [1] and cpu controller [N, N - 1]
-    EXPECTED_OUT_V1.extend(OUT_PREFIX + consts.EXPECTED_PIDS_OUT[1] + expected_out
-                           for expected_out in consts.EXPECTED_CPU_OUT_V1[-2:])
-
-    # Append pid controller [0] and cpu controller [N - 2]
-    EXPECTED_OUT_V2 = [OUT_PREFIX + consts.EXPECTED_PIDS_OUT[0] + expected_out
-                       for expected_out in consts.EXPECTED_CPU_OUT_V2[:-2]]
-    # Append pid controller [1] and cpu controller [N, N - 1]
-    EXPECTED_OUT_V2.extend(OUT_PREFIX + consts.EXPECTED_PIDS_OUT[1] + expected_out
-                           for expected_out in consts.EXPECTED_CPU_OUT_V2[-2:])
-
     out = Cgroup.get(config, controller=[CONTROLLER1, CONTROLLER2],
                      cgname=CGNAME)
     version = CgroupVersion.get_version(CONTROLLER1)
 
     if version == CgroupVersion.CGROUP_V1:
-        for expected_out in EXPECTED_OUT_V1:
-            if len(out.splitlines()) == len(expected_out.splitlines()):
-                break
-    elif version == CgroupVersion.CGROUP_V2:
-        for expected_out in EXPECTED_OUT_V2:
-            if len(out.splitlines()) == len(expected_out.splitlines()):
+        # Append pid controller [0] and cpu controller [N - 2]
+        EXPECTED_OUT = [OUT_PREFIX + consts.EXPECTED_PIDS_OUT[0] + expected_out
+                        for expected_out in consts.EXPECTED_CPU_OUT_V1[:-2]]
+        # Append pid controller [1] and cpu controller [N, N - 1]
+        EXPECTED_OUT.extend(OUT_PREFIX + consts.EXPECTED_PIDS_OUT[1] + expected_out
+                            for expected_out in consts.EXPECTED_CPU_OUT_V1[-2:])
+    else:
+        # Append pid controller [0] and cpu controller [N - 2]
+        EXPECTED_OUT = [OUT_PREFIX + consts.EXPECTED_PIDS_OUT[0] + expected_out
+                        for expected_out in consts.EXPECTED_CPU_OUT_V2[:-2]]
+        # Append pid controller [1] and cpu controller [N, N - 1]
+        EXPECTED_OUT.extend(OUT_PREFIX + consts.EXPECTED_PIDS_OUT[1] + expected_out
+                            for expected_out in consts.EXPECTED_CPU_OUT_V2[-2:])
+
+    for expected_out in EXPECTED_OUT:
+        if len(out.splitlines()) == len(expected_out.splitlines()):
+            result_, tmp_cause = utils.is_output_same(config, out, expected_out)
+            if result_ is True:
+                result = consts.TEST_PASSED
+                cause = None
                 break
+            else:
+                if cause is None:
+                    cause = "Tried Matching:\n==============="
 
-    if len(out.splitlines()) != len(expected_out.splitlines()):
-        result = consts.TEST_FAILED
-        cause = (
-                    'Expected {} lines but received {} lines'
-                    ''.format(len(expected_out.splitlines()),
-                              len(out.splitlines()))
-                )
-        return result, cause
-
-    for line_num, line in enumerate(out.splitlines()):
-        if line.strip() != expected_out.splitlines()[line_num].strip():
-            result = consts.TEST_FAILED
-            cause = (
-                        'Expected line:\n\t{}\nbut received line:\n\t{}'
-                        ''.format(expected_out.splitlines()[line_num].strip(),
-                                  line.strip())
-                    )
-            return result, cause
+                cause = '\n'.join(filter(None, [cause, expected_out]))
 
     return result, cause