blob: b640aa923c9c411c7dea8a38d2417c7953239123 [file] [log] [blame]
Puthikorn Voravootivat5b39e1d2017-12-08 15:21:53 -08001# Copyright (c) 2017 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5from autotest_lib.client.cros.power import power_dashboard
6
7class ServerTestDashboard(power_dashboard.BaseDashboard):
8 """Dashboard class for autotests that run on server side.
9 """
10
Puthikorn Voravootivat798dcf22018-05-08 15:23:18 -070011 def __init__(self, logger, testname, host, resultsdir=None, uploadurl=None,
12 note=''):
Puthikorn Voravootivat5b39e1d2017-12-08 15:21:53 -080013 """Create ServerTestDashboard objects.
14
15 Args:
16 logger: object that store the log. This will get convert to
17 dictionary by self._convert()
18 testname: name of current test
19 resultsdir: directory to save the power json
20 uploadurl: url to upload power data
21 host: autotest_lib.server.hosts.cros_host.CrosHost object of DUT
Puthikorn Voravootivat798dcf22018-05-08 15:23:18 -070022 note: note for current test run
Puthikorn Voravootivat5b39e1d2017-12-08 15:21:53 -080023 """
24
25 self._host = host
Puthikorn Voravootivat798dcf22018-05-08 15:23:18 -070026 self._note = note
Puthikorn Voravootivat5b39e1d2017-12-08 15:21:53 -080027 super(ServerTestDashboard, self).__init__(logger, testname, resultsdir,
28 uploadurl)
29
30 def _create_dut_info_dict(self, power_rails):
31 """Create a dictionary that contain information of the DUT.
32
33 Args:
34 power_rails: list of measured power rails
35
36 Returns:
37 DUT info dictionary
38 """
39 dut_info_dict = {
40 'board': self._host.get_board().replace('board:', ''),
41 'version': {
42 'hw': self._host.get_hardware_revision(),
43 'milestone': self._host.get_chromeos_release_milestone(),
44 'os': self._host.get_release_version(),
45 'channel': self._host.get_channel(),
46 'firmware': self._host.get_firmware_version(),
47 'ec': self._host.get_ec_version(),
48 'kernel': self._host.get_kernel_version(),
49 },
50 'sku' : {
51 'cpu': self._host.get_cpu_name(),
52 'memory_size': self._host.get_mem_total_gb(),
53 'storage_size': self._host.get_disk_size_gb(),
54 'display_resolution': self._host.get_screen_resolution(),
55 },
56 'ina': {
57 'version': 0,
58 'ina': power_rails,
59 },
Puthikorn Voravootivat798dcf22018-05-08 15:23:18 -070060 'note': self._note,
Puthikorn Voravootivat5b39e1d2017-12-08 15:21:53 -080061 }
62
63 if self._host.has_battery():
64 # Round the battery size to nearest tenth because it is fluctuated
65 # for platform without battery nominal voltage data.
66 dut_info_dict['sku']['battery_size'] = round(
67 self._host.get_battery_size(), 1)
68 dut_info_dict['sku']['battery_shutdown_percent'] = \
69 self._host.get_low_battery_shutdown_percent()
70 return dut_info_dict
71
Mengqi Guo8c141482018-02-23 17:48:51 -080072class PowerTelemetryLoggerDashboard(ServerTestDashboard):
73 """Dashboard class for power_telemetry_logger.PowerTelemetryLogger class.
74 """
75
Puthikorn Voravootivat798dcf22018-05-08 15:23:18 -070076 def __init__(self, logger, testname, host, resultsdir=None, uploadurl=None,
77 note=''):
Mengqi Guo8c141482018-02-23 17:48:51 -080078 if uploadurl is None:
79 uploadurl = 'http://chrome-power.appspot.com'
80 super(PowerTelemetryLoggerDashboard, self).__init__(
Puthikorn Voravootivat798dcf22018-05-08 15:23:18 -070081 logger, testname, host, resultsdir, uploadurl, note)
Mengqi Guo8c141482018-02-23 17:48:51 -080082
83 def _convert(self):
84 """
85 self._logger is already in correct format, so just return it.
86
87 Returns:
88 raw measurement dictionary
89 """
Mengqi Guo8c141482018-02-23 17:48:51 -080090 return self._logger