Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(71)

Unified Diff: tools/telemetry/telemetry/internal/platform/power_monitor/powermetrics_power_monitor.py

Issue 1431023002: [Telemetry] Check whether powermetrics service has already terminated and fail gracefully (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698