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

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

Issue 1647513002: Delete tools/telemetry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months 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/monsoon_power_monitor.py
diff --git a/tools/telemetry/telemetry/internal/platform/power_monitor/monsoon_power_monitor.py b/tools/telemetry/telemetry/internal/platform/power_monitor/monsoon_power_monitor.py
deleted file mode 100644
index abbd9f4de158b0d1ce5e19b0c30fa6dd6b442f82..0000000000000000000000000000000000000000
--- a/tools/telemetry/telemetry/internal/platform/power_monitor/monsoon_power_monitor.py
+++ /dev/null
@@ -1,120 +0,0 @@
-# Copyright 2014 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import json
-import logging
-import multiprocessing
-import tempfile
-import time
-
-from telemetry.core import exceptions
-from telemetry.internal.platform.power_monitor import android_power_monitor_base
-from telemetry.internal.platform.profiler import monsoon
-
-
-def _MonitorPower(device, is_collecting, output):
- """Monitoring process
- Args:
- device: A profiler.monsoon object to collect samples from.
- is_collecting: the event to synchronize on.
- output: opened file to write the samples.
- """
- with output:
- samples = []
- start_time = None
- end_time = None
- try:
- device.StartDataCollection()
- is_collecting.set()
- # First sample also calibrate the computation.
- device.CollectData()
- start_time = time.time()
- while is_collecting.is_set():
- new_data = device.CollectData()
- assert new_data, 'Unable to collect data from device'
- samples += new_data
- end_time = time.time()
- finally:
- device.StopDataCollection()
- result = {
- 'duration_s': end_time - start_time,
- 'samples': samples
- }
- json.dump(result, output)
-
-
-class MonsoonPowerMonitor(android_power_monitor_base.AndroidPowerMonitorBase):
- def __init__(self, _, platform_backend):
- super(MonsoonPowerMonitor, self).__init__()
- self._powermonitor_process = None
- self._powermonitor_output_file = None
- self._is_collecting = None
- self._monsoon = None
- self._platform = platform_backend
- try:
- self._monsoon = monsoon.Monsoon(wait=False)
- # Nominal Li-ion voltage is 3.7V, but it puts out 4.2V at max capacity.
- # Use 4.0V to simulate a "~80%" charged battery. Google "li-ion voltage
- # curve". This is true only for a single cell. (Most smartphones, some
- # tablets.)
- self._monsoon.SetVoltage(4.0)
- except EnvironmentError:
- self._monsoon = None
-
- def CanMonitorPower(self):
- return self._monsoon is not None
-
- def StartMonitoringPower(self, browser):
- self._CheckStart()
- self._powermonitor_output_file = tempfile.TemporaryFile()
- self._is_collecting = multiprocessing.Event()
- self._powermonitor_process = multiprocessing.Process(
- target=_MonitorPower,
- args=(self._monsoon,
- self._is_collecting,
- self._powermonitor_output_file))
- # Ensure child is not left behind: parent kills daemonic children on exit.
- self._powermonitor_process.daemon = True
- self._powermonitor_process.start()
- if not self._is_collecting.wait(timeout=0.5):
- self._powermonitor_process.terminate()
- raise exceptions.ProfilingException('Failed to start data collection.')
-
- def StopMonitoringPower(self):
- self._CheckStop()
- try:
- # Tell powermonitor to take an immediate sample and join.
- self._is_collecting.clear()
- self._powermonitor_process.join()
- with self._powermonitor_output_file:
- self._powermonitor_output_file.seek(0)
- powermonitor_output = self._powermonitor_output_file.read()
- assert powermonitor_output, 'PowerMonitor produced no output'
- return MonsoonPowerMonitor.ParseSamplingOutput(powermonitor_output)
- finally:
- self._powermonitor_output_file = None
- self._powermonitor_process = None
- self._is_collecting = None
-
- @staticmethod
- def ParseSamplingOutput(powermonitor_output):
- """Parse the output of of the samples collector process.
-
- Returns:
- Dictionary in the format returned by StopMonitoringPower().
- """
- result = json.loads(powermonitor_output)
- if result['samples']:
- timedelta_h = (result['duration_s'] / len(result['samples'])) / 3600.0
- power_samples = [current_a * voltage_v * 10**3
- for (current_a, voltage_v) in result['samples']]
- total_energy_consumption_mwh = sum(power_samples) * timedelta_h
- else:
- logging.warning('Sample information not available.')
- power_samples = []
- total_energy_consumption_mwh = 0
-
- return {'identifier':'monsoon',
- 'power_samples_mw':power_samples,
- 'monsoon_energy_consumption_mwh':total_energy_consumption_mwh}

Powered by Google App Engine
This is Rietveld 408576698