from cgroup import Cgroup, CgroupVersion
import consts
import ftests
+import utils
import sys
import os
def test(config):
- result = consts.TEST_PASSED
+ result = consts.TEST_FAILED
cause = None
- EXPECTED_OUT_V1 = [OUT_PREFIX + expected_out for expected_out in consts.EXPECTED_CPU_OUT_V1]
- EXPECTED_OUT_V2 = [OUT_PREFIX + expected_out for expected_out in consts.EXPECTED_CPU_OUT_V2]
-
out = Cgroup.get(config, controller=CONTROLLER, cgname=CGNAME)
version = CgroupVersion.get_version(CONTROLLER)
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:
+ EXPECTED_OUT = [OUT_PREFIX + expected_out for expected_out in consts.EXPECTED_CPU_OUT_V1]
+ else:
+ EXPECTED_OUT = [OUT_PREFIX + expected_out for expected_out in consts.EXPECTED_CPU_OUT_V2]
+
+ for expected_out in EXPECTED_OUT:
+ if len(out.splitlines()) == len(expected_out.splitlines()):
if len(out.splitlines()) == len(expected_out.splitlines()):
- break
-
- 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
+ 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==============="
+
+ cause = '\n'.join(filter(None, [cause, expected_out]))
return result, cause