xref: /aosp_15_r20/external/autotest/server/cros/telemetry_runner_unittest.py (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
1*9c5db199SXin Li#!/usr/bin/python3
2*9c5db199SXin Li# Copyright 2019 The Chromium OS Authors. All rights reserved.
3*9c5db199SXin Li# Use of this source code is governed by a BSD-style license that can be
4*9c5db199SXin Li# found in the LICENSE file.
5*9c5db199SXin Li
6*9c5db199SXin Liimport json
7*9c5db199SXin Liimport unittest
8*9c5db199SXin Li
9*9c5db199SXin Liimport common
10*9c5db199SXin Lifrom autotest_lib.server.cros import telemetry_runner
11*9c5db199SXin Li
12*9c5db199SXin Lihistograms_sample = [
13*9c5db199SXin Li    {
14*9c5db199SXin Li        'values': [
15*9c5db199SXin Li            'story1'
16*9c5db199SXin Li        ],
17*9c5db199SXin Li        'guid': '00000001-...',
18*9c5db199SXin Li        'type': 'GenericSet'
19*9c5db199SXin Li    },
20*9c5db199SXin Li    {
21*9c5db199SXin Li        'values': [
22*9c5db199SXin Li            'story2'
23*9c5db199SXin Li        ],
24*9c5db199SXin Li        'guid': '00000002-...',
25*9c5db199SXin Li        'type': 'GenericSet'
26*9c5db199SXin Li    },
27*9c5db199SXin Li    {
28*9c5db199SXin Li        'values': [
29*9c5db199SXin Li            'benchmark1'
30*9c5db199SXin Li        ],
31*9c5db199SXin Li        'guid': 'a0000001-...',
32*9c5db199SXin Li        'type': 'GenericSet'
33*9c5db199SXin Li    },
34*9c5db199SXin Li    {
35*9c5db199SXin Li        'values': [
36*9c5db199SXin Li            'benchmark_desc1'
37*9c5db199SXin Li        ],
38*9c5db199SXin Li        'guid': 'b0000001-...',
39*9c5db199SXin Li        'type': 'GenericSet'
40*9c5db199SXin Li    },
41*9c5db199SXin Li    {
42*9c5db199SXin Li        'sampleValues': [1.0, 2.0],
43*9c5db199SXin Li        'name': 'metric1',
44*9c5db199SXin Li        'diagnostics': {
45*9c5db199SXin Li            'stories': '00000001-...',
46*9c5db199SXin Li            'benchmarks': 'a0000001-...',
47*9c5db199SXin Li            'benchmarkDescriptions': 'b0000001-...'
48*9c5db199SXin Li        },
49*9c5db199SXin Li        'unit': 'ms_smallerIsBetter'
50*9c5db199SXin Li    },
51*9c5db199SXin Li    {
52*9c5db199SXin Li        'sampleValues': [1.0, 2.0],
53*9c5db199SXin Li        'name': 'metric1',
54*9c5db199SXin Li        'diagnostics': {
55*9c5db199SXin Li            'stories': '00000002-...',
56*9c5db199SXin Li            'benchmarks': 'a0000001-...',
57*9c5db199SXin Li            'benchmarkDescriptions': 'b0000001-...'
58*9c5db199SXin Li        },
59*9c5db199SXin Li        'unit': 'ms_smallerIsBetter'
60*9c5db199SXin Li    }
61*9c5db199SXin Li]
62*9c5db199SXin Li
63*9c5db199SXin Lichartjson_sample = {
64*9c5db199SXin Li    'format_version': 1.0,
65*9c5db199SXin Li    'benchmark_name': 'benchmark1',
66*9c5db199SXin Li    'benchmark_description': 'benchmark_desc1',
67*9c5db199SXin Li    'benchmark_metadata': {
68*9c5db199SXin Li        'type': 'telemetry_benchmark',
69*9c5db199SXin Li        'name': 'benchmark1',
70*9c5db199SXin Li        'description': 'benchmark_desc1'
71*9c5db199SXin Li    },
72*9c5db199SXin Li    'charts': {
73*9c5db199SXin Li        'metric1': {
74*9c5db199SXin Li            'story1': {
75*9c5db199SXin Li                'std': 0.5,
76*9c5db199SXin Li                'name': 'metric1',
77*9c5db199SXin Li                'type': 'list_of_scalar_values',
78*9c5db199SXin Li                'values': [1.0, 2.0],
79*9c5db199SXin Li                'units': 'ms',
80*9c5db199SXin Li                'improvement_direction': 'down'
81*9c5db199SXin Li            },
82*9c5db199SXin Li            'story2': {
83*9c5db199SXin Li                'std': 0.5,
84*9c5db199SXin Li                'name': 'metric1',
85*9c5db199SXin Li                'type': 'list_of_scalar_values',
86*9c5db199SXin Li                'values': [1.0, 2.0],
87*9c5db199SXin Li                'units': 'ms',
88*9c5db199SXin Li                'improvement_direction': 'down'
89*9c5db199SXin Li            },
90*9c5db199SXin Li            'summary': {
91*9c5db199SXin Li                'std': 0.5,
92*9c5db199SXin Li                'name': 'metric1',
93*9c5db199SXin Li                'type': 'list_of_scalar_values',
94*9c5db199SXin Li                'values': [1.0, 1.0, 2.0, 2.0],
95*9c5db199SXin Li                'units': 'ms',
96*9c5db199SXin Li                'improvement_direction': 'down'
97*9c5db199SXin Li            }
98*9c5db199SXin Li        },
99*9c5db199SXin Li    }
100*9c5db199SXin Li}
101*9c5db199SXin Li
102*9c5db199SXin Liclass TelemetryRunnerTestCase(unittest.TestCase):
103*9c5db199SXin Li    """Test telemetry runner module."""
104*9c5db199SXin Li
105*9c5db199SXin Li    def test_convert_chart_json(self):
106*9c5db199SXin Li        # Deep comparison of 2 objects with json dumps.
107*9c5db199SXin Li        converted = telemetry_runner.TelemetryRunner.convert_chart_json(
108*9c5db199SXin Li            histograms_sample)
109*9c5db199SXin Li        chartjson_dumps = json.dumps(chartjson_sample, sort_keys=True)
110*9c5db199SXin Li        chartjson_dumps2 = json.dumps(converted, sort_keys=True)
111*9c5db199SXin Li        self.assertEqual(chartjson_dumps, chartjson_dumps2)
112*9c5db199SXin Li
113*9c5db199SXin Liif __name__ == '__main__':
114*9c5db199SXin Li  unittest.main()
115