import pytest import subprocess import pathlib from plugins.agl_test_base import AGLBaseTest class StressngBase(AGLBaseTest): def __init__(self): super().__init__(name="stress-ng") def run_test_fun(self): log_file = self.get_logfile() run_test = 'stress-ng ' +\ '-i 2 -c 2 --hdd 2 --hdd-bytes 100M --vm 2 --vm-bytes 128M -t 60' with open(log_file, 'w') as log_f: output = subprocess.run(run_test, shell=True, stdout=log_f, stderr=log_f) log_f.close() if (output.returncode == 0): self.case_info_list = {'test_stress-ng': ['test_stress-ng', str(output.returncode), 'passed']} else: self.case_info_list = {'test_stress-ng': ['test_stress-ng', str(output.returncode), 'failed']} def precheck(self): path_stress_ng = pathlib.Path("/usr/bin/stress-ng") return super().precheck() and path_stress_ng.is_file() @pytest.fixture(scope='module') def testbase(): #init instance for test instance = StressngBase() #run test scripts instance.run_test_fun() #write test suite info to file instance.write_run_info() yield instance #package log files and make report file instance.log_report() def precheck(): instance = StressngBase() output = instance.precheck() if(output == False): #write test suite info to file instance.write_skip_info() return output skip_msg = "The current environment does not match the test requirements." pytestmark = pytest.mark.skipif(precheck() == False, reason = skip_msg) @pytest.mark.oss_default def test_stress_ng(testbase: StressngBase): assert testbase.case_info_list['test_stress-ng'][1] == '0' if __name__ == '__main__': pytest.main("-s run_tests")