File: helpers.py

package info (click to toggle)
intel-gpu-tools 2.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 63,360 kB
  • sloc: xml: 781,458; ansic: 360,567; python: 8,336; yacc: 2,781; perl: 1,196; sh: 1,177; lex: 487; asm: 227; lisp: 35; makefile: 30
file content (77 lines) | stat: -rw-r--r-- 2,685 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# SPDX-License-Identifier: MIT
# Copyright © 2024 Intel Corporation

import logging

from bench.executors.igt import IgtExecutor
from bench.executors.shell import ShellExecutor
from bench.machines.machine_interface import MachineInterface

logger = logging.getLogger('Helpers')


def driver_check(machine: MachineInterface, card: int = 0) -> bool:
    drm_driver = machine.get_drm_driver_name()
    if not machine.dir_exists(f'/sys/module/{drm_driver}/drivers/pci:{drm_driver}/'):
        logger.error(f'{drm_driver} module not loaded on card %s', card)
        return False

    return True


def igt_check(igt_test: IgtExecutor) -> bool:
    ''' Helper/wrapper for wait and check for igt test '''
    igt_out = igt_test.wait()
    if igt_out.exit_code == 0 and igt_test.did_pass():
        return True
    logger.error('IGT failed with %s', igt_out)
    return False


def igt_run_check(machine: MachineInterface, test: str) -> bool:
    ''' Helper/wrapper for quick run and check for igt test '''
    igt_test = IgtExecutor(machine, test)
    return igt_check(igt_test)


def cmd_check(cmd: ShellExecutor) -> bool:
    ''' Helper/wrapper for wait and check for shell command '''
    cmd_out = cmd.wait()
    if cmd_out.exit_code == 0:
        return True
    logger.error('%s failed with %s', cmd, cmd_out)
    return False


def cmd_run_check(machine: MachineInterface, cmd: str) -> bool:
    ''' Helper/wrapper for quick run and check for shell command '''
    cmd_run = ShellExecutor(machine, cmd)
    return cmd_check(cmd_run)


def modprobe_driver(machine: MachineInterface, parameters: str = '', options: str = '') -> ShellExecutor:
    """Load driver (modprobe [driver_module]) and return ShellExecutor instance (do not check a result)."""
    drm_driver = machine.get_drm_driver_name()
    modprobe_cmd = ShellExecutor(machine, f'modprobe {drm_driver} {options} {parameters}')
    return modprobe_cmd


def modprobe_driver_check(machine: MachineInterface, cmd: ShellExecutor) -> bool:
    """Check result of a driver load (modprobe) based on a given ShellExecutor instance."""
    modprobe_success = cmd_check(cmd)
    if modprobe_success:
        return driver_check(machine)

    logger.error('Modprobe failed')
    return False


def modprobe_driver_run_check(machine: MachineInterface, parameters: str = '', options: str = '') -> bool:
    """Load (modprobe) a driver and check a result (waits until operation ends)."""
    modprobe_cmd = modprobe_driver(machine, parameters, options)
    modprobe_success = modprobe_driver_check(machine, modprobe_cmd)
    if modprobe_success:
        return driver_check(machine)

    logger.error('Modprobe failed')
    return False