1
0
mirror of https://github.com/ARM-software/devlib.git synced 2025-09-07 20:41:55 +01:00
Commit Graph

328 Commits

Author SHA1 Message Date
Sergei Trofimov
9192deb8ee InstrumentChannel: name is now an alias for label
In addition to a label constructed form the combination of site and
measurment type, channels had a name that was specified on creation.
This proven to be not particularly useful (there only being one instance
of the name being set to something materially different from the label);
and this has lead to channels being inconsistenly referenced (some times
a channel is identified by its label, and sometimes by the name).

This commit removes the name from __init__ arguments, and
InstrumentChannel.name is now an alias for InstrumentChannel.label.
2017-09-19 13:34:43 +01:00
Sergei Trofimov
823ce718bf instrument: add get_raw() API
Derived metrics may be calculated form data in raw output that is not
present in the resulting MeasurementCSV. This adds a method to provide
uniform access to raw artifacts generated by an instrument.
2017-09-19 13:34:42 +01:00
Sergei Trofimov
2afa8f86a4 insturment: add catergory for time + doc fix
- Add a category name for time MeasurmentType's, as there are now
  multiple.
- Fix the names of time_ms and time_us in the documentation.
2017-09-19 13:34:42 +01:00
Sergei Trofimov
15333eb09c utils/misc: update CPU_PART_MAP with Mongoose
Add Samsung's Mongoose M1 core part identifiers to the map.
2017-09-19 13:34:42 +01:00
Sergei Trofimov
dfd0b8ebd9 MeasurementsCsv: rename itermeasurments
Renamed to iter_measurments for readability.
2017-09-19 13:34:42 +01:00
Sergei Trofimov
ff366b3fd9 derived: renamed derived_measurments --> energy
Renamed to reduce redandancy in import path.
2017-09-19 13:34:42 +01:00
Brendan Jackman
1513db0951 instrument: Clear up Instrument.reset semantics
- Fix missing parameter in the documentation

- Clarify meaning of `sites` and `kinds` in the documentation.

- With the current implementation the `channels` argument is
  useless: if `sites` and `kinds` are not also specified then all
  channels are enabled anyway. Fix that by making those parameters
  ignored when `channels` is provided.
2017-09-13 15:01:41 +01:00
Sergei Trofimov
90040e8b58 utils/android: grant_app_permissions fix.
Handle the case where an app does not specify any permissions.
2017-09-13 14:03:59 +01:00
Valentin Schneider
24d5630e54 utils/android: Add grant_app_permissions
This is mostly useful to avoid having to manually click/tap
on the permission requests that may pop up when opening apps,
which would ruin automation
2017-09-13 12:13:31 +01:00
Valentin Schneider
6bda0934ad utils/android: LogcatMonitor fixes
host.kill_children() is used to properly kill the logcat process
when it is IO blocked.

The logcat regexp argument is now within double quotes, as having
parenthesis within the regexp could break the command.

LogcatMonitor.search() has been renamed to wait_for() to make the
behaviour of the method more explicit. A non-blocking version of
this method has been added and is named search().
2017-09-12 17:21:31 +01:00
Valentin Schneider
4de973483e host: Add kill_children utility method
This method is useful for killing the children spawned by
Popen() calls with shell=True. For instance:

proc = Popen('sleep 100', shell=True)
proc.kill()

This would spawn a shell task and that shell would spawn the sleep task.
Issuing a kill to the Popen handle will only kill the shell task,
and the sleep task will keep running.

Using host.kill_children(proc.pid) will ensure all child tasks are
killed.
2017-09-12 15:14:23 +01:00
Valentin Schneider
0d3a0223b3 trace: Add logcat trace collector 2017-09-11 17:53:09 +01:00
Valentin Schneider
7c2fd87a3b target: Add LogcatMonitor getter for android target 2017-09-11 17:15:04 +01:00
Valentin Schneider
035181a8f1 utils/android: Add LogcatMonitor 2017-09-11 17:12:11 +01:00
setrofim
f5a00140e4 Merge pull request #161 from qperret/gem5/stats/match-regex
module/gem5stats: enhance match() with regex support
2017-08-23 17:27:46 +01:00
Quentin Perret
34d73e6af1 utils/gem5: try to cast statistics dump values
All values in the gem5 statistics log file are numeric. This commit adds a
cast on the strings read from the stats file to native numeric values when
and logs a warning in case of a malformed entry.
2017-08-22 16:16:09 +01:00
Quentin Perret
4b36439de8 module/cgroups: robustify task freezer
The set() method of the CGroup class used to freeze tasks relies on
target's write_value(). Sometimes, the freezing procedure takes some
time and the call to write_value() in set() fails by reading "FREEZING"
while it expected "FROZEN". To avoid this issue, this commits introduces
a shutil call dedicated to changing the state of the freezer controller.
2017-08-21 18:16:10 +01:00
Quentin Perret
3c8294c6eb module/gem5stats: better document match() and match_iter() behaviours 2017-08-21 11:12:11 +01:00
Quentin Perret
64c865de59 module: gem5stats: enhance match() with regex support
The current implementation of match() in the gem5stats module returns
records matching exactly the specified keys. This commit changes this
behaviour by matching keys over regular expressions, hence resulting in
a much more powerful match() implementation.
2017-08-21 11:12:11 +01:00
setrofim
66a50a2f49 Merge pull request #163 from marcbonnici/Derived_Measurements
Add support for AcmeCape and Derived Measurements
2017-08-21 08:46:43 +01:00
Marc Bonnici
c093d56754 DerivedMeasurements: Add DerivedEnergyMeasurments
Adds `DerivedMeasurements` which are designed to perform post processing on
a provided MeasurementCsv.
Currently only a `DerivedEnergyMeasurements` class has been added which
has 2 purposes:
- Calculate energy from power results if not present using recorded timestamps,
  falling back to a provided sample rate
- Calculate cumulative energy and average power from a specified MeasurementCSV
  file.
2017-08-18 18:02:48 +01:00
Marc Bonnici
049b275665 Instrumentation: Update to store sample rate in MeasurementCSV file.
This commit updates existing instruments to store their sample rates
when creating the respective MeasurementCsv files.
2017-08-18 18:02:48 +01:00
Marc Bonnici
411719d58d Instrument/gem5power: Rename timestamp channel to match new API
To conform with the new DerivedMeasuements API the "sim_seconds" channel
has been renamed to "timestamp" so that it can be identified in post
processing. As "sim_seconds" needs to be extracted from the gem5
statistics file, an addional mapping has been added to support this.
2017-08-18 18:02:48 +01:00
Marc Bonnici
7dd934a5d8 Instrumentation: Update to populate missing 'sample_rate_hz` attributes
To conform with the Instrumentation API each instrument should populate
the `sample_rate_hz` attribute with the relevant information.
2017-08-18 17:10:17 +01:00
Marc Bonnici
30fdfc23d3 Instrument/Acmecape: Add support for acmecape 2017-08-18 13:33:49 +01:00
Marc Bonnici
d3c3015fc8 Instrument/MeasurementCSV: Add support for recording sample rate.
If performing post processing on a MeasurementCsv file, if a timestamp
is not available then the recorded sample rate can be used as a
substitute.
2017-08-18 13:32:23 +01:00
Marc Bonnici
5ef99f2cff Instrument/MeasurementType: Allow for converting to the same type
When trying to convert measurments to a standarised type some inputs
may already be of the correct type and will now return the same value
unchanged.
2017-08-18 13:32:19 +01:00
Marc Bonnici
9b465c2766 Instruments: Add millisecond MeasurementType and conversion
Allows for reporting times in milliseconds as used with the acmecape
instrument.
2017-08-18 13:32:16 +01:00
Marc Bonnici
2de2b36387 Instrumentation: Fix conversion between microseconds and seconds 2017-08-18 13:32:10 +01:00
marcbonnici
210712b384 Merge pull request #162 from setrofim/numeric-pcent
utils/types: numeric expeanded to handle percentages
2017-08-17 11:17:56 +01:00
setrofim
2a0d110012 Merge pull request #157 from marcbonnici/airplane/brightness
Adds additional Android methods
2017-08-17 10:59:27 +01:00
Sergei Trofimov
3d10e3eae9 utils/types: numeric expeanded to handle percentages
numeric() conversion function is expanded to handle percentage values in
the form "10.123%". The result is the numeric part converted to a float
and divided by 100, e.g. 0.10123.
2017-08-16 16:00:38 +01:00
setrofim
4d95656e49 Merge pull request #160 from qperret/gem5/stats/async-origin
module/gem5stats: enable asynchronous origins in gem5 stats file
2017-08-16 13:39:31 +01:00
Quentin Perret
38258eb74c module: gem5stats: enable asynchronous origins in gem5 stats file
Currently, reset_origin() in the gem5stats module enables to virtually
truncate the existing dumps from the gem5 statistics file so that any
subsequent match() calls will apply only on new dumps. However, the
current implementation resets the origin of the stats file unilaterally,
without other clients knowing about it, hence leading to data being
lost.

This commits removes the reset_origin() method and provides a different
API to handle virtual truncatures in the stats file. Namely, the match()
method now takes a base_dump parameter letting clients specifiying from
which dump they want match() to apply. This feature could also be usefull
if someone wanted to add off-line processing features for statistics
files.
2017-08-16 10:40:10 +01:00
Marc Bonnici
8839ed01ba AndroidTarget: Changes default unlocking method
Instead of using a default 'horizontal' unlocking method, now will try
a diagonal swipe up as this should work most modern devices with vertical or
horizontal unlocking methods.
2017-08-14 09:55:21 +01:00
Marc Bonnici
1229af0895 AndroidTarget: Fixes 'swipe_to_unlock' method. 2017-08-11 14:22:28 +01:00
Marc Bonnici
003785dde1 AndroidTarget: Adds methods to get/set screen rotation 2017-08-10 11:21:04 +01:00
Marc Bonnici
3e751746d6 AndroidTarget: Adds methods to get/set airplane mode
In order to change the state of airplane mode, the setting needs to
be configured before broadcasting an intent to update the system. As of
Android N, root is required to send the broadcast, therefore this method
will raise an error if the requirements are not satisfied.
2017-08-10 11:21:03 +01:00
Marc Bonnici
ddd2e29b87 AndroidTarget: Adds methods to get/set screen brightness 2017-08-10 11:21:03 +01:00
Brendan Jackman
380ad0515d ssh: Improve error when failing to push file
CalledProcessError doesn't include the output of the failed command
in the message it prints, so use a HostError isntead.
2017-08-09 16:01:49 +01:00
Brendan Jackman
93b39a7f47 ssh: Fix redacting SSH password in errors
IIUC this is supposed to redact the password from exception messages,
but 'pass_string' is not set to the password so nothing is
altered. Fix that.
2017-08-09 16:01:49 +01:00
setrofim
1da8d3f95f Merge pull request #151 from AnthonyARM/master
Add support for arbitrary ADB servers
2017-07-31 15:51:15 +01:00
Ionela Voinescu
d25beb5c8b gem5stats: fix missing import for TargetError
Signed-off-by: Ionela Voinescu <ionela.voinescu@arm.com>
2017-07-27 11:07:05 +01:00
Sergei Trofimov
63e60401d5 module/cpufreq: rename get_domain_cpus
Rename get_domain_cpus to get_related_cpus to match cpufreq nomenclature.
2017-07-26 14:23:34 +01:00
Sergei Trofimov
e206e9b24a module/cpufreq: fix get_affected_cpus docstring
The docstring was duplicated from get_domain_cpus. This updates the
docstring to reflect the difference from get_domain_cpus.
2017-07-26 14:23:34 +01:00
Sergei Trofimov
36aa3af66d module/cpufreq: fix domain cpus.
- Use related_cpus rather than affected_cpus inside get_domain_cpus to
  return all cpus in the domain (including those online). This changes
  the behavior, but old behavior was almost certainly wrong as the
  method is memoized, and so the result should not be affected by
  hotplug.
- Add a non-memoized get_affected_cpus() which implements the old
  behavior.
2017-07-26 14:02:59 +01:00
Anthony Barbier
b392a0a1b4 Use related_cpus instead of affected_cpus
related_cpus doesn't rely on the related cores to be online to work cf https://www.kernel.org/doc/Documentation/cpu-freq/user-guide.txt
2017-07-26 14:00:38 +01:00
Valentin Schneider
b54dc19b81 devlib/module/thermal: Fix thermal zone disabling
Calling thermal.disable_all_zones() would raise an exception.
I've changed a few things:
* use self.zones.itervalues() in disable_all_zones to fix that exception
* renamed zone.set_mode() to zone.set_enabled()
2017-07-26 11:39:49 +01:00
Anthony Barbier
7919a5643c Add support for arbitrary ADB servers 2017-07-25 13:48:33 +01:00
Marc Bonnici
02c93b48ab ABI_MAP: Adds 'armeabi-v7a' to mapping 2017-07-20 14:24:07 +01:00