Download perfetto trace_processor_shell (#105)

* Download perfetto trace_processor_shell

* Upgrade to perfetto-trace-processor-shell v0.0.4

* Fix run-ci.py warning

- warning message:

CMake Warning (dev) at /.../build/CTestCustom.cmake:16:
  Syntax Warning in cmake code at column 77
  Argument not separated from preceding token by whitespace.

* Update tests/pytest-packages/pytest_utils/perfetto_reader.py

---------

Co-authored-by: Jonathan R. Madsen <jonathanrmadsen@gmail.com>

[ROCm/rocprofiler-sdk commit: 2c3bdeaed9]
This commit is contained in:
Madsen, Jonathan
2025-01-08 20:32:48 -06:00
committed by GitHub
parent 06ac2cdc68
commit 247ba0afa1
3 changed files with 35 additions and 2 deletions
@@ -57,7 +57,7 @@ def generate_custom(args, cmake_args, ctest_args):
SOURCE_DIR = os.path.realpath(args.source_dir)
BINARY_DIR = os.path.realpath(args.binary_dir)
CMAKE_ARGS = " ".join(cmake_args)
CTEST_ARGS = " ".join(ctest_args)
CTEST_ARGS = " ".join(['"{}"'.format(x.replace('"', '\\"')) for x in ctest_args])
GIT_CMD = which("git", require=True)
GCOV_CMD = which("gcov", require=False)
@@ -199,7 +199,7 @@ def generate_custom(args, cmake_args, ctest_args):
set(CTEST_OUTPUT_ON_FAILURE TRUE)
set(CTEST_USE_LAUNCHERS TRUE)
set(CMAKE_CTEST_ARGUMENTS --output-on-failure {CTEST_ARGS})
set(CMAKE_CTEST_ARGUMENTS "--output-on-failure" {CTEST_ARGS})
set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS "100")
set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS "100")
@@ -5,6 +5,29 @@
set(PACKAGE_OUTPUT_DIR
${ROCPROFILER_SDK_TESTS_BINARY_DIR}/pytest-packages/rocprofiler_sdk)
if(NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/trace_processor_shell.linux_clang_release)
file(
DOWNLOAD
https://github.com/jrmadsen/perfetto-trace-processor-shell/releases/download/v0.0.4/trace_processor_shell.linux_clang_release
${CMAKE_CURRENT_BINARY_DIR}/trace_processor_shell.linux_clang_release
EXPECTED_MD5 c25390cd99aa96622e328efa6699c6c6
INACTIVITY_TIMEOUT 30
TIMEOUT 300
SHOW_PROGRESS)
configure_file(
${CMAKE_CURRENT_BINARY_DIR}/trace_processor_shell.linux_clang_release
${PACKAGE_OUTPUT_DIR}/pytest_utils/trace_processor_shell
COPYONLY
FILE_PERMISSIONS
OWNER_READ
OWNER_WRITE
OWNER_EXECUTE
GROUP_READ
GROUP_EXECUTE
WORLD_READ
WORLD_EXECUTE)
endif()
set(PYTEST_UTILS_PYTHON_SOURCES __init__.py dotdict.py perfetto_reader.py otf2_reader.py)
set(TESTS_PYTHON_SOURCES __init__.py rocprofv3.py)
@@ -22,6 +22,7 @@
from __future__ import absolute_import
import os
import re
import sys
import time
@@ -31,6 +32,11 @@ from collections import OrderedDict
from perfetto.trace_processor import TraceProcessor, TraceProcessorConfig
PerfettoTraceProcessorShellPath = os.path.join(
os.path.dirname(__file__), "trace_processor_shell"
)
class PerfettoReader:
"""Read in perfetto protobuf output"""
@@ -168,6 +174,10 @@ class PerfettoReader:
cfg = TraceProcessorConfig(verbose=verbosity)
if hasattr(cfg, "load_timeout"):
cfg.load_timeout = timeout_v + i
if hasattr(cfg, "bin_path") and os.path.exists(
PerfettoTraceProcessorShellPath
):
cfg.bin_path = PerfettoTraceProcessorShellPath
return TraceProcessor(trace=(trace_v), config=cfg)
except Exception as e:
nwait = i + 1