Chromium Code Reviews| Index: tools/telemetry/telemetry/internal/platform/power_monitor/powermetrics_power_monitor.py |
| diff --git a/tools/telemetry/telemetry/internal/platform/power_monitor/powermetrics_power_monitor.py b/tools/telemetry/telemetry/internal/platform/power_monitor/powermetrics_power_monitor.py |
| index 77add66330f42475f1a2254dca14eadd847f2d7e..f43578c74712c046b6014e43b43db713101e500d 100644 |
| --- a/tools/telemetry/telemetry/internal/platform/power_monitor/powermetrics_power_monitor.py |
| +++ b/tools/telemetry/telemetry/internal/platform/power_monitor/powermetrics_power_monitor.py |
| @@ -88,7 +88,7 @@ class PowerMetricsPowerMonitor(power_monitor.PowerMonitor): |
| """ |
| if len(powermetrics_output) == 0: |
| logging.warning('powermetrics produced zero length output') |
| - return None |
| + return {} |
|
nednguyen
2015/11/05 18:36:43
Fix is this line.
|
| # Container to collect samples for running averages. |
| # out_path - list containing the key path in the output dictionary. |
| @@ -241,13 +241,17 @@ class PowerMetricsPowerMonitor(power_monitor.PowerMonitor): |
| def _KillPowerMetricsProcess(self): |
| """Kill a running powermetrics process.""" |
| try: |
| - self._powermetrics_process.terminate() |
| - except OSError: |
| - # terminate() can fail when Powermetrics does not have the SetUID set. |
| - self._backend.LaunchApplication( |
| - '/usr/bin/pkill', |
| - ['-SIGTERM', os.path.basename(self.binary_path)], |
| - elevate_privilege=True) |
| + if self._powermetrics_process.poll() is None: |
| + self._powermetrics_process.terminate() |
| + except OSError as e: |
| + logging.warning( |
| + 'Error when trying to terminate powermetric process: %s', repr(e)) |
| + if self._powermetrics_process.poll() is None: |
| + # terminate() can fail when Powermetrics does not have the SetUID set. |
| + self._backend.LaunchApplication( |
| + '/usr/bin/pkill', |
| + ['-SIGTERM', os.path.basename(self.binary_path)], |
| + elevate_privilege=True) |
| def StopMonitoringPower(self): |
| assert self._powermetrics_process, ( |
| @@ -267,7 +271,10 @@ class PowerMetricsPowerMonitor(power_monitor.PowerMonitor): |
| powermetrics_output = output_file.read() |
| return PowerMetricsPowerMonitor.ParsePowerMetricsOutput( |
| powermetrics_output) |
| - |
| + except Exception as e: |
| + logging.warning( |
| + 'Error when trying to collect power monitoring data: %s', repr(e)) |
| + return PowerMetricsPowerMonitor.ParsePowerMetricsOutput('') |
| finally: |
| shutil.rmtree(self._output_directory) |
| self._output_directory = None |