rocprofv3: rocprofv3-avail tool (#15)

* support avail tool

Updating avail library and script

Listing on Std output incase the output folder is not given

Extending list metrics test

misc fix

misc fix

fixing memory leak

changing list-metrics to list-avail

fixing formatting issue

Fixing CMakeLists

Add test for list avil with trace

Fix test fail

clang tidy errors fixed

Removing build commands for rocprofv3-trigger-list

Addressing review changes

addressing review comment

moving avail to libexec

merge fix

Fix test failures

updating doc

Fix doc error

* updating legacy doc

* fix formatting issue

* Addressing review comments

[ROCm/rocprofiler-sdk commit: c42bdc3128]
This commit is contained in:
Nagaraj, Sriraksha
2024-12-04 18:34:10 -06:00
committed by GitHub
parent 9cfbfb5060
commit e67918dfe8
16 changed files with 933 additions and 257 deletions
@@ -15,28 +15,35 @@ rocprofiler_configure_pytest_files(CONFIG pytest.ini COPY validate.py conftest.p
# basic-metrics
add_test(
NAME rocprofv3-test-list-metrics-execute
COMMAND
$<TARGET_FILE:rocprofiler-sdk::rocprofv3> -d
${CMAKE_CURRENT_BINARY_DIR}/out_counter_collection_2 -o metrics --list-metrics)
NAME rocprofv3-test-list-avail-execute
COMMAND $<TARGET_FILE:rocprofiler-sdk::rocprofv3> -d
${CMAKE_CURRENT_BINARY_DIR}/out_counter_collection_2 -o metrics --list-avail)
# list-metrics-stdout
add_test(NAME rocprofv3-test-list-metrics-std-out-execute
add_test(NAME rocprofv3-test-list-avail-std-out-execute
COMMAND $<TARGET_FILE:rocprofiler-sdk::rocprofv3> -i
${CMAKE_CURRENT_BINARY_DIR}/input.json)
# list-metrics with tracing
add_test(
NAME rocprofv3-test-list-avail-trace-execute
COMMAND
$<TARGET_FILE:rocprofiler-sdk::rocprofv3> -d
${CMAKE_CURRENT_BINARY_DIR}/out_counter_collection_2 -o metrics --list-avail
--sys-trace -- $<TARGET_FILE:transpose>)
string(REPLACE "LD_PRELOAD=" "ROCPROF_PRELOAD=" PRELOAD_ENV
"${ROCPROFILER_MEMCHECK_PRELOAD_ENV}")
set(cc-env-list-metrics "${PRELOAD_ENV}")
set_tests_properties(
rocprofv3-test-list-metrics-execute
rocprofv3-test-list-avail-execute
PROPERTIES TIMEOUT 45 LABELS "integration-tests" ENVIRONMENT "${cc-env-list-metrics}"
FAIL_REGULAR_EXPRESSION "${ROCPROFILER_DEFAULT_FAIL_REGEX}")
set_tests_properties(
rocprofv3-test-list-metrics-std-out-execute
rocprofv3-test-list-avail-std-out-execute
PROPERTIES
TIMEOUT
45
@@ -45,23 +52,32 @@ set_tests_properties(
ENVIRONMENT
"${cc-env-list-metrics}"
PASS_REGULAR_EXPRESSION
"gpu-agent[0-9]*:[a-zA-Z_]*\\n;Description:(.*)\\n*;Expression:(.)*\\n*;Block:[a-zA-Z]*\\n*;Dimensions:([A-Z_]*\\[[0-9]*:[0-9]*\\])*\\n*;"
"gpu-agent:[0-9]*\\n*; Name:\t[a-zA-Z_]*\\n;Description:\t(.*)\\n*;Expression:\t(.)*\\n*;Block:\t[a-zA-Z]*\\n*;Dimensions:\t([A-Z_]*\\[[0-9]*:[0-9]*\\];Method:\t(.*);Unit:\t(.*);Minimum_Interval:\t[0-9]*;Maximum_Interval:\t[0-9]*)*\\n*;"
)
set_tests_properties(
rocprofv3-test-list-avail-trace-execute
PROPERTIES TIMEOUT 45 LABELS "integration-tests" ENVIRONMENT "${cc-env-list-metrics}"
FAIL_REGULAR_EXPRESSION "${ROCPROFILER_DEFAULT_FAIL_REGEX}")
set(VALIDATION_FILES
${CMAKE_CURRENT_BINARY_DIR}/out_counter_collection_2/metrics_basic_metrics.csv
${CMAKE_CURRENT_BINARY_DIR}/out_counter_collection_2/metrics_derived_metrics.csv)
${CMAKE_CURRENT_BINARY_DIR}/out_counter_collection_2/metrics_derived_metrics.csv
${CMAKE_CURRENT_BINARY_DIR}/out_counter_collection_2/metrics_pc_sample_config.csv)
add_test(
NAME rocprofv3-test-list-metrics-validate
NAME rocprofv3-test-list-avail-validate
COMMAND
${Python3_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/validate.py
--derived-metrics-input
${CMAKE_CURRENT_BINARY_DIR}/out_counter_collection_2/metrics_derived_metrics.csv
--basic-metrics-input
${CMAKE_CURRENT_BINARY_DIR}/out_counter_collection_2/metrics_basic_metrics.csv)
${CMAKE_CURRENT_BINARY_DIR}/out_counter_collection_2/metrics_basic_metrics.csv
--pc-sample-config-input
${CMAKE_CURRENT_BINARY_DIR}/out_counter_collection_2/metrics_pc_sample_config.csv)
set_tests_properties(
rocprofv3-test-list-metrics-validate
rocprofv3-test-list-avail-validate
PROPERTIES TIMEOUT
45
LABELS
@@ -7,6 +7,7 @@ import pytest
def pytest_addoption(parser):
parser.addoption("--basic-metrics-input", action="store", help="Path to csv file.")
parser.addoption("--derived-metrics-input", action="store", help="Path to csv file.")
parser.addoption("--pc-sample-config-input", action="store", help="Path to csv file.")
@pytest.fixture
@@ -33,3 +34,16 @@ def basic_metrics_input_data(request):
data.append(row)
return data
@pytest.fixture
def pc_sample_config_input_data(request):
filename = request.config.getoption("--pc-sample-config-input")
data = []
if filename:
with open(filename, "r") as inp:
reader = csv.DictReader(inp)
for row in reader:
data.append(row)
return data
@@ -1,7 +1,7 @@
{
"jobs": [
{
"list_metrics": true
"list_avail": true
}
]
}
@@ -29,6 +29,15 @@ def test_validate_list_derived_metrics(derived_metrics_input_data):
row["Expression"] == "reduce(TA_TA_BUSY,min)"
def test_validate_list_pc_sample_config(pc_sample_config_input_data):
for row in pc_sample_config_input_data:
assert row["Agent_Id"].isdigit() == True
assert row["Method"] != ""
assert row["Unit"] != ""
assert row["Minimum_Interval"].isdigit() == True
assert row["Maximum_Interval"].isdigit() == True
if __name__ == "__main__":
exit_code = pytest.main(["-x", __file__] + sys.argv[1:])
sys.exit(exit_code)