1#!/usr/bin/env python3 2# -*- coding: utf-8 -*- 3 4# Copyright 2013 The ChromiumOS Authors 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 14 15import unittest 16 17from benchmark_run import BenchmarkRun 18import mock_instance 19from results_cache import Result 20from results_organizer import OrganizeResults 21 22 23result = { 24 "benchmark1": [ 25 [ 26 { 27 "": "PASS", 28 "bool": "True", 29 "milliseconds_1": "1", 30 "milliseconds_2": "8", 31 "milliseconds_3": "9.2", 32 "ms_1": "2.1", 33 "total": "5", 34 }, 35 {"": "PASS", "test": "2"}, 36 {"": "PASS", "test": "4"}, 37 { 38 "": "PASS", 39 "bool": "FALSE", 40 "milliseconds_1": "3", 41 "milliseconds_2": "5", 42 "ms_1": "2.2", 43 "total": "6", 44 }, 45 {"": "PASS", "test": "3"}, 46 {"": "PASS", "test": "4"}, 47 ], 48 [ 49 { 50 "": "PASS", 51 "bool": "FALSE", 52 "milliseconds_4": "30", 53 "milliseconds_5": "50", 54 "ms_1": "2.23", 55 "total": "6", 56 }, 57 {"": "PASS", "test": "5"}, 58 {"": "PASS", "test": "4"}, 59 { 60 "": "PASS", 61 "bool": "FALSE", 62 "milliseconds_1": "3", 63 "milliseconds_6": "7", 64 "ms_1": "2.3", 65 "total": "7", 66 }, 67 {"": "PASS", "test": "2"}, 68 {"": "PASS", "test": "6"}, 69 ], 70 ], 71 "benchmark2": [ 72 [ 73 { 74 "": "PASS", 75 "bool": "TRUE", 76 "milliseconds_1": "3", 77 "milliseconds_8": "6", 78 "ms_1": "2.3", 79 "total": "7", 80 }, 81 {"": "PASS", "test": "2"}, 82 {"": "PASS", "test": "6"}, 83 { 84 "": "PASS", 85 "bool": "TRUE", 86 "milliseconds_1": "3", 87 "milliseconds_8": "6", 88 "ms_1": "2.2", 89 "total": "7", 90 }, 91 {"": "PASS", "test": "2"}, 92 {"": "PASS", "test": "2"}, 93 ], 94 [ 95 { 96 "": "PASS", 97 "bool": "TRUE", 98 "milliseconds_1": "3", 99 "milliseconds_8": "6", 100 "ms_1": "2", 101 "total": "7", 102 }, 103 {"": "PASS", "test": "2"}, 104 {"": "PASS", "test": "4"}, 105 { 106 "": "PASS", 107 "bool": "TRUE", 108 "milliseconds_1": "3", 109 "milliseconds_8": "6", 110 "ms_1": "1", 111 "total": "7", 112 }, 113 {"": "PASS", "test": "1"}, 114 {"": "PASS", "test": "6"}, 115 ], 116 ], 117} # yapf: disable 118 119 120class ResultOrganizerTest(unittest.TestCase): 121 """Test result organizer.""" 122 123 def testResultOrganizer(self): 124 labels = [mock_instance.label1, mock_instance.label2] 125 benchmarks = [mock_instance.benchmark1, mock_instance.benchmark2] 126 benchmark_runs = [None] * 8 127 benchmark_runs[0] = BenchmarkRun( 128 "b1", benchmarks[0], labels[0], 1, "", "", "", "average", "", {} 129 ) 130 benchmark_runs[1] = BenchmarkRun( 131 "b2", benchmarks[0], labels[0], 2, "", "", "", "average", "", {} 132 ) 133 benchmark_runs[2] = BenchmarkRun( 134 "b3", benchmarks[0], labels[1], 1, "", "", "", "average", "", {} 135 ) 136 benchmark_runs[3] = BenchmarkRun( 137 "b4", benchmarks[0], labels[1], 2, "", "", "", "average", "", {} 138 ) 139 benchmark_runs[4] = BenchmarkRun( 140 "b5", benchmarks[1], labels[0], 1, "", "", "", "average", "", {} 141 ) 142 benchmark_runs[5] = BenchmarkRun( 143 "b6", benchmarks[1], labels[0], 2, "", "", "", "average", "", {} 144 ) 145 benchmark_runs[6] = BenchmarkRun( 146 "b7", benchmarks[1], labels[1], 1, "", "", "", "average", "", {} 147 ) 148 benchmark_runs[7] = BenchmarkRun( 149 "b8", benchmarks[1], labels[1], 2, "", "", "", "average", "", {} 150 ) 151 152 i = 0 153 for b in benchmark_runs: 154 b.result = Result("", b.label, "average", "machine") 155 b.result.keyvals = mock_instance.keyval[i] 156 i += 1 157 158 organized = OrganizeResults(benchmark_runs, labels, benchmarks) 159 self.assertEqual(organized, result) 160 161 162if __name__ == "__main__": 163 unittest.main() 164