Skip to content

Commit

Permalink
pythongh-118518: Check for perf version and not kernel version in tes…
Browse files Browse the repository at this point in the history
…t_perf_profiler (python#118640)
  • Loading branch information
pablogsal authored and SonicField committed May 8, 2024
1 parent d561d81 commit bd83973
Showing 1 changed file with 12 additions and 6 deletions.
18 changes: 12 additions & 6 deletions Lib/test/test_perf_profiler.py
Original file line number Diff line number Diff line change
Expand Up @@ -479,17 +479,23 @@ def compile_trampolines_for_all_functions():
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:
Expand Down

0 comments on commit bd83973

Please sign in to comment.