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

Unified Diff: tools/telemetry/telemetry/internal/platform/profiler/monsoon_profiler.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/profiler/monsoon_profiler.py
diff --git a/tools/telemetry/telemetry/internal/platform/profiler/monsoon_profiler.py b/tools/telemetry/telemetry/internal/platform/profiler/monsoon_profiler.py
deleted file mode 100644
index e8712e6642007fde2cf93fdb8be5b21c275775a1..0000000000000000000000000000000000000000
--- a/tools/telemetry/telemetry/internal/platform/profiler/monsoon_profiler.py
+++ /dev/null
@@ -1,97 +0,0 @@
-# Copyright 2013 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.
-
-"""Profiler using data collected from a Monsoon power meter.
-
-http://msoon.com/LabEquipment/PowerMonitor/
-Data collected is a namedtuple of (amps, volts), at 5000 samples/second.
-Output graph plots power in watts over time in seconds.
-"""
-
-import csv
-import multiprocessing
-
-from telemetry.core import exceptions
-from telemetry.internal.platform import profiler
-from telemetry.internal.platform.profiler import monsoon
-from telemetry.util import statistics
-
-
-def _CollectData(output_path, is_collecting):
- mon = monsoon.Monsoon(wait=False)
- # Note: Telemetry requires the device to be connected by USB, but that
- # puts it in charging mode. This increases the power consumption.
- mon.SetUsbPassthrough(1)
- # 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.)
- mon.SetVoltage(4.0)
-
- samples = []
- try:
- mon.StartDataCollection()
- # Do one CollectData() to make the Monsoon set up, which takes about
- # 0.3 seconds, and only signal that we've started after that.
- mon.CollectData()
- is_collecting.set()
- while is_collecting.is_set():
- samples += mon.CollectData()
- finally:
- mon.StopDataCollection()
-
- # Add x-axis labels.
- plot_data = [(i / 5000., sample.amps * sample.volts)
- for i, sample in enumerate(samples)]
-
- # Print data in csv.
- with open(output_path, 'w') as output_file:
- output_writer = csv.writer(output_file)
- output_writer.writerows(plot_data)
- output_file.flush()
-
- power_samples = [s.amps * s.volts for s in samples]
-
- print 'Monsoon profile power readings in watts:'
- print ' Total = %f' % statistics.TrapezoidalRule(power_samples, 1/5000.)
- print (' Average = %f' % statistics.ArithmeticMean(power_samples) +
- '+-%f' % statistics.StandardDeviation(power_samples))
- print ' Peak = %f' % max(power_samples)
- print ' Duration = %f' % (len(power_samples) / 5000.)
-
- print 'To view the Monsoon profile, run:'
- print (' echo "set datafile separator \',\'; plot \'%s\' with lines" | '
- 'gnuplot --persist' % output_path)
-
-
-class MonsoonProfiler(profiler.Profiler):
- def __init__(self, browser_backend, platform_backend, output_path, state):
- super(MonsoonProfiler, self).__init__(
- browser_backend, platform_backend, output_path, state)
- # We collect the data in a separate process, so we can continuously
- # read the samples from the USB port while running the test.
- self._is_collecting = multiprocessing.Event()
- self._collector = multiprocessing.Process(
- target=_CollectData, args=(output_path, self._is_collecting))
- self._collector.start()
- if not self._is_collecting.wait(timeout=0.5):
- self._collector.terminate()
- raise exceptions.ProfilingException('Failed to start data collection.')
-
- @classmethod
- def name(cls):
- return 'monsoon'
-
- @classmethod
- def is_supported(cls, browser_type):
- try:
- monsoon.Monsoon(wait=False)
- except EnvironmentError:
- return False
- else:
- return True
-
- def CollectProfile(self):
- self._is_collecting.clear()
- self._collector.join()
- return [self._output_path]

Powered by Google App Engine
This is Rietveld 408576698