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