Files
markbench-tests/msikombustor/msi_kombustor_utils.py
2024-11-05 12:50:21 -08:00

75 lines
2.2 KiB
Python

"""Utility functions for MSI Kombustor test script"""
from argparse import ArgumentParser, Namespace
import re
# cSpell:disable
avail_tests = [
"vkfurrytorus",
"glfurrytorus",
"vkfurrymsi",
"glfurrymsi",
"glfurmark1700mb",
"glfurmark3200mb",
"glfurmark5200mb",
"glfurmark6500mb",
"glmsi01burn",
"glmsi01",
"glmsi02cpumedium",
"glmsi02cpumedium++",
"glmsi02gpumedium",
"glmsi02gpumedium++",
"glmsi02cpuhard",
"glmsi02gpuhard",
"glphongdonut",
"vkphongdonut",
"glpbrdonut",
"vktessyspherex32",
"vktessyspherex16",
"gltessyspherex32",
"gltessyspherex16",
]
# cSpell:enable
def parse_args() -> Namespace:
"""Gets script arguments"""
parser = ArgumentParser()
parser.add_argument("-t", "--test", dest="test", choices=avail_tests,
help="kombustor test", metavar="test", required=True)
parser.add_argument("-r", "--resolution", dest="resolution",
help="resolution", metavar="resolution", required=True)
parser.add_argument("-b", "--benchmark", dest="benchmark",
help="benchmark mode", metavar="benchmark", required=False)
return parser.parse_args()
def parse_resolution(arg: str) -> tuple[str, str]:
"""Gets individual height and width values from resolution string"""
match = re.search(r"^\d+,\d+$", arg)
if match is None:
raise ValueError("Resolution value must be in format height,width")
resolution = arg.split(",")
height = resolution[0]
width = resolution[1]
return height, width
def parse_score(log_path: str):
"""Parses score value from log file"""
pattern = re.compile(r"score => (\d+)")
with open(log_path, encoding="utf-8") as log:
lines = log.readlines()
for line in reversed(lines):
match = pattern.search(line)
if match:
return match.group(1)
return "N/A"
def create_arg_string(width: str, height: str, test: str, benchmark: str) -> str:
"""Create string for Kombustor CLI arguments"""
arg_string = f"-width={width} -height={height} -{test} -logfile_in_app_folder "
if benchmark == "true":
arg_string += "-benchmark"
return arg_string