gh-118518: Check for perf version and not kernel version in test_perf_profiler (#118640)

This commit is contained in:
Pablo Galindo Salgado 2024-05-07 20:41:07 +01:00 committed by GitHub
parent 2c19987db5
commit 37959e25cb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 12 additions and 6 deletions

View File

@ -479,17 +479,23 @@ class TestPerfProfiler(unittest.TestCase, TestPerfProfilerMixin):
if f"py::foo_fork:{script}" in line or f"py::bar_fork:{script}" in line:
self.assertIn(line, child_perf_file_contents)
def _is_kernel_version_at_least(major, minor):
def _is_perf_vesion_at_least(major, minor):
# The output of perf --version looks like "perf version 6.7-3" but
# it can also be perf version "perf version 5.15.143"
try:
with open("/proc/version") as f:
version = f.readline().split()[2]
except FileNotFoundError:
output = subprocess.check_output(["perf", "--version"], text=True)
except (subprocess.CalledProcessError, FileNotFoundError):
return False
version = output.split()[2]
version = version.split("-")[0]
version = version.split(".")
return int(version[0]) > major or (int(version[0]) == major and int(version[1]) >= minor)
version = tuple(map(int, version))
return version >= (major, minor)
@unittest.skipUnless(perf_command_works(), "perf command doesn't work")
@unittest.skipUnless(_is_kernel_version_at_least(6, 6), "perf command may not work due to a perf bug")
@unittest.skipUnless(_is_perf_vesion_at_least(6, 6), "perf command may not work due to a perf bug")
class TestPerfProfilerWithDwarf(unittest.TestCase, TestPerfProfilerMixin):
def run_perf(self, script_dir, script, activate_trampoline=True):
if activate_trampoline: