1- import os
2- import json
3- import sys
4- from pathlib import Path
1+ import argparse
52import jinja2
3+ import json
4+ import os
65import string
6+ import sys
77
88# Schema: performance_models[data_mode][tps] = [model]
99performance_models = {}
@@ -58,6 +58,14 @@ def flatten_performance_models():
5858 x ["data_mode" ], x ["data_rate" ]))
5959 return models_list
6060
61+ def get_benchmark_entry (model , data_mode , data_rate , value_field , unit , subgroup ):
62+ benchmark_entry = {}
63+ benchmark_entry ["name" ] = model ["testcase" ]
64+ benchmark_entry ["value" ] = model [value_field ]
65+ benchmark_entry ["unit" ] = unit
66+ benchmark_entry ["extra" ] = f"{ data_mode } (TPS: { data_rate } ) - { subgroup } "
67+ return benchmark_entry
68+
6169def get_benchmark_data ():
6270 """
6371 Splits models by test
@@ -67,33 +75,19 @@ def get_benchmark_data():
6775 for data_mode , data_rates in performance_models .items ():
6876 for data_rate , models in data_rates .items ():
6977 for model in models :
70- benchmark_cpu = {}
71- benchmark_cpu ["name" ] = model ["testcase" ]
72- benchmark_cpu ["value" ] = model ["avgCpu" ]
73- benchmark_cpu ["unit" ] = "%"
74- benchmark_cpu ["extra" ] = f"{ data_mode } (TPS: { data_rate } ) - Average CPU Usage"
75-
76- benchmark_mem = {}
77- benchmark_mem ["name" ] = model ["testcase" ]
78- benchmark_mem ["value" ] = model ["avgMem" ]
79- benchmark_mem ["unit" ] = "MB"
80- benchmark_mem ["extra" ] = f"{ data_mode } (TPS: { data_rate } ) - Average Memory Usage"
81-
82- benchmark_data .append (benchmark_cpu )
83- benchmark_data .append (benchmark_mem )
78+ benchmark_data .append (get_benchmark_entry (model , data_mode , data_rate , "avgCpu" , "%" , "Average CPU Usage" ))
79+ benchmark_data .append (get_benchmark_entry (model , data_mode , data_rate , "avgMem" , "MB" , "Average Memory Usage" ))
8480
8581 return benchmark_data
8682
8783if __name__ == "__main__" :
88- try :
89- aoc_version = sys .argv [1 ].rstrip ()
90- except IndexError :
91- print (f"Usage: { sys .argv [0 ]} <version>" )
92- sys .exit (1 )
84+ parser = argparse .ArgumentParser ("Generate performance-report.md and performance-data.json from artifacts" )
85+ parser .add_argument ('-v' , '--version' , help = "version to tag the report with" , required = True )
86+ args = parser .parse_args ()
87+ aoc_version = args .version
9388
94- from jinja2 import Environment , PackageLoader , select_autoescape
9589 templateLoader = jinja2 .FileSystemLoader (searchpath = "e2etest/templates/" )
96- env = Environment (autoescape = select_autoescape (['html' , 'xml' , 'tpl' , 'yaml' , 'yml' ]), loader = templateLoader )
90+ env = jinja2 . Environment (autoescape = jinja2 . select_autoescape (['html' , 'xml' , 'tpl' , 'yaml' , 'yml' ]), loader = templateLoader )
9791
9892 # get performance models from artifacts
9993 artifacts_path = "artifacts/"
0 commit comments