1*760c253cSXin Li#!/usr/bin/env python3 2*760c253cSXin Li# -*- coding: utf-8 -*- 3*760c253cSXin Li# 4*760c253cSXin Li# Copyright 2014 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"""Unit tests for the Crosperf Benchmark class.""" 9*760c253cSXin Li 10*760c253cSXin Li 11*760c253cSXin Liimport inspect 12*760c253cSXin Liimport unittest 13*760c253cSXin Li 14*760c253cSXin Lifrom benchmark import Benchmark 15*760c253cSXin Li 16*760c253cSXin Li 17*760c253cSXin Liclass BenchmarkTestCase(unittest.TestCase): 18*760c253cSXin Li """Individual tests for the Benchmark class.""" 19*760c253cSXin Li 20*760c253cSXin Li def test_benchmark(self): 21*760c253cSXin Li # Test creating a benchmark with all the fields filled out. 22*760c253cSXin Li b1 = Benchmark( 23*760c253cSXin Li "b1_test", # name 24*760c253cSXin Li "octane", # test_name 25*760c253cSXin Li "", # test_args 26*760c253cSXin Li 3, # iterations 27*760c253cSXin Li False, # rm_chroot_tmp 28*760c253cSXin Li "record -e cycles", # perf_args 29*760c253cSXin Li "telemetry_Crosperf", # suite 30*760c253cSXin Li True, 31*760c253cSXin Li ) # show_all_results 32*760c253cSXin Li self.assertTrue(b1.suite, "telemetry_Crosperf") 33*760c253cSXin Li 34*760c253cSXin Li # Test creating a benchmark field with default fields left out. 35*760c253cSXin Li b2 = Benchmark( 36*760c253cSXin Li "b2_test", # name 37*760c253cSXin Li "octane", # test_name 38*760c253cSXin Li "", # test_args 39*760c253cSXin Li 3, # iterations 40*760c253cSXin Li False, # rm_chroot_tmp 41*760c253cSXin Li "record -e cycles", 42*760c253cSXin Li ) # perf_args 43*760c253cSXin Li self.assertEqual(b2.suite, "") 44*760c253cSXin Li self.assertFalse(b2.show_all_results) 45*760c253cSXin Li 46*760c253cSXin Li # Test explicitly creating 'suite=Telemetry' and 'show_all_results=False" 47*760c253cSXin Li # and see what happens. 48*760c253cSXin Li b3 = Benchmark( 49*760c253cSXin Li "b3_test", # name 50*760c253cSXin Li "octane", # test_name 51*760c253cSXin Li "", # test_args 52*760c253cSXin Li 3, # iterations 53*760c253cSXin Li False, # rm_chroot_tmp 54*760c253cSXin Li "record -e cycles", # perf_args 55*760c253cSXin Li "telemetry", # suite 56*760c253cSXin Li False, 57*760c253cSXin Li ) # show_all_results 58*760c253cSXin Li self.assertTrue(b3.show_all_results) 59*760c253cSXin Li 60*760c253cSXin Li # Check to see if the args to Benchmark have changed since the last time 61*760c253cSXin Li # this test was updated. 62*760c253cSXin Li args_list = [ 63*760c253cSXin Li "self", 64*760c253cSXin Li "name", 65*760c253cSXin Li "test_name", 66*760c253cSXin Li "test_args", 67*760c253cSXin Li "iterations", 68*760c253cSXin Li "rm_chroot_tmp", 69*760c253cSXin Li "perf_args", 70*760c253cSXin Li "suite", 71*760c253cSXin Li "show_all_results", 72*760c253cSXin Li "retries", 73*760c253cSXin Li "run_local", 74*760c253cSXin Li "cwp_dso", 75*760c253cSXin Li "weight", 76*760c253cSXin Li ] 77*760c253cSXin Li arg_spec = inspect.getfullargspec(Benchmark.__init__) 78*760c253cSXin Li self.assertEqual(len(arg_spec.args), len(args_list)) 79*760c253cSXin Li for arg in args_list: 80*760c253cSXin Li self.assertIn(arg, arg_spec.args) 81*760c253cSXin Li 82*760c253cSXin Li 83*760c253cSXin Liif __name__ == "__main__": 84*760c253cSXin Li unittest.main() 85