Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: scripts/slave/recipe_modules/bisect_tester/parse_metric.py

Issue 1044543002: Lint bisect-related modules; obey pylint. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/build.git@master
Patch Set: Rebased Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 import re 1 import re
2 2
3
3 # The following has largely been copied from bisect_perf_regression.py 4 # The following has largely been copied from bisect_perf_regression.py
4 # TODO(robertocn): Look into the possibility of getting structured data from 5 # TODO(robertocn): Look into the possibility of getting structured data from
5 # run_benchmark and similar scripts instead of this markup. 6 # run_benchmark and similar scripts instead of this markup.
6 def parse_metric(out, err, metric): # pragma: no cover 7 def parse_metric(out, err, metric): # pragma: no cover
7 """Tries to parse the output in RESULT line format or HISTOGRAM format. 8 """Tries to parse the output in RESULT line format or HISTOGRAM format.
8 9
9 Args: 10 Args:
10 metric: The metric as a list of [<trace>, <value>] string pairs. 11 metric: The metric as a list of [<trace>, <value>] string pairs.
11 out, err: stdout and stderr that may contain the output to be parsed 12 out, err: stdout and stderr that may contain the output to be parsed
12 13
13 Returns: 14 Returns:
14 A list of floating point numbers found. 15 A list of floating point numbers found.
15 """ 16 """
16 text = (out or '') + (err or '') 17 text = (out or '') + (err or '')
17 result = _TryParseResultValuesFromOutput(metric, text) 18 result = _parse_result_values_from_output(metric, text)
18 if not result: 19 if not result:
19 result = _TryParseHistogramValuesFromOutput(metric, text) 20 result = _parse_histogram_values_from_output(metric, text)
20 return len(result), result 21 return len(result), result
21 22
22 def _TryParseResultValuesFromOutput(metric, text): # pragma: no cover 23
24 def _parse_result_values_from_output(metric, text): # pragma: no cover
23 """Attempts to parse a metric in the format RESULT <graph>: <trace>= ... 25 """Attempts to parse a metric in the format RESULT <graph>: <trace>= ...
24 26
25 Args: 27 Args:
26 metric: The metric as a list of [<trace>, <value>] string pairs. 28 metric: The metric as a list of [<trace>, <value>] string pairs.
27 text: The text to parse the metric values from. 29 text: The text to parse the metric values from.
28 30
29 Returns: 31 Returns:
30 A list of floating point numbers found. 32 A list of floating point numbers found.
31 """ 33 """
32 if not text: 34 if not text:
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 ['warm_times', 'page_load_time'], 91 ['warm_times', 'page_load_time'],
90 ] 92 ]
91 93
92 if metric in metrics_to_sum: 94 if metric in metrics_to_sum:
93 if values_list: 95 if values_list:
94 values_list = [reduce(lambda x, y: float(x) + float(y), values_list)] 96 values_list = [reduce(lambda x, y: float(x) + float(y), values_list)]
95 97
96 return values_list 98 return values_list
97 99
98 100
99 def _TryParseHistogramValuesFromOutput(metric, text): # pragma: no cover 101 def _parse_histogram_values_from_output(metric, text): # pragma: no cover
100 """Attempts to parse a metric in the format HISTOGRAM <graph: <trace>. 102 """Attempts to parse a metric in the format HISTOGRAM <graph: <trace>.
101 103
102 Args: 104 Args:
103 metric: The metric as a list of [<trace>, <value>] strings. 105 metric: The metric as a list of [<trace>, <value>] strings.
104 text: The text to parse the metric values from. 106 text: The text to parse the metric values from.
105 107
106 Returns: 108 Returns:
107 A list of floating point numbers found, [] if none were found. 109 A list of floating point numbers found, [] if none were found.
108 """ 110 """
109 metric_formatted = 'HISTOGRAM %s: %s= ' % (metric[0], metric[1]) 111 metric_formatted = 'HISTOGRAM %s: %s= ' % (metric[0], metric[1])
110 112
111 text_lines = text.split('\n') 113 text_lines = text.split('\n')
112 values_list = [] 114 values_list = []
113 115
114 for current_line in text_lines: 116 for current_line in text_lines:
115 if metric_formatted in current_line: 117 if metric_formatted in current_line:
116 current_line = current_line[len(metric_formatted):] 118 current_line = current_line[len(metric_formatted):]
117 119
118 try: 120 try:
119 histogram_values = eval(current_line) 121 histogram_values = eval(current_line)
120 122
121 for b in histogram_values['buckets']: 123 for b in histogram_values['buckets']:
122 average_for_bucket = float(b['high'] + b['low']) * 0.5 124 average_for_bucket = float(b['high'] + b['low']) * 0.5
123 # Extends the list with N-elements with the average for that bucket. 125 # Extends the list with N-elements with the average for that bucket.
124 values_list.extend([average_for_bucket] * b['count']) 126 values_list.extend([average_for_bucket] * b['count'])
125 except Exception: 127 except Exception:
126 pass 128 pass
127 129
128 return values_list 130 return values_list
OLDNEW
« no previous file with comments | « scripts/slave/recipe_modules/bisect_tester/api.py ('k') | scripts/slave/recipe_modules/bisect_tester/perf_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698