diff --git a/projects/rocprofiler-sdk/source/scripts/run-ci.py b/projects/rocprofiler-sdk/source/scripts/run-ci.py index f260de3e99..3d357c1531 100755 --- a/projects/rocprofiler-sdk/source/scripts/run-ci.py +++ b/projects/rocprofiler-sdk/source/scripts/run-ci.py @@ -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") diff --git a/projects/rocprofiler-sdk/tests/pytest-packages/CMakeLists.txt b/projects/rocprofiler-sdk/tests/pytest-packages/CMakeLists.txt index 9a90f056d0..3af49e7b53 100644 --- a/projects/rocprofiler-sdk/tests/pytest-packages/CMakeLists.txt +++ b/projects/rocprofiler-sdk/tests/pytest-packages/CMakeLists.txt @@ -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) diff --git a/projects/rocprofiler-sdk/tests/pytest-packages/pytest_utils/perfetto_reader.py b/projects/rocprofiler-sdk/tests/pytest-packages/pytest_utils/perfetto_reader.py index 8a7618dcdb..9996f47f7a 100644 --- a/projects/rocprofiler-sdk/tests/pytest-packages/pytest_utils/perfetto_reader.py +++ b/projects/rocprofiler-sdk/tests/pytest-packages/pytest_utils/perfetto_reader.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