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>
这个提交包含在:
@@ -647,7 +647,7 @@ generate_csv(const output_config&
|
||||
"Agent_Id",
|
||||
"Queue_Id",
|
||||
"Thread_Id",
|
||||
"Alloc_flags",
|
||||
"Alloc_Flags",
|
||||
"Start_Timestamp",
|
||||
"End_Timestamp",
|
||||
}};
|
||||
|
||||
@@ -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}")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:])
|
||||
|
||||
在新工单中引用
屏蔽一个用户