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