• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/env python3
2# -*- coding: utf-8 -*-
3
4# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
5# Use of this source code is governed by a BSD-style license that can be
6# found in the LICENSE file.
7
8"""Testing of ResultsOrganizer
9
10   We create some labels, benchmark_runs and then create a ResultsOrganizer,
11   after that, we compare the result of ResultOrganizer.
12"""
13
14from __future__ import print_function
15
16import unittest
17
18from benchmark_run import BenchmarkRun
19from results_cache import Result
20from results_organizer import OrganizeResults
21
22import mock_instance
23
24result = {
25    'benchmark1': [[{
26        '': 'PASS',
27        'bool': 'True',
28        'milliseconds_1': '1',
29        'milliseconds_2': '8',
30        'milliseconds_3': '9.2',
31        'ms_1': '2.1',
32        'total': '5'
33    }, {
34        '': 'PASS',
35        'test': '2'
36    }, {
37        '': 'PASS',
38        'test': '4'
39    }, {
40        '': 'PASS',
41        'bool': 'FALSE',
42        'milliseconds_1': '3',
43        'milliseconds_2': '5',
44        'ms_1': '2.2',
45        'total': '6'
46    }, {
47        '': 'PASS',
48        'test': '3'
49    }, {
50        '': 'PASS',
51        'test': '4'
52    }], [{
53        '': 'PASS',
54        'bool': 'FALSE',
55        'milliseconds_4': '30',
56        'milliseconds_5': '50',
57        'ms_1': '2.23',
58        'total': '6'
59    }, {
60        '': 'PASS',
61        'test': '5'
62    }, {
63        '': 'PASS',
64        'test': '4'
65    }, {
66        '': 'PASS',
67        'bool': 'FALSE',
68        'milliseconds_1': '3',
69        'milliseconds_6': '7',
70        'ms_1': '2.3',
71        'total': '7'
72    }, {
73        '': 'PASS',
74        'test': '2'
75    }, {
76        '': 'PASS',
77        'test': '6'
78    }]],
79    'benchmark2': [[{
80        '': 'PASS',
81        'bool': 'TRUE',
82        'milliseconds_1': '3',
83        'milliseconds_8': '6',
84        'ms_1': '2.3',
85        'total': '7'
86    }, {
87        '': 'PASS',
88        'test': '2'
89    }, {
90        '': 'PASS',
91        'test': '6'
92    }, {
93        '': 'PASS',
94        'bool': 'TRUE',
95        'milliseconds_1': '3',
96        'milliseconds_8': '6',
97        'ms_1': '2.2',
98        'total': '7'
99    }, {
100        '': 'PASS',
101        'test': '2'
102    }, {
103        '': 'PASS',
104        'test': '2'
105    }], [{
106        '': 'PASS',
107        'bool': 'TRUE',
108        'milliseconds_1': '3',
109        'milliseconds_8': '6',
110        'ms_1': '2',
111        'total': '7'
112    }, {
113        '': 'PASS',
114        'test': '2'
115    }, {
116        '': 'PASS',
117        'test': '4'
118    }, {
119        '': 'PASS',
120        'bool': 'TRUE',
121        'milliseconds_1': '3',
122        'milliseconds_8': '6',
123        'ms_1': '1',
124        'total': '7'
125    }, {
126        '': 'PASS',
127        'test': '1'
128    }, {
129        '': 'PASS',
130        'test': '6'
131    }]]
132} # yapf: disable
133
134
135class ResultOrganizerTest(unittest.TestCase):
136  """Test result organizer."""
137
138  def testResultOrganizer(self):
139    labels = [mock_instance.label1, mock_instance.label2]
140    benchmarks = [mock_instance.benchmark1, mock_instance.benchmark2]
141    benchmark_runs = [None] * 8
142    benchmark_runs[0] = BenchmarkRun('b1', benchmarks[0], labels[0], 1, '', '',
143                                     '', 'average', '', {})
144    benchmark_runs[1] = BenchmarkRun('b2', benchmarks[0], labels[0], 2, '', '',
145                                     '', 'average', '', {})
146    benchmark_runs[2] = BenchmarkRun('b3', benchmarks[0], labels[1], 1, '', '',
147                                     '', 'average', '', {})
148    benchmark_runs[3] = BenchmarkRun('b4', benchmarks[0], labels[1], 2, '', '',
149                                     '', 'average', '', {})
150    benchmark_runs[4] = BenchmarkRun('b5', benchmarks[1], labels[0], 1, '', '',
151                                     '', 'average', '', {})
152    benchmark_runs[5] = BenchmarkRun('b6', benchmarks[1], labels[0], 2, '', '',
153                                     '', 'average', '', {})
154    benchmark_runs[6] = BenchmarkRun('b7', benchmarks[1], labels[1], 1, '', '',
155                                     '', 'average', '', {})
156    benchmark_runs[7] = BenchmarkRun('b8', benchmarks[1], labels[1], 2, '', '',
157                                     '', 'average', '', {})
158
159    i = 0
160    for b in benchmark_runs:
161      b.result = Result('', b.label, 'average', 'machine')
162      b.result.keyvals = mock_instance.keyval[i]
163      i += 1
164
165    organized = OrganizeResults(benchmark_runs, labels, benchmarks)
166    self.assertEqual(organized, result)
167
168
169if __name__ == '__main__':
170  unittest.main()
171