| Puthikorn Voravootivat | 5b39e1d | 2017-12-08 15:21:53 -0800 | [diff] [blame] | 1 | # 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 | |
| 5 | from autotest_lib.client.cros.power import power_dashboard |
| 6 | |
| 7 | class ServerTestDashboard(power_dashboard.BaseDashboard): |
| 8 | """Dashboard class for autotests that run on server side. |
| 9 | """ |
| 10 | |
| Puthikorn Voravootivat | 798dcf2 | 2018-05-08 15:23:18 -0700 | [diff] [blame] | 11 | def __init__(self, logger, testname, host, resultsdir=None, uploadurl=None, |
| 12 | note=''): |
| Puthikorn Voravootivat | 5b39e1d | 2017-12-08 15:21:53 -0800 | [diff] [blame] | 13 | """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 Voravootivat | 798dcf2 | 2018-05-08 15:23:18 -0700 | [diff] [blame] | 22 | note: note for current test run |
| Puthikorn Voravootivat | 5b39e1d | 2017-12-08 15:21:53 -0800 | [diff] [blame] | 23 | """ |
| 24 | |
| 25 | self._host = host |
| Puthikorn Voravootivat | 798dcf2 | 2018-05-08 15:23:18 -0700 | [diff] [blame] | 26 | self._note = note |
| Puthikorn Voravootivat | 5b39e1d | 2017-12-08 15:21:53 -0800 | [diff] [blame] | 27 | 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 Voravootivat | 798dcf2 | 2018-05-08 15:23:18 -0700 | [diff] [blame] | 60 | 'note': self._note, |
| Puthikorn Voravootivat | 5b39e1d | 2017-12-08 15:21:53 -0800 | [diff] [blame] | 61 | } |
| 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 Guo | 8c14148 | 2018-02-23 17:48:51 -0800 | [diff] [blame] | 72 | class PowerTelemetryLoggerDashboard(ServerTestDashboard): |
| 73 | """Dashboard class for power_telemetry_logger.PowerTelemetryLogger class. |
| 74 | """ |
| 75 | |
| Puthikorn Voravootivat | 798dcf2 | 2018-05-08 15:23:18 -0700 | [diff] [blame] | 76 | def __init__(self, logger, testname, host, resultsdir=None, uploadurl=None, |
| 77 | note=''): |
| Mengqi Guo | 8c14148 | 2018-02-23 17:48:51 -0800 | [diff] [blame] | 78 | if uploadurl is None: |
| 79 | uploadurl = 'http://chrome-power.appspot.com' |
| 80 | super(PowerTelemetryLoggerDashboard, self).__init__( |
| Puthikorn Voravootivat | 798dcf2 | 2018-05-08 15:23:18 -0700 | [diff] [blame] | 81 | logger, testname, host, resultsdir, uploadurl, note) |
| Mengqi Guo | 8c14148 | 2018-02-23 17:48:51 -0800 | [diff] [blame] | 82 | |
| 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 Guo | 8c14148 | 2018-02-23 17:48:51 -0800 | [diff] [blame] | 90 | return self._logger |