import os import pytest import pathlib import platform import subprocess from tests.LTP.agl_test_ltp_base import LTPBase class SyscallsBase(LTPBase): def __init__(self): super().__init__(test_name="syscalls") # a function that checks for .config related issues def set_test_env(self): # skip file generated and overwrited with essential skip list init_skipfile_cmd = "cat syscalls.skip.essential > " + self.get_skip_file_path() # work dir in /resource/ cwd_buf = self.get_workdir() subprocess.run(init_skipfile_cmd, shell=True, cwd=cwd_buf, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) # check into /proc/config.gz pathObj_gz = pathlib.Path("/proc/config.gz") # check into /lib.modules/ for .config release_info = platform.release() config_file_path = "/lib/modules/" + release_info + "/build/.config" pathObj_config = pathlib.Path(config_file_path) if not pathObj_gz.is_file() and not pathObj_config.is_file(): # set ENV "KCONFIG_SKIP_CHECK" to skip .config check os.environ['KCONFIG_SKIP_CHECK'] = "True" # add skip append to original skip file append_cmd = "cat syscalls.skip.append >> " + self.get_skip_file_path() subprocess.run(append_cmd, shell=True, cwd=cwd_buf, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) # check into group "ltp_add_key05_1" existence, ltp bug in 20210121 with open("/etc/group", 'r') as f: text = f.read() if "ltp_add_key05_1" in text: rm_gourp_cmd = "groupdel ltp_add_key05_1" subprocess.run(rm_gourp_cmd, shell=True, cwd=cwd_buf, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) instance = SyscallsBase() skip_msg = "The current environment does not match the test requirements." pytestmark = pytest.mark.skipif(instance.precheck() == False, reason = skip_msg) case_list = instance.get_test_case_list() @pytest.fixture(scope='module') def testbase(): instance.set_test_env() yield instance #package log files and make report file instance.log_report() @pytest.mark.parametrize('case_name', case_list) def test_ltp_syscalls(testbase: SyscallsBase, case_name): testbase.run_ltp_test(case_name) testbase.run_case(case_name) if __name__ == '__main__': pytest.main("-s run_tests")