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