Rename csv output header for scratch memory trace from Alloc_flags to Alloc_Flags. (#12)

* rename csv output header for scratch memmory trace from Alloc_flags to Alloc_Flags.

* csv output tests for scratch memory trace.

* Check output lengths

---------

Co-authored-by: Mythreya <mythreya.kuricheti@amd.com>
这个提交包含在:
Kandula, Venkateshwar reddy
2024-12-05 13:37:23 -06:00
提交者 GitHub
父节点 2dc3a5ae95
当前提交 e77db42d53
修改 4 个文件,包含 100 行新增23 行删除
+1 -1
查看文件
@@ -647,7 +647,7 @@ generate_csv(const output_config&
"Agent_Id",
"Queue_Id",
"Thread_Id",
"Alloc_flags",
"Alloc_Flags",
"Start_Timestamp",
"End_Timestamp",
}};
+37 -17
查看文件
@@ -1,5 +1,5 @@
#
#
# rocprofv3 tool test
#
cmake_minimum_required(VERSION 3.21.0 FATAL_ERROR)
@@ -17,25 +17,45 @@ string(REPLACE "LD_PRELOAD=" "ROCPROF_PRELOAD=" PRELOAD_ENV
set(scratch-memory-tracing-env "${PRELOAD_ENV}")
set(VALIDATION_DEPENDS)
foreach(_OUTPUT_FORMAT csv json)
add_test(
NAME rocprofv3-test-scratch-memory-tracing-${_OUTPUT_FORMAT}-execute
COMMAND
$<TARGET_FILE:rocprofiler-sdk::rocprofv3> --scratch-memory-trace -d
${CMAKE_CURRENT_BINARY_DIR}/%tag%-trace -o out --output-format
${_OUTPUT_FORMAT} --log-level env -- $<TARGET_FILE:scratch-memory>)
set_tests_properties(
rocprofv3-test-scratch-memory-tracing-${_OUTPUT_FORMAT}-execute
PROPERTIES TIMEOUT 45 LABELS "integration-tests" ENVIRONMENT
"${scratch-memory-tracing-env}" FAIL_REGULAR_EXPRESSION
"threw an exception")
list(APPEND VALIDATION_DEPENDS
rocprofv3-test-scratch-memory-tracing-${_OUTPUT_FORMAT}-execute)
endforeach()
add_test(
NAME rocprofv3-test-scratch-memory-tracing-execute
NAME rocprofv3-test-scratch-memory-tracing-validate
COMMAND
$<TARGET_FILE:rocprofiler-sdk::rocprofv3> --scratch-memory-trace -d
${CMAKE_CURRENT_BINARY_DIR}/%tag%-trace -o out --output-format json --log-level
env -- $<TARGET_FILE:scratch-memory>)
${Python3_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/validate.py --json-input
${CMAKE_CURRENT_BINARY_DIR}/scratch-memory-trace/out_results.json --csv-input
${CMAKE_CURRENT_BINARY_DIR}/scratch-memory-trace/out_scratch_memory_trace.csv)
set_tests_properties(
rocprofv3-test-scratch-memory-tracing-execute
PROPERTIES TIMEOUT 45 LABELS "integration-tests" ENVIRONMENT
"${scratch-memory-tracing-env}" FAIL_REGULAR_EXPRESSION
"threw an exception")
add_test(NAME rocprofv3-test-scratch-memory-tracing-validate
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/validate.py --input
${CMAKE_CURRENT_BINARY_DIR}/scratch-memory-trace/out_results.json)
set(VALIDATION_FILES
${CMAKE_CURRENT_BINARY_DIR}/scratch-memory-trace/out_results.json
${CMAKE_CURRENT_BINARY_DIR}/scratch-memory-trace/out_scratch_memory_trace.csv)
set_tests_properties(
rocprofv3-test-scratch-memory-tracing-validate
PROPERTIES TIMEOUT 45 LABELS "integration-tests" DEPENDS
rocprofv3-test-scratch-memory-tracing-execute FAIL_REGULAR_EXPRESSION
"AssertionError")
PROPERTIES TIMEOUT
45
LABELS
"integration-tests"
DEPENDS
"${VALIDATION_DEPENDS}"
FAIL_REGULAR_EXPRESSION
"AssertionError"
ATTACHED_FILES_ON_FAIL
"${VALIDATION_FILES}")
+22 -3
查看文件
@@ -1,5 +1,6 @@
#!/usr/bin/env python3
import csv
import json
import pytest
@@ -9,15 +10,33 @@ from rocprofiler_sdk.pytest_utils import collapse_dict_list
def pytest_addoption(parser):
parser.addoption(
"--input",
"--json-input",
action="store",
default="scratch-memory-tracing/out_results.json",
help="Input JSON",
)
parser.addoption(
"--csv-input",
action="store",
default="scratch-memory-tracing/out_scratch_memory_trace.csv",
help="Input CSV",
)
@pytest.fixture
def input_data(request):
filename = request.config.getoption("--input")
def json_input_data(request):
filename = request.config.getoption("--json-input")
with open(filename, "r") as inp:
return dotdict(collapse_dict_list(json.load(inp)))
@pytest.fixture
def csv_input_data(request):
filename = request.config.getoption("--csv-input")
data = []
with open(filename, "r") as inp:
reader = csv.DictReader(inp)
for row in reader:
data.append(row)
return data
+40 -2
查看文件
@@ -27,8 +27,8 @@ def get_operation(record, kind_name, op_name=None):
return None
def test_scratch_memory(input_data):
data = input_data["rocprofiler-sdk-tool"]
def test_scratch_memory(json_input_data, csv_input_data):
data = json_input_data["rocprofiler-sdk-tool"]
buffer_records = data["buffer_records"]
scratch_memory_data = buffer_records["scratch_memory"]
@@ -41,6 +41,9 @@ def test_scratch_memory(input_data):
detected_agents_ids = set(
agent["id"]["handle"] for agent in data["agents"] if agent["type"] == 2
)
assert len(scratch_memory_data) > 0
# check buffering data
for node in scratch_memory_data:
assert "size" in node
@@ -74,6 +77,41 @@ def test_scratch_memory(input_data):
assert 2**64 - 1 not in scratch_reported_agent_ids
assert scratch_reported_agent_ids == detected_agents_ids
assert len(csv_input_data) > 0
for row in csv_input_data:
assert "Kind" in row, "Kind header not present in csv for scratch memory trace."
assert (
"Operation" in row
), "Operation header not present in csv for scratch memory trace."
assert (
"Agent_Id" in row
), "Agent_Id header not present in csv for scratch memory trace."
assert (
"Queue_Id" in row
), "Queue_Id header not present in csv for scratch memory trace."
assert (
"Thread_Id" in row
), "Thread_Id header not present in csv for scratch memory trace."
assert (
"Alloc_Flags" in row
), "Alloc_Flags header not present in csv for scratch memory trace."
assert (
"Start_Timestamp" in row
), "Start_Timestamp header not present in csv for scratch memory trace."
assert (
"End_Timestamp" in row
), "End_Timestamp header not present in csv for scratch memory trace."
assert row["Kind"] == "SCRATCH_MEMORY"
assert row["Operation"] in ["SCRATCH_MEMORY_ALLOC", "SCRATCH_MEMORY_FREE"]
assert int(row["Agent_Id"]) > 0
assert int(row["Queue_Id"]) > 0
assert int(row["Thread_Id"]) > 0
assert int(row["Start_Timestamp"]) > 0
assert int(row["End_Timestamp"]) > 0
assert int(row["Start_Timestamp"]) < int(row["End_Timestamp"])
if __name__ == "__main__":
exit_code = pytest.main(["-x", __file__] + sys.argv[1:])