Source code for autoease.utils.uestats_utils

"""
@author: meili
@contact: meili02@corp.netease.com
@file: uestats_utils.py
@date: 2023/7/28 16:21
@desc: 
"""
import csv
import os.path
import subprocess


[docs]def get_stat_values_from_uestats_csv(uestats_csv_abs_path: str, stat_metric_key: str or list) -> list or dict: res_list = [] res_dict = {} try: with open(uestats_csv_abs_path, encoding='utf-16-le') as csvfile: reader = csv.reader(csvfile) if isinstance(stat_metric_key, str): for row in reader: if row[1] == stat_metric_key: res_list.append(row[2]) return res_list else: res_dict = {metric_key: [] for metric_key in stat_metric_key} for row in reader: if row[1] in stat_metric_key: if '.' in row[2]: value = float(row[2]) else: value = int(row[2]) res_dict[row[1]].append(value) return res_dict except Exception as error: print("get_stat_values_from_uestats_csv failed", error) return res_dict
[docs]def convert_uestats_to_csv(ue_root_path: str, uestats_file_abs_path: str, metrics_keys_list: list) -> str: ue_root_path = ue_root_path.replace("\\", "/") uestats_file_abs_path = uestats_file_abs_path.replace("\\", "/") unreal_frontend_path = os.path.join(ue_root_path, "Engine/Binaries/Win64/UnrealFrontend.exe") uestats_csv_abs_path = uestats_file_abs_path.replace(".uestats", ".csv") cmd = f"{unreal_frontend_path} -RUN=CONVERT -INFILE={uestats_file_abs_path} -OUTFILE={uestats_csv_abs_path}" if len(metrics_keys_list) != 0: cmd += " -STATLIST=" + "+".join(metrics_keys_list) process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) process.wait() return uestats_csv_abs_path
if __name__ == '__main__': uestats_csv_abs_path = "D:/professionalSoftwareDatas/AutomationTest/Projects/Dayly/ProjectCryptid/Saved/Profiling/UnrealStats/Login-WindowsClient-07.20-16.00.45/Login-WindowsClient-20-16.00.45.csv" uestats_file_abs_path = "D:/professionalSoftwareDatas/AutomationTest/Projects/Dayly/ProjectCryptid/Saved/Profiling/UnrealStats/Login-WindowsClient-07.20-16.00.45/Login-WindowsClient-20-16.00.45.uestats" ue_root_path = "D://UE_5.0" stat_metric_key = ["STAT_FrameTime", "STAT_UnitGPU", "STAT_UnitRender", "STAT_UnitRHIT", "STAT_UnitGame", "STAT_RHIDrawPrimitiveCalls", "STAT_RHITriangles"] STAT_FrameTime = get_stat_values_from_uestats_csv(uestats_csv_abs_path, "STAT_FrameTime") STAT_UnitGPU = get_stat_values_from_uestats_csv(uestats_csv_abs_path, "STAT_UnitGPU") STAT_UnitGame = get_stat_values_from_uestats_csv(uestats_csv_abs_path, "STAT_UnitGame") STAT_UnitRHIT = get_stat_values_from_uestats_csv(uestats_csv_abs_path, "STAT_UnitRHIT") STAT_UnitRender = get_stat_values_from_uestats_csv(uestats_csv_abs_path, "STAT_UnitRender") STAT_RHIDrawPrimitiveCalls = get_stat_values_from_uestats_csv(uestats_csv_abs_path, "STAT_RHIDrawPrimitiveCalls") STAT_RHITriangles = get_stat_values_from_uestats_csv(uestats_csv_abs_path, "STAT_RHITriangles") res_dict = get_stat_values_from_uestats_csv(uestats_csv_abs_path, stat_metric_key) convert_uestats_to_csv(ue_root_path, uestats_file_abs_path, stat_metric_key) print("hello") pass