xref: /aosp_15_r20/external/toolchain-utils/crosperf/benchmark_unittest.py (revision 760c253c1ed00ce9abd48f8546f08516e57485fe)
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