#!/usr/bin/env python3 from shell_helpers import LF import os import pathlib import subprocess import common from shell_helpers import LF class Main(common.LkmcCliFunction): def __init__(self): super().__init__( description='''\ Run gem5 regression tests. https://cirosantilli.com/linux-kernel-module-cheat#gem5-regression-tests ''' ) self.add_argument( '--cmd', default='run', help=''' List tests instead of running them. ''', ) self.add_argument( 'extra_args', metavar='extra-args', nargs='*', ) def timed_main(self): if self.env['cmd'] == 'run': extra_args = [ '--base-dir', self.env['gem5_source_dir'], LF, '--bin-path', self.env['gem5_test_binaries_dir'], LF, '--build-dir', self.env['gem5_build_build_dir'], LF, '-j', str(self.env['nproc']), LF, '-t', str(self.env['nproc']), LF, ] else: extra_args = [] return self.sh.run_cmd( [ os.path.join(self.env['gem5_source_dir'], 'tests', 'main.py'), LF, self.env['cmd'], LF, '--isa', self.env['gem5_arch'], LF, '--variant', self.env['gem5_build_type'], LF, ] + extra_args + self.sh.add_newlines(self.env['extra_args']), cwd=os.path.join(self.env['gem5_source_dir'], 'tests'), raise_on_failure=False, ) if __name__ == '__main__': Main().cli()