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