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 |