results_organizer.py revision f395c26437cbdabc2960447fba89b226f4409e82
1#!/usr/bin/python
2
3# Copyright 2012 Google Inc. All Rights Reserved.
4
5
6class ResultOrganizer(object):
7  """Create a dict from benchmark_runs.
8
9  The structure of the output dict is as follows:
10  {"benchmark_1":[
11    [{"key1":"v1", "key2":"v2"},{"key1":"v1", "key2","v2"}]
12    #one label
13    []
14    #the other label
15    ]
16   "benchmark_2":
17    [
18    ]}.
19  """
20
21  def __init__(self, benchmark_runs, labels):
22    self.result = {}
23    self.labels = []
24    for label in labels:
25      self.labels.append(label.name)
26    for benchmark_run in benchmark_runs:
27      benchmark_name = benchmark_run.benchmark_name
28      if benchmark_name not in self.result:
29        self.result[benchmark_name] = []
30        while len(self.result[benchmark_name]) < len(labels):
31          self.result[benchmark_name].append([])
32      label_index = self.labels.index(benchmark_run.label_name)
33      cur_table = self.result[benchmark_name][label_index]
34      index = benchmark_run.iteration - 1
35      while index >= len(cur_table):
36        cur_table.append({})
37      cur_dict = cur_table[index]
38      if not benchmark_run.result:
39        continue
40      for autotest_key in benchmark_run.result.keyvals:
41        result_value = benchmark_run.result.keyvals[autotest_key]
42        cur_dict[autotest_key] = result_value
43