1
0
mirror of https://github.com/ARM-software/workload-automation.git synced 2024-10-06 19:01:15 +01:00
Commit Graph

712 Commits

Author SHA1 Message Date
Sergei Trofimov
f33d6f4729 bbench: handle lack of results in logcat
- make sure results_list is always instatiated even if no metrics found;
  this would previously cause a "used before declaration" error
- Detect that no metrics were extracted from the log and raise a
  WorkloadError
2016-06-14 10:20:51 +01:00
Sebastian Goscik
a826b661f4 Version bump 2016-06-10 14:26:32 +01:00
Sebastian Goscik
23b3b165d5 docs: Change log & updates 2016-06-10 13:17:10 +01:00
Sebastian Goscik
2f87e126f0 apk_version: Removed instrument
APK versions are now added as result classifiers:
48259d872b
2016-06-09 13:55:27 +01:00
Sebastian Goscik
7b92f355c8 netstat: Changed exception type & typo fix 2016-06-08 11:13:35 +01:00
Sebastian Goscik
982069be32 servo_power: Added check for device platform.
Now checks to see if the device is running chromeOS.
2016-06-08 11:10:53 +01:00
Sebastian Goscik
f276d4e39f cpustates: Added the ability to configure how a missing start marker is handled.
cpustates can now handle the lack of a start marker in three ways:

 - try: If the start marker is present only the correct section of the trace
        will be used, if its not the whole trace will be used.
 - error: An error will be raised if the start marker is missing
 - ignore: The markers are ignored and the whole trace is always used.
2016-06-06 17:09:48 +01:00
Sebastian Goscik
1811a8b733 PowerStateProcessor: Added a warning when no stop marker is encountered
PowerStateProcessor will now stop itrerating over events when it finds
a stop marker. If it does not find a stop marker it will log a warning.
2016-06-06 17:03:56 +01:00
Sebastian Goscik
0ae03e2c54 PowerStateProcessor: Exceptions no longer stop processing
If an exception is raised inside a generator it cannot be continued.
To get around this exceptions are now caught and later output via the
logger.

Also added logger setup when running cpustates as a standalone script
2016-06-06 16:28:07 +01:00
Sebastian Goscik
c423a8b4bc Utils.misc: Added memoised function decorator
This allows the return value of a function to be cached so that
when it is called in the future the function does not need to
run.

Borrowed from: https://github.com/ARM-software/devlib
2016-06-06 16:28:07 +01:00
Sebastian Goscik
c207a34872 cpustates: Now shows a warning when it fails to nudge a core.
Before WA would raise a error message that wasn't very clear.
Now when cpustates tries to nudge cores and and error occurs it
will only show a warning (which promts users to check if the cpu is
hot plugged out) and keep going with the reset of the run without
causing errors in other WA extensions.
2016-06-02 15:14:03 +01:00
Sebastian Goscik
18d1f9f649 ReventWorkload: Now kills all revent instances on teardown
Previously revent would be left running if a run was aborted.
2016-06-01 16:47:01 +01:00
Sebastian Goscik
17ce8d0fe9 Revent: Device model name is now used when searching for revent files
Previously the WA device name was used when searching for revent files.
Since most were `generic_android` this made it difficult to keep revent
files for multiple android devices. Now it the device model is used instead.

If a file with the device model is not found it will fall back to the WA
device name.
2016-06-01 16:47:01 +01:00
Sebastian Goscik
8bdffe6f9c LinuxDevice: Removed has_root method
Was not used anywhere and is_rooted should be used instead
2016-06-01 14:13:37 +01:00
Sebastian Goscik
2ff13089fd LinuxDevice: kick_off & killall will now run as root on rooted devices by default
kick_off has been changed to behave the same as AndroidDevice.

Said changes caused kill all to fail on rooted devices. Killall will now
behave in the same way as kick_off, if specifically told to (or not to)
run as root it will. Otherwise it will run as root if the device is rooted
2016-06-01 13:50:59 +01:00
setrofim
772346507c Merge pull request #144 from ep1cman/servo
servo_power: Added support for chromebook servo boards
2016-05-27 16:16:49 +01:00
Sebastian Goscik
0fc88a84be servo_power: Added support for chromebook servo boards
Servo is a debug board used for Chromium OS test and development. Among other uses, it allows
access to the built in power monitors (if present) of a Chrome OS device. More information on
Servo board can be found in the link bellow:

 https://www.chromium.org/chromium-os/servo

based on: 03ede10739
and: 9a0dc55b55
2016-05-27 16:09:08 +01:00
setrofim
6e4f6af942 Merge pull request #164 from ep1cman/poller
Poller: Added an instrument to poll files and output a csv of their v…
2016-05-26 16:33:59 +01:00
Sebastian Goscik
c87daa510e Poller: Added an instrument to poll files and output a csv of their values 2016-05-26 16:32:58 +01:00
Sergei Trofimov
a9a42164a3 list_or_string: ensure that elements of a list are always strings 2016-05-26 16:05:43 +01:00
Sebastian Goscik
0d50fe9b77 AndroidDevice: kick-off no longer requires root
kick off will now use root if the device is rooted or if manually
specified otherwise its run without root.
2016-05-26 10:29:21 +01:00
Sebastian Goscik
7ccac87b93 cameracapture & camerarecord: Fixed parameters
Parameters were not being passed to the UI automation properly
2016-05-25 09:49:21 +01:00
setrofim
24a2afb5b9 Merge pull request #168 from ep1cman/vellamo-update
Vellamo update
2016-05-24 13:01:31 +01:00
Sebastian Goscik
9652801cce vellamo: Fixed geting values from logcat
The previous method of getting results out of logcat does not work
if the format of logcat changes.
2016-05-24 13:00:10 +01:00
Sebastian Goscik
17fe6c9a5b AndroidDevice: Improved gathering of build props
These are now gathered via `getprop` rather than trying to parse the
build.prop file directly.

This fixes issues with build.prop files that have imports.
2016-05-24 12:55:33 +01:00
Sebastian Goscik
f02b6d5fd9 vellamo: Added support for v3.2.4 2016-05-24 09:57:38 +01:00
Sebastian Goscik
eaf4d02aea Merge pull request #162 from chase-qi/add-blogbench-workload
workloads: add blogbench workload
2016-05-24 09:55:37 +01:00
Chase Qi
56a4d52995 workloads: add blogbench workload
Blogbench is a portable filesystem benchmark that tries to reproduce the
load of a real-world busy file server.

Signed-off-by: Chase Qi <chase.qi@linaro.org>
2016-05-24 16:49:19 +08:00
Sebastian Goscik
ec5c149df5 Merge pull request #165 from chase-qi/add-stress-ng-workload
workloads: add stress_ng workload
2016-05-24 09:45:35 +01:00
Sebastian Goscik
5a1c8c7a7e cameracapture & camerarecord: Updated workloads to work with Android M+
The stock camera app as of Android M has changed. This commit updates
the ui automation to work with this new app. As part of this change
it was required to bump the API level of the ui automation to 18.

Also made the teardown of the capture workload close the app like the
record workload.
2016-05-16 17:25:50 +01:00
Sebastian Goscik
46cd26e774 BaseUiAutomation: Added functions for checking version strings
Added splitVersion and compareVersions functions allow versions strings
like "3.2.045" to be compared.

Also fixed the build script to now copy to the correct folder
2016-05-16 17:22:09 +01:00
Sebastian Goscik
544c498eb6 UiAutomatorWorkload: Added quotes around uiautomator parameters
Some characters would be interpreted by the shell thus breaking the
command. Adding quotes around the parameters solved this.

N.B Space still needs to be replaced.
2016-05-16 16:19:57 +01:00
Chase Qi
5ad75dd0b8 workloads: add stress_ng workload
stress-ng will stress test a computer system in various selectable ways.
It was designed to exercise various physical subsystems of a computer as
well as the various operating system kernel interfaces.

Signed-off-by: Chase Qi <chase.qi@linaro.org>
2016-05-13 19:35:26 +08:00
setrofim
b2248413b7 Merge pull request #148 from ep1cman/master
cpustates: Fix for error when trying to use cpustates with hotplugged…
2016-05-13 11:35:45 +01:00
Sebastian Goscik
8abf39762d hwmon: Fixed sensor naming
Previously the sensor name was just appeneded to the end of the
previous sensors name.

Now the hwmon name is added as a classifier of the metric.
If the hwmon sensor has a label, the metric will use this for its name,
if it does not then the sensors kind and ID will be used e.g. temp3
2016-05-10 09:27:42 +01:00
Sebastian Goscik
87cbce4244 hwmon: Added allowed values to sensors parameter
Previously the sensor name was just appeneded to the end of the
previous sensors name.
2016-05-10 09:27:42 +01:00
Sebastian Goscik
ef61f16896 AndroidDevice: Fixed screen lock disable
Due to the previous commits, this command no longer works properly.

It turns out there is an issue with using multiple levels of escaping.
It seems that bash handles the backslashes and single quotes separately
incorrectly processing our escaping. To get around this we are writing the
sqlite command to a shell script file and running that.

This seems to be the only case in WA at the moment that requires this,
if more show up/when WA moves to devlib it should use the devlib shutil
mechanism.
2016-05-10 09:27:42 +01:00
Sebastian Goscik
e96450d226 adb_shell: Fixed getting return codes
They way we were attempting to get return codes before always gave
us a return code of the previous echo, therefore always `0`.

This commit adds the newline into the last echo.
2016-05-10 09:12:54 +01:00
Sebastian Goscik
59cfd7c757 AndroidDevice: WA now pushes its own sqlite3 binary
Some device have the sqlite3 binary removed. WA will now check for
this and push its own binary if necessary.
2016-05-09 17:31:09 +01:00
Sebastian Goscik
d3c7f11f2d AndroidDevice: Changed kick_off signature to match BaseLinuxExamples 2016-05-09 17:06:08 +01:00
Sergei Trofimov
fe7f98a98b report_power_stats: number of entries returned always matches number of reporters
Previously, only reports that were generated were returned. With this
commit, there will be an entry for each active reporter in the returned
list. If a reporter did not produce a valid report, the entry will be
None.

This ensures consistent output, even if a run time issue causes a
reporter not to produce a report  (e.g. if cpufreq events were not
enabled).
2016-05-09 10:20:25 +01:00
Sebastian Goscik
66c18fcd31 cpustates: Fix for error when trying to use cpustates with hotplugged cores
It is not possible to read frequencies from a core that has been hotplugged.
The code will now set the current and max frequencies of hotplugged cores
to None.

This still doesn't work for devices that have dynamic hotplug enabled
2016-05-06 15:00:32 +01:00
Sergei Trofimov
d581f1f329 sysfile_getter/cpufreq: fix taball name
Commit 724f6e590e changed sysfile_getter
behavior to first tar up copied files and then gzip them. Tarball name
needs to be updated to not include '.gz' extension.
2016-05-06 13:51:09 +01:00
Sebastian Goscik
8dc24bd327 uboot: Now detects the U-Boot version to use correct line endings
Previously Linaro U-Boot releases had a bug where they used \n\r
as the line ending. This has now been fixed which caused
issues with WA. WA now detects the U-Boot version and uses the
coresponding line ending.
2016-05-04 11:54:29 +01:00
Sebastian Goscik
59066cb46d juno: Removed default bootargs
The default boot args have been removed since these cause issues with
the latest Linaro builds, which boot correctly without any bootargs.

Also made a regex string a raw-string.
2016-05-03 15:24:35 +01:00
Sergei Trofimov
a40542d57b create command: fix example parameter name in templates
Parameter name in workload templates updated to be a valid identifier.
2016-04-20 14:43:07 +01:00
Sergei Trofimov
697aefc7bb ApkWorkload: clear app data on failed uninstall.
If uninstall fails, "pm clear" should be called to make sure that the
next time the app is launched it starts from a known state (which would
normally be ensured by the uninstall).
2016-04-19 16:43:42 +01:00
Sergei Trofimov
8bc71bb810 ApkWorkload: report correct apk verison on failed install
It's possible that there is already a version of an app on target that
differs form the version of the apk on the host. In such cases, WA will
usually try to uninstall the target version and install the host
version.

It's possible that the uninstall may fail. If that happens, it will be
reported as a warning but workload exectuion will proceed with the
target version. In this case, apk_version would have already been set to
that of the host apk. This change ensures that the APK version is
correctly set to the target version (the one that actually ran).
2016-04-19 16:33:37 +01:00
Sebastian Goscik
91210f26e9 RunCommand: WA no longer runs with no workloads specs
Previously if no worklaod specs were loaded, WA would still start instruments
and then go immediately to the teardown stage. This no longer happens.
2016-04-19 16:32:53 +01:00
Sergei Trofimov
44a49db04d glbcorp: pep8 fix
Added a missing blank line between method declaration and class
attribute definitions.
2016-04-15 16:39:24 +01:00
Sebastian Goscik
73aa590056 glbench: renamed start_activity to launch_package
To match changes made in: ff5f48b7e7
2016-04-14 16:36:37 +01:00
Sebastian Goscik
985b249a24 glbench: Fixed ending regex
Updated the regex that detected the end of the benchmark to match the new
logcat format.
2016-04-14 16:36:37 +01:00
Sebastian Goscik
f5e138bed0 Merge pull request #141 from setrofim/master
boostrap: nicer error messages on config parasing.
2016-04-14 16:22:10 +01:00
Sergei Trofimov
b6c0e2e4fd boostrap: nicer error messages on config parasing.
- handle ValueError as well as SyntaxError from config parser
- Report source file in the error message
2016-04-14 16:18:31 +01:00
Sebastian Goscik
df8ef6be6b Merge pull request #133 from mcgeagh/uxperf
CpuUtilisationTimeline added. This now will generate cpu utilisation …
2016-04-14 14:05:58 +01:00
Michael McGeagh
8a3186e1c8 CpuUtilisationTimeline added. This now will generate cpu utilisation based on frequencies and a number of samples
Fixed error in percentage when frequency is 'None'. Now default to 0 in these cases

cpu_utilisation is now a separate parameter in cpustate. Now generates a floating point number representing the utilisation based on the maximum frequency of the capture. No longer performs averaging of values, this can be done as a post-processing step

cpu utilisation now based on the max cpu freq per core, not max captured freq overall
2016-04-14 14:03:28 +01:00
Sebastian Goscik
68043f2a52 Merge pull request #138 from mcgeagh/fps-allviews
fps: Can now process multiple 'view' attributes
2016-04-14 13:57:28 +01:00
Michael McGeagh
95bbce77a2 fps: Can now process multiple 'view' attributes 2016-04-14 13:12:39 +01:00
Sergei Trofimov
82e4998092 Deprecating apk_version instrument. 2016-04-14 11:33:54 +01:00
Sergei Trofimov
48259d872b ApkWorkload: add package verison to the result as a classifer. 2016-04-14 11:23:39 +01:00
setrofim
8d13e1f341 Merge pull request #128 from ep1cman/glbench_logcat_fix
glbench: Fixed updated logcat format
2016-04-13 16:46:09 +01:00
Michael McGeagh
68714e0e55 fps: Only check for crashed content if crash_check is true. 2016-04-11 12:01:12 +01:00
setrofim
9ee1666a76 Merge pull request #131 from ep1cman/master
SysfsExtractor & Busybox fixes
2016-04-07 10:31:31 +01:00
Sebastian Goscik
8dcdc9afe1 busybox: Rebuilt busybox binaries to prefer applets over system binaries
Busybox will now prefer to use its own built in applets before it tries
using the system binaries so that we are always running commands as expected.
2016-04-07 10:29:13 +01:00
Sebastian Goscik
724f6e590e SysfsExtractor: Now performs tar and gzip separately
On some devices there were permissions issues when trying to tar and gzip
the temp-fs in one command. These two steps are now done separately.
2016-04-07 10:29:13 +01:00
Sebastian Goscik
507090515b Merge pull request #134 from jimboatarm/master
Fix to install APKs with whitespace in their path name
2016-04-06 10:56:58 +01:00
James Hartley
1dfbe9e44c Fix to install APKs with whitespace in their path name 2016-04-06 10:53:08 +01:00
Sebastian Goscik
b17ae78d6b adb_shell: Now handles return codes from ADB
As of ADB 1.0.35/Android N, it will return the exit code of the command that it runs
This code handles this scenario as before WA treated a return code from ADB as an
error with ADB.
2016-04-05 15:53:41 +01:00
Sergei Trofimov
391b0b01fc pylint/pep8 fixes
- android/workload: emoved an extra bank line between methods
- trace_cmd: define member attribute inside __init__
- adb_shell: ignore pylint warning about too many branches in this case
2016-04-05 11:36:39 +01:00
James Hartley
ff5f48b7e7 Fix for packages without launch activities
If the package has no defined launch activity you must call the
activity manager in a different way.
2016-04-05 10:24:42 +01:00
Sebastian Goscik
9a301175b0 glbench: Fixed updated logcat format
The old results looked like:
I/TfwActivity(30824):    "description": "",
I/TfwActivity(30824):    "elapsed_time": 62070,
I/TfwActivity(30824):    "error": "NOERROR",

The new format is:
04-04 11:38:04.144  1410  1410 I TfwActivity:    "description": "",
04-04 11:38:04.144  1410  1410 I TfwActivity:    "elapsed_time": 62009,
04-04 11:38:04.144  1410  1410 I TfwActivity:    "error": "NOERROR",
2016-04-04 17:33:48 +01:00
setrofim
712c79020d Merge pull request #126 from ep1cman/master
ResourceResolver: Show version number when resource wasn't found.
2016-03-30 11:05:21 +01:00
Sebastian Goscik
12dfbef76b ResourceResolver: Show version number when resource wasn't found.
If the ResourceResolver was looking for a specific version of a
resource and could not find it, this version number is now shown
in the error message.
2016-03-30 11:01:35 +01:00
Sergei Trofimov
107e8414bb trace-cmd: set a minimum bound on trace pull timeout
The timeout for the pulling the trace file after the run is being set
based on the time for which the trace was collected. For workloads with
short execution time, but large number of events, the resulting timeout
might be too short. To deal with this, do not let the timout be shorter
than 1 minute.
2016-03-24 16:49:42 +00:00
Sergei Trofimov
4f8b7e9f59 trace-cmd: updating sched_switch parser to handle both formats.
Depending on the kernel, sched_switch events may be formatted one of two
different ways in the text output. Previously, we've only handled the
"old" format. This commit updates the parser to handle the new format as
well.
2016-03-24 16:33:29 +00:00
setrofim
a077e7df3c Merge pull request #124 from ep1cman/master
BaseLinuxDevice: gzipped property files are now zcat'ed
2016-03-24 16:30:32 +00:00
Sebastian Goscik
a2257fe1e2 BaseLinuxDevice: gzipped property files are now zcat'ed
Before they were cat'ed this gave garbage output for compressed files.
Cat-ing is necessary since not all properties are normal files (sysfs).
2016-03-24 16:28:19 +00:00
Sebastian Goscik
50353d0b8f Merge pull request #122 from Sticklyman1936/lmbench_update
lmbench: Tidied up the code and improved stability
2016-03-24 16:26:52 +00:00
Sascha Bischoff
2eca77fb02 sysbench: use device busybox binary
Use the full path to busybox on the target device as opposed to
assuming it is found on the path.
2016-03-24 16:21:01 +00:00
Sascha Bischoff
3de5b5fe0b lmbench: Tidied up the code and improved stability
This patch tidies up the benchmark code to bring it in line with the
style used in Workload Automation in general. Additionally, the
results from sub-benchmarks are now directly written to a file on the
device as opposed to processing the standard output/error from the
benchmark, which was error prone.
2016-03-24 10:20:32 +00:00
Sergei Trofimov
3043506d86 applaunch: pass the location of busybox into the script
applaunch creates and deploys an auxilary script in order to collect
precise timings. This script invoked busybox with the assumption that it
is in PATH.

Since recent changes mean that it is no longer deployed to /system/bin,
the busybox in not found. With this commit, the full path to busybox
will be passed into the script's template.
2016-03-23 16:28:18 +00:00
Sebastian Goscik
5abeb7aac2 adb_shell: Fixed checking exit codes on Android N
As of android N '\n' is used as the new line separator not '\r\n'.
This fix makes the function detect which is being used by the device.
2016-03-23 13:43:07 +00:00
Sebastian Goscik
15ced50640 daq: Fixed channel merging
Fixed channel merging when setting merge to True.
Channel merges done by setting a mapping manually were not affected by this bug.
2016-03-21 11:15:30 +00:00
Sebastian Goscik
3531dd6d07 dhyrstone: Fixed arm64 binary
It was dynamically linked, its is now statically linked
2016-03-15 14:38:18 +00:00
Sebastian Goscik
79554a2dbc freq_sweep: Improved documentation
- Added explanation that this instrument does not taskset workloads
 - Fixed formatting issue with the agenda example
2016-03-09 16:37:15 +00:00
Sebastian Goscik
11184750ec dhrystone: Updated executable resolution
Previously it was just using the binary in the dhrystone folder.
Now it uses WA's resource resolution to use the correct ABI.
2016-03-09 14:54:39 +00:00
Sebastian Goscik
20cd6a9c18 daq: Added check for duplicate channel labels
The daq instrument will no longer accept duplicate channel names.
This caused issues where files sent from the daq sever were being
overwritten.
2016-03-07 13:21:40 +00:00
Sergei Trofimov
0c1e01cad4 run command: more usefull error message when specifying non-existing agenda path
If the specified agenda argument is not found in the file system, WA
assumes it is the name of a workload and would then raise an "extension
not found error", which may be confusing if the user's intension was to
specify a path.

Now, WA will first check that neither path separator, nor a '.' are
present in the agenda argument before assuming it is a workload name, and
will provide a less confusing error in that case.
2016-02-29 17:26:29 +00:00
Sergei Trofimov
203a3f7d07 LinuxDevice: fixed reboot.
- Deal with the dropped connection on issuing "reboot"
- Introduced a fixed initial delay before polling for connection to
  avoid re-connecting to adevice that is still in the process of
  shutting down.
2016-02-22 09:45:42 +00:00
Brendan Jackman
a5c9b94257 Add entry_point check for config file existence
This is just to provide a friendlier error message.
Before this commit you get an IOError from imp.load_source.
2016-02-17 17:24:14 +00:00
Sebastian Goscik
de021da300 ApkWorkload: Fixed runtime permission granting
"Normal" android permissions are automatically granted and cannot
be changed. Trying to "pm grant" these caused an error, this should
no longer occur.
2016-02-15 11:38:28 +00:00
Sebastian Goscik
5203188d9e LinuxDevice: Added as_root to kick_off 2016-02-12 09:54:14 +00:00
Steve Bannister
08663209d6 Fix up lmbench commandline 2016-02-11 17:40:31 +00:00
Sergei Trofimov
13ebc8ad55 pep8: removed trailling spaces 2016-02-11 08:22:53 +00:00
Sergei Trofimov
759f8db1bc lmbench: adding taskset support
lmbench can now be run pinned to specific CPUs.
2016-02-11 08:22:39 +00:00
Sergei Trofimov
288aa764b3 dhrystone: fix busybox reference. 2016-02-10 17:28:33 +00:00
Sebastian Goscik
a32cc0f213 Merge pull request #99 from setrofim/master
Minor fixes.
2016-02-10 16:50:17 +00:00
Sergei Trofimov
fdbc2ae372 pylint 2016-02-10 16:39:06 +00:00
Sergei Trofimov
9129a9d2d8 dhrystone: remove reference to sysbench from dhrystone doc. 2016-02-10 16:38:56 +00:00
Sebastian Goscik
cb46c57754 Merge pull request #98 from setrofim/master
ipython: switched to using LooseVersion for version checks.
2016-02-10 10:54:00 +00:00
Sebastian Goscik
536c0ffe4e Merge pull request #94 from ranjeetkumar/master
Added GoogleMap : Navigation app by Google Inc.
2016-02-10 09:37:00 +00:00
Sergei Trofimov
4f30e37f22 ipython: switched to using LooseVersion for version checks.
This is a fix for

https://github.com/ARM-software/workload-automation/issues/97

IPython can use rc tags in its version strings, which StrictVersion
can't handle.
2016-02-10 09:01:40 +00:00
ranjeet
0deb8fd7c6 Added GoogleMap : Navigation app by Google Inc. 2016-02-07 10:01:36 +05:30
Sergei Trofimov
3a99a284c4 cpustate: ensure known initial state
cpustate result processor generates a view of the cpu subsystem power
state during execution of a workload from cpu_idle and cpu_frequency
ftraces. There exists a period before the first events in those
categories are seen where the state of the cpu subsystem is (partially)
unknown and it is reported as such by the result processor.

Unknown state usually exists for a relatively short period of time and
is generally not a big deal. For certain kinds of workloads, however, it
may constitude a significant protion of the trace.

Changes in this commit attempt to deal with this by a) reading starting
cpu frequencies and writing them into the trace, and b) nudging each
core to bring it out of idle; this happens before the start marker, so
that the system state between the markers should be completely known.
2016-02-04 16:08:22 +00:00
Sergei Trofimov
5e3cc8fcb5 cpufreq: minor fixes
- added a missing conversion from int to cpu name.
- fixed the invocation of the current cpu frequency function inside core
  and cluster versions.
2016-02-04 15:42:35 +00:00
Sebastian Goscik
519efaf22c Parameter: Fixed overriding of new parameters
Previously you could have `override` set to True on parameters that
only existed in the current scope.

Now if you try to override a parameter that doesn't exist higher up
in the hiarchy you will get a ValueError.
2016-02-04 15:36:47 +00:00
Sebastian Goscik
dec574e59e AndroidDevice: Removed duplicate parameter 2016-02-03 15:06:00 +00:00
Sebastian Goscik
7ad8b8522b AttributeCollection: No longer allows duplicate overriding attributes
Previously if parameters with the same names and override set to True
were added to an extension at the same level one would silently
override the other.

This is no longer the case and an error will be show instead.

Also added tests to check that this is handeled correctly
2016-02-03 15:05:14 +00:00
Sergei Trofimov
45a9c0a86d Removing hard-coded abi from generic_linux devices
ABI should be read from the target device as with other Device
interfaces. This must be a holdover from before this was being done.
2016-02-02 09:29:22 +00:00
Sergei Trofimov
7edb2c8919 Adding aarch64 to architecture list for arm64 ABI
This was observer being reported on a device.
2016-02-02 09:29:22 +00:00
Sebastian Goscik
68fefe8532 manual: Fixed trying to logcat on non linux devices 2016-02-01 15:24:32 +00:00
Sebastian Goscik
dc22856431 sysbench: Fixed binary installation 2016-02-01 11:13:57 +00:00
Sergei Trofimov
da720c8613 pep8 2016-01-27 17:15:44 +00:00
Sergei Trofimov
eaabe01fa5 BaseLinuxDevice: added insmod() method.
Allows insting a kernel module on the target from a .ko located on the
host.
2016-01-27 17:15:41 +00:00
Sergei Trofimov
dc07c8d87e BaseLinuxDevice: added lsmod() method
Execute lsmod on the target device and parses the output into named
tuples.
2016-01-27 16:50:29 +00:00
Sebastian Goscik
fe2d279eac RunInfo: Added default run name
The run name will now default to ``{output_folder}_{date}_{time}``
2016-01-26 15:00:39 +00:00
Brendan Jackman
65cc22a305 core/agenda.py: Add check for empty values in agenda
This gives an error message when an agenda contains a key with no
value, so creating agendas is a little more user-friendly.
2016-01-25 13:43:38 +00:00
Brendan Jackman
2ae8c6073f doc: Apply it's/its grammar pedantry 2016-01-25 13:34:24 +00:00
Sebastian Goscik
dc5cf6d7b8 Merge pull request #83 from setrofim/master
Various fixes.
2016-01-22 14:29:13 +00:00
setrofim
e6ae9ecc51 Merge pull request #81 from ep1cman/bbench_fix
revent: Added record and replay commands
2016-01-22 12:55:16 +00:00
Sergei Trofimov
85fb5e3684 Pylint fixes
- apklaunch: ignore package (re-)assignment outside init.
- applaunch: factored out part of result processing into a separate
  method.
2016-01-22 12:19:39 +00:00
Sergei Trofimov
98b19328de Fixing assets discovery.
- Two different parameters may now have the same global alias as long as
  their types match
- `extension_asset` resource getter now picks up the path to the mouted
  filer from ``remote_assets_path`` global setting.
2016-01-22 12:19:31 +00:00
Sergei Trofimov
73ddc205fc geekbench: fixing root check
- negating the check (error if *not* rooted)
- do not check for version 2 (results are extracted differently and that
  does not require root).
2016-01-22 10:43:01 +00:00
Sebastian Goscik
1e6eaff702 revent: Added record and replay commands
Added two commands to WA to record and replay input events using revent.

As part of this also added the ability to get a device model from
android and linux device. This may need to be improved in the future.
2016-01-22 10:40:03 +00:00
Sebastian Goscik
f4c89644ff geekbench: Added check whether device is rooted 2016-01-22 09:39:49 +00:00
Sebastian Goscik
798a7befb8 pylint fixes 2016-01-22 09:39:29 +00:00
Sebastian Goscik
82df73278e recentfling: Fixed inequality 2016-01-20 16:31:27 +00:00
Sebastian Goscik
68a39d7fa1 bbench: Fix for web browser crash on latest Linaro release
Also fixes browser permissions issues on Android 6+
2016-01-20 16:29:38 +00:00
setrofim
120f0ff94f Merge pull request #78 from ep1cman/binary_install
BaseLinuxDevice: Tidied up the way binaries are handled
2016-01-19 10:52:54 +00:00
Sebastian Goscik
f47ba6fea6 ebizzy: changed os.path to device path 2016-01-19 10:45:09 +00:00
Sebastian Goscik
5f8da66322 antutu: Fixed runtime permissions
Antutu 6 lists corse_location as a requirement but also asks for
fine_location at runtime. So it is now manually beign granted.
2016-01-19 10:45:09 +00:00
Sebastian Goscik
7c35c604f4 BaseLinuxDevice: Tidied up the way binaries are handled
Added:
get_binary_path: Checks binary_directory for the wanted binary, if
                 if its not there, it will use which to find a
                 system one. returns the full path

install_if_needed: will install a binary only if it is not present.

Changes:
 - Busybox is now deployed to non-rooted devices
 - is_installed has now been removed as the new functions supersede it
 - binaries will now always be installed to `binaries_directory` and
   not system folders.
 - updated workloads to use these new functions
   - rt-app and sysbench might still need work
2016-01-19 10:45:09 +00:00
Sergei Trofimov
c11cc7d0d2 trace-cmd: do not error on missing host-side trace-cmd when report_on_target is set
When report_on_target option is set, binary trace will be "reported"
into a text version on the target device. This removes the need for
trace-cmd to be installed on the host, in which case that should not be
reported as an error.
2016-01-18 11:53:06 +00:00
Chase Qi
bd826783cc applaunch: Added support for IO scheduler test
When IO is heavily loaded, the impact of IO schedulers on App launch
time varies. To measure the impact, added io_stress and io_scheduler two
parameters and related jinja2 blocks.

Signed-off-by: Chase Qi <chase.qi@linaro.org>
2016-01-15 02:16:35 -08:00
Brendan Jackman
6b3187c2c9 workloads: Add apklaunch workload
This is a workload to install and run an arbitrary .apk
2016-01-14 15:58:26 +00:00
Sebastian Goscik
d9c4063307 AndroidDevice: fixed get_pids_of
As of Android M ps can no longer filter by process name. This is
now handled using grep from busybox
2016-01-13 17:07:30 +00:00
Chase Qi
0998c18efd applaunch: pass cleanup argument to the template
Since cleanup test block is defined in the device_script.template, the
value of cleanup is needed to render the template properly.

Signed-off-by: Chase Qi <chase.qi@linaro.org>
2016-01-12 18:20:22 -08:00
Sergei Trofimov
df937dc847 juno: fixing a stupid error in u-boot boot path
Juno's bootargs parameter specifies the kernel boot arguments as a
sigle string. However, when it is passed into _boot_via_uboot, it was
expanded as a mapping, causing an error. This fixes that boneheaded
mistake...
2016-01-12 15:00:25 +00:00
Sebastian Goscik
41890589e1 ipython: Updated to work with the latest ipython version 2016-01-12 10:59:52 +00:00
Sergei Trofimov
b84f97a902 trace_cmd: updated to handle empty CPUs.
Updated trace-cmd parser to handle messages that the trace for a CPU is
empty.
2016-01-12 10:12:00 +00:00
Sebastian Goscik
09563bc01e antutu: Updated to support Antutu v6 2016-01-11 14:37:32 +00:00
Sebastian Goscik
f1bb44b3e7 ApkWorkload: Added automatic granting of runtime permissions
As of Android 6.0, apps can request permissions at runtime. If the
target device is running Android 6.0+ these permissions are now automatically
granted.
2016-01-11 13:58:38 +00:00
Sergei Trofimov
c105e8357c juno_energy: add metrics to results and "strict" parameter
- Summary metrics are now calculated from the contents of energy.csv and
  added to the overall results.
- Added a new "strict" parameter. If this is set to False, the device
  check during validation is omitted.
2016-01-07 11:09:00 +00:00
Sebastian Goscik
dc1b0e629e ipynb_exporter: default template no longer shows a blank plot for workloads without summary_metrics 2015-12-15 17:18:25 +00:00
Sergei Trofimov
62a0fd70de daq: fixed typo 2015-12-15 09:54:21 +00:00
Sergei Trofimov
438e18328d AndroidDevice: remove unnecessary escapes from update locksettings command
The single quotes will be escaped further down the command processing
chain.
2015-12-15 09:52:46 +00:00
setrofim
57b31149f1 Merge pull request #68 from ep1cman/daq_fix
daq: Fixed bug where an exception would be raised if merge_channles=False
2015-12-15 09:43:23 +00:00
Sebastian Goscik
09390e7ffb daq: Fixed bug where an exception would be raised if merge_channles=False 2015-12-15 09:39:28 +00:00
Sergei Trofimov
e83d021a5c utils/android: fixed use of variables in as_root=True commands.
In order to execute as root, the command string gets echo'd into so;
previusly, double quotes were used in echo, which caused any veriables
in the command string to be expanded _before_ it was echoed.
2015-12-15 08:34:18 +00:00
Sergei Trofimov
bca012fccb csv: handle zero-value classifiers correctly
If the value of a classifier was zero (or any other value that
interprets as boolean False), it used to be coverted to an empty entry.
This makes sure that the value gets correctly ropagated.
2015-12-15 08:30:53 +00:00
Sergei Trofimov
bb37c31fed perf: added support for per-cpu statistics
per-cpu statistics now get added as metrics to the results (with
a classifier used to identify the cpu).
2015-12-11 14:01:04 +00:00
Sergei Trofimov
0005f927e8 pep8 2015-12-11 14:01:04 +00:00
setrofim
9222257d79 Merge pull request #67 from ep1cman/recentfling
Recentfling
2015-12-11 11:06:45 +00:00
Sebastian Goscik
585d8b2d7d recentfling: Added workload 2015-12-11 11:02:25 +00:00
Sebastian Goscik
d3470dca73 AndroidDevice: Fixed swipe_to_unlock
Previously swipe_to_unlock was not used and conflicted with a method
of the same name.

 - swipe_to_unlock() renamed perform_unlock_swipe()
 - swipe_to_unlock parameter now takes a direction, this allows swipe unlocking on Android M devices
 - ensure_screen_is_on() will now also unlock the screen if swipe_to_unlock is set
2015-12-11 10:58:32 +00:00
Sergei Trofimov
0f60e9600f trace_cmd: parser for sched_switch events and fixes
- Compiled regular expressions in EVENT_PARSER_MAP now get handled
  correctly.
- regex_body_parser now attemts to convert field values to ints,
  bringing it inline with the default parser behavior.
- There is now a regex for sched_switch events.
2015-12-10 13:41:24 +00:00
Sergei Trofimov
6a85dff94f pylint: addtional fix
further to bef8fb40ef
2015-12-10 13:39:28 +00:00
Sascha Bischoff
72a617c16d Gem5Device: Remove the rename in pull_file to align with gem5 2015-12-10 11:09:42 +00:00
Sascha Bischoff
d6355966bf Gem5Device: Removed unused methods 2015-12-10 11:09:42 +00:00
Sascha Bischoff
845d577482 Gem5LinuxDevice: Added login_prompt and login_password_prompt parameters
Added two parameters which allow the user to change the strings used
to match the login prompt and the following password prompt to match
their device configurations.
2015-12-10 11:09:42 +00:00
Sascha Bischoff
9ccf256ee8 AndroidDevice: Use content instead of settings to get ANDROID_ID
We move from using settings to using content to get the ANDROID_ID as
this works across a wider range of Android versions.
2015-12-10 11:09:42 +00:00
Sascha Bischoff
cc9b00673e Gem5AndroidDevice: No longer wait for disabled boot animation
Adjust the wait_for_boot method of Gem5AndroidDevice to no longer wait
for the boot animation to finish if the animation has been
disabled. The service.bootanim.exit property is only set (to 0) when
the animation starts, and is set to 1 when the animation finishes. If
the animation never starts, then the property is not set at
all. Hence, we assume the boot animation has finished, unless the
property has been set.
2015-12-10 11:09:42 +00:00
Sascha Bischoff
e7c75b2d3b Gem5: Add support for deploying the m5 binary 2015-12-10 11:09:41 +00:00
Sascha Bischoff
480155fd8c Gem5Device: Try to connect to the shell up to 10 times 2015-12-10 11:09:41 +00:00
Sascha Bischoff
d98bdac0be Gem5Device: Move resize shell commands to own method
Moved the commands to resize the shell to their own method. They are
now executed twice. Once as soon as the shell is connected, and a
second time as part of initialize. This latter call takes place after
the isntallation of busybox.
2015-12-10 11:09:41 +00:00
Sascha Bischoff
32cf5c0939 Gem5Device: Removed busybox dependency. 2015-12-10 11:09:41 +00:00
Sebastian Goscik
bef8fb40ef Updated pylint for v1.5.1
Fixed WA for the latest version of pylint (1.5.1)
2015-12-09 16:52:39 +00:00
Sergei Trofimov
344bc519c4 AndroidDevice: fixing get_properites to refer to self.device
This is a fix to the previous fix
(2510329cdf) that updated get_properties
to store "dumpsys window" output relative to the working_directory. That
commit constructed the path using self.device, which is wrong, as in
this case self itself is the device.
2015-12-08 11:26:56 +00:00
setrofim
3da58d9541 Merge pull request #64 from ep1cman/hwuitest
hwuitest: Added workload
2015-12-03 16:46:06 +00:00
Sebastian Goscik
065ebaac61 hwuitest: Added workload
This workload allow WA to use hwuitest from AOSP to test rendering
latency on Android devices.
2015-12-03 15:07:42 +00:00
Sergei Trofimov
f85ef61ce9 lmbench: add the output file as an artifiact 2015-12-03 10:54:32 +00:00
setrofim
e5c6ef5368 Merge pull request #62 from ep1cman/trace-cmd-target-extract
trace-cmd: Added ability to generate reports on target device
2015-12-02 09:58:44 +00:00
Sebastian Goscik
a697c47c49 trace-cmd: Added ability to generate reports on target device 2015-12-02 09:53:43 +00:00
Sascha Bischoff
c6e712d44c Gem5Device: simplfy if statement based on pylint recommendation 2015-12-01 18:23:26 +00:00
Sascha Bischoff
00c9bdc2a6 Gem5Device: Fix runtime error caused by lack of kwargs 2015-12-01 18:23:26 +00:00
setrofim
1b31d8ef6f Merge pull request #53 from ep1cman/systrace
Added systrace instrument
2015-11-27 09:54:57 +00:00
Sebastian Goscik
b3a9512f44 Added systrace instrument
Added an instrument to uses systrace.py from the android SDK.
 Generates a fancy HTML report (only works in Google chrome).
2015-11-27 09:53:59 +00:00
Sergei Trofimov
a06016a442 adb_shell: fixing handling of line breaks at the end of the output
- adb protcol uses "\r\n" for line breaks. This is not handled by
  Python's line break translation, as not a file. So spliting on '\n'
  when extracting the exit code resulted in stray '\r' in the output.
- adb_shell expects exit code to be echoed on the same line. This may
  not have been the case if latest output from executed command was not
  a complete line. An extra echo will now ensure that the exit code will
  be on its own line even in that case.
2015-11-24 15:50:38 +00:00
Sergei Trofimov
c02a1118d7 BaseLinuxDevice: list_file_systems() now handles blank lines
mount() may return an empty line at the end of the output; this update
handles that.
2015-11-24 15:50:38 +00:00
Sebastian Goscik
d9f1190e1f Version bump 2015-11-23 16:19:45 +00:00
Sascha Bischoff
c533da3f38 Gem5Device: Fix issue with init arguments
- This patch addresses an issue with the arguments passed the
  BaseGem5Device __init__. With this patch these are no longer passed
  in as they are not required in the base device implementation.
2015-11-20 13:10:35 +00:00
Sergei Trofimov
8261c1d5b5 freqsweap: fix: was erroneously merging runtime_params into workload_params 2015-11-19 14:11:23 +00:00
setrofim
1d12e6a8b0 Merge pull request #57 from ep1cman/freqsweep
Freqsweep: Added the ability to specify workload/runtime parameters
2015-11-18 11:29:39 +00:00
Sebastian Goscik
2957d63e2f Freqsweep: Added the ability to specify workload/runtime parameters
E.g:
  sweeps:
    - cluster: a15
      runtime_params:
        a15_cores: 1
2015-11-18 11:27:35 +00:00
Sebastian Goscik
2063f48cf0 streamline: cleaned up and added Linux support
- The streamline instrument can now run on linux clients
  because it no longer relies on adb port forwarding
- Updated description.
- Cleaned up code
- Now check for streamline not caiman
- Gatord is now only run once instead of restarted every
  job
2015-11-16 17:27:17 +00:00
Sergei Trofimov
2510329cdf AndroidDevice fix: create dympsys file relative to working directory on target.
Commit 95f17702d7 redirected output of
"dumpsys window" to a file (needed for Gem5 support). However, the file
was created in $PWD, which breaks on production devices, as that
location is not writable. This moves the file under the working
directory on the device.
2015-11-16 13:09:28 +00:00
Sergei Trofimov
9c8c81cc25 csv result processor: write results.csv after each iteration.
(partial) results.csv will now be written after each iteration rather
than at the end of the run.
2015-11-16 12:43:52 +00:00
Sergei Trofimov
2e5b3671e9 LinuxDevice fix: do not invoke super's hard_reset()
as it does not have one...
2015-11-16 12:43:52 +00:00
Sergei Trofimov
705ce9ae40 rt_app: added an option to force install.
Userful when the target device already has rt-app on it, but you want to
replace it with the version from your host.
2015-11-16 12:43:52 +00:00
setrofim
f43daacd41 Merge pull request #52 from ep1cman/freqsweep
Added freqsweep instrument
2015-11-13 15:19:52 +00:00
Sebastian Goscik
3b41f69762 Added freqsweep instrument
Added an instrument to sweep workloads across all available frequenices
2015-11-13 15:16:54 +00:00
setrofim
a722e594af Merge pull request #55 from Sticklyman1936/split_gem5device
Gem5Device: Refactor into BaseGem5Device, Gem5LinuxDevice and Gem5And…
2015-11-13 14:26:07 +00:00
Sascha Bischoff
a447689a86 Gem5Device: Refactor into BaseGem5Device, Gem5LinuxDevice and Gem5AndroidDevice
- Refactored the Gem5Device to avoid duplicated code. There is now a
  BaseGem5Device which includes all of the shared functionality. The
  Gem5LinuxDevice and the Gem5AndroidDevice both inherit from
  BaseGem5Device, and LinuxDevice or AndroidDevice, respectively.
2015-11-13 14:19:24 +00:00
setrofim
9fe4887626 Merge pull request #54 from ep1cman/daq_merge
Added ability to merge DAQ channels
2015-11-13 11:00:36 +00:00
Sebastian Goscik
6492b95edd Added ability to merge DAQ channels
If the parameter merge_channels is set to true (false by default).
 DAQ channels that have consecutive letters on the end of their names
 will be summed together. E.g: A7, A15a, A15b becomes A7, A15

 You can also  manually specify a channel mapping by setting
 merge_channels to a dict. .
2015-11-13 10:56:50 +00:00
Sascha Bischoff
55f6ef4a5e Gem5Device: Remove VirtIO device rebinding to align with gem5
- Remove the unbind and rebind for the VirtIO 9P mount method as gem5
  now checkpoints the basic state of the device. This allows us to
  just mount it assuming that checkpoint have been created correctly.
2015-11-11 16:45:01 +00:00
Sascha Bischoff
672c74c76c Gem5Device: Avoid duplicate get_properties code
- Remove the duplicated get_properties code by calling the internal
  _get_android_properties method directly.
2015-11-11 16:45:01 +00:00
Sascha Bischoff
95f17702d7 AndroidDevice: Move the processing of Android properties to an internal method
- Move the processing of Android properties to an internal
  method. This allows the Android properties to be extracted without
  extracting those of the Linux device.

- Redirect the output from 'dumpsys window' to a file and pull the
  file as opposed to extracting the output from the terminal. This is
  more reliable in the event that another process writes to the shell.
2015-11-11 16:45:01 +00:00
Sascha Bischoff
ee4764adc4 Gem5Device: Addressed review comments
- Replaced hard-coded pexpect expect string with UNIQUE_PROMPT.

- Changed the capture_screen debug to a warning to make sure that the
  user knows when it happens.

- Fixed the logic for checking when a file exists. Previously, if the
  output could not correctly be processed (ValueError) then we just
  assumed that the file existed if there was any output at all. This
  is clearly not a good default. Changed to default to False if it was
  not able to process the output as this seems to be the safest
  option.

- Changed ad hoc filename extraction to use os.path.basename.

- Removed the processing of some kwargs and defaults that are handled
  by the parent class.

- Stopped overriding some paramaters which were purely defined in the
  Gem5Device.
2015-11-11 16:45:00 +00:00
Sascha Bischoff
3a8eed1062 Gem5Device: Allowed the gem5 binary to be specified in the agenda
- Added the gem5_binary option to the agenda which allows a different
  gem5 binary to be specified. This allows WA to be used with
  different levels of gem5 debugging. as well as allowing non-standard
  gem5 binary names and locations.
2015-11-04 10:38:50 +00:00