From cfc17e5a811931049a6143a6bef589d39be358cc Mon Sep 17 00:00:00 2001 From: Arnaud Fontaine <arnaud.fontaine@nexedi.com> Date: Wed, 7 Dec 2011 21:41:11 +0900 Subject: [PATCH] Clean up generation of concurrent users plot. --- erp5/util/benchmark/report.py | 54 +++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/erp5/util/benchmark/report.py b/erp5/util/benchmark/report.py index e34f8ee31c..8bb580e49e 100755 --- a/erp5/util/benchmark/report.py +++ b/erp5/util/benchmark/report.py @@ -78,7 +78,9 @@ import collections from .result import BenchmarkResultStatistic -def computeStatisticFromFilenameList(argument_namespace, filename_list): +def computeStatisticFromFilenameList(argument_namespace, filename_list, + range_user_report_dict, + is_range_user=False): reader_list = [] ignore_result_set = set() stat_list = [] @@ -124,7 +126,15 @@ def computeStatisticFromFilenameList(argument_namespace, filename_list): merged_label_dict[label] = label_merged_index label_merged_index += 1 - stat_list.append(BenchmarkResultStatistic(suite_name, result_name)) + stat = BenchmarkResultStatistic(suite_name, result_name) + stat_list.append(stat) + + if is_range_user: + report_dict = range_user_report_dict.setdefault( + suite_name, + {'results': collections.OrderedDict()}) + + report_dict['results'].setdefault(stat.full_label, []).append(stat) if row_list != label_list: raise AssertionError, "ERROR: Result labels: %s != %s" % \ @@ -416,9 +426,13 @@ def generateReport(): pdf = PdfPages(argument_namespace.output_filename) - for nb_users, report_dict in per_nb_users_report_dict.items(): + is_range_user = len(per_nb_users_report_dict) > 1 + range_user_report_dict = {} + + for nb_users, report_dict in sorted(per_nb_users_report_dict.items()): stat_list, use_case_dict = computeStatisticFromFilenameList( - argument_namespace, report_dict['filename']) + argument_namespace, report_dict['filename'], range_user_report_dict, + is_range_user) title = "Ran suites with %d users" % len(report_dict['filename']) for slice_start_idx in range(0, len(stat_list), DIAGRAM_PER_PAGE): @@ -437,24 +451,20 @@ def generateReport(): use_case_dict['duration_stats'], is_single_plot=(nb_users == 1)) - report_dict['stats'] = stat_list - report_dict['use_cases'] = use_case_dict - - if len(per_nb_users_report_dict) != 1: - for i in range(len(report_dict['stats'])): - stat_list = [] - nb_users_list = per_nb_users_report_dict.keys() - for report_dict in per_nb_users_report_dict.values(): - stat_list.append(report_dict['stats'][i]) - - drawConcurrentUsersPlot( - pdf, - "%s from %d to %d users (step: %d)" % (stat_list[0].full_label, - nb_users_list[0], - nb_users_list[-1], - nb_users_list[1] - nb_users_list[0]), - nb_users_list, - stat_list) + if is_range_user: + nb_users_list = per_nb_users_report_dict.keys() + title_fmt = "%%s from %d to %d users (step: %d)" % \ + (nb_users_list[0], + nb_users_list[-1], + nb_users_list[1] - nb_users_list[0]) + + for suite_name, report_dict in range_user_report_dict.iteritems(): + for label, stat_list in report_dict['results'].iteritems(): + drawConcurrentUsersPlot( + pdf, + title_fmt % label, + nb_users_list, + stat_list) pdf.close() -- 2.30.9