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