- ``load_struct_from_yaml()`` has been moved to devlib [1].
- ``LoadSyntaxError()`` is already implemented in devlib.
- Remove ``load_struct_from_file()`` and ``RAND_MOD_NAME_LEN`` since
they are not used at all.
[1] https://github.com/ARM-software/devlib/commit/591825834028
Signed-off-by: Metin Kaya <metin.kaya@arm.com>
Use importlib.import_module instead of __import__ as per Python doc
recommendation.
This will also fix the case where the class is in a
package's submodule (since __import__ returns the top-level package),
e.g. "foo.bar.Class".
Introduce 'unlock_screen' option in order to help in automating Android
tests by unlocking device screen automatically. Surely this works only
if no passcode is set.
'unlock_screen' option implicitly requires turning on the screen. IOW,
it will override value of 'screen_on' option.
'diagonal', 'vertical' and 'horizontal' are valid values for
'unlock_screen' option as of now.
Note that this patch depends on
https://github.com/ARM-software/devlib/pull/659 in devlib repo.
Signed-off-by: Metin Kaya <metin.kaya@arm.com>
"--user <USER_ID" (current user: 0) option is added to
activity manager (am) command because of "Invalid userId" command.
Tested with other benchmarks (geekbench) as well.
Add an instrument that uses devlib's PerfettoCollector to collect a
Perfetto trace during the execution of a workload.
The instrument takes a path to a Perfetto config file which specifies
how Perfetto should be configured for the tracing.
Signed-off-by: Kajetan Puchalski <kajetan.puchalski@arm.com>
Bromite is a fork of Chromium that's easily available for Android. Apart
from small changes it works the same as Chromium and works with this
speedometer workload. Add it to the 'package_names' list to allow using
it as an option.
https://www.bromite.org/
Signed-off-by: Kajetan Puchalski <kajetan.puchalski@arm.com>
Update rt-app binaries to the latest version of the "lisa" branch in
douglas-raillard-arm GitHub fork. This tracks the upstream master branch
with a number of critical patches required notably to work with uclamp.
Allow optionally setting the top level ftrace buffer size separately
from the devlib buffer size. The parameter will be passed to the devlib
FtraceCollector and take effect there.
Signed-off-by: Kajetan Puchalski <kajetan.puchalski@arm.com>
WA_PLUGIN_PATHS currently contains a list of filesystem paths to scan
for plugins. This is appropriate for end-user plugins, but this is
problematic for plugins distributed by a 3rd party, such as a plugin
installed from PyPI.
In those cases, the path to the sources is unknown and typically depends
on the specify Python version, local setup etc. What is constant is
Python name of the package, e.g. "lisa.wa.plugins".
Extend the input allowed in WA_PLUGIN_PATHS by trying to load entries as
a Python package name if:
* There is no filesystem path with that name
* The entry is a "relative path" (from an fs point of view)
Set the view parameter so that the FPS instrument can collect frame data
from the workload.
Signed-off-by: Kajetan Puchalski <kajetan.puchalski@arm.com>
Rework the uibenchjanktests workload to allow specifying a list of
subtests. The activity will be re-launched for each provided subtest. If
none are specified, all available tests will be run in alphabetical order.
The workload output will now include metrics with their respective test
names as classifiers.
Add a 'full' parameter to revert back to the old default 'full run'
behaviour with restarts between subtests.
Signed-off-by: Kajetan Puchalski <kajetan.puchalski@arm.com>
Add a workload for the Dr Arm demo app. Includes functionality for
automatically pulling the ADPF FPS report file from the target if one
was generated by the app.
Signed-off-by: Kajetan Puchalski <kajetan.puchalski@arm.com>
The simpleperf included with Android 13 now does not show the percentage
when no counter multiplexing took place. This causes the perf instrument
to crash when processing the output. This fix checks whether the percentage
exists before trying to extract it.
Signed-off-by: Kajetan Puchalski <kajetan.puchalski@arm.com>
In some workloads it is beneficial to be able to provide arguments
when launching the required APK. Add a new `arpk_arguments` property
to allow a workload to provide a dict of parameter names and values
that should be used when launching the APK.
The python types of the parameters are used to determine the data
type provided to the APK. Currently supported types are string, bool,
int and float.
Add support for Geekbench 6 as a workload on Android.
This commit adds 6.*.* as a valid version for the Geekbench workload and
updates the UIAuto apk accordingly.
It also refactors the update_result function seeing as the one
originally used for GB4 can now be used for 4, 5 and 6 and so it makes
more sense to treat it as a 'generic' update_result function. The
functionality should stay the same.
Backwards compatibility with GB2 & GB3 should be maintained.
Implements support for dynamically loading additional RuntimeConfig
and associated RuntimeParameter that are defined in a plugin.
Currently, the various RuntimeConfig's are hard coded in a list within
WA. This patch extends RuntimeParameterManager to use PluginLoader to
load RuntimeConfig classes and append to the hard coded list.
The implementation, as written, does not allow loading RuntimeConfig
from a plugin if it has the same name as one of the hard coded
RuntimeConfig. This is meant to prevent conflicts and unexpected
behavior.
Currently, when processing the output of 'simpleperf stat', wa does not
skip the header and tries to process part of it as a number, leading
to type errors. This change skips the header (line starting with '#').
Furthermore, some events (e.g. cpu-clock or task-clock) include "(ms)"
in their count value and are floats instead of integers. Because of
this, when either of those is included, processing metrics fails due to
assuming every metric is an integer. Then another error happens when the
code tries to split the line on '(' assuming that there's only one set
of those around the percentage.
This change removes "(ms)" from the line
before it's processed and properly determines whether 'count' is an
integer or a float before attempting to convert it.
The non corporate version of geekbench5 didn't work although the code
had everything needed, except for a number of tiny required tweaks:
1. Add '5' in the supported versions in __init__.py
2. Fix the name of the android package in__init__.py and
UiAutomation.java
3. Improve handling of minorVersion to fix potential exception when we
don't specify the minorVersion number in the yaml file. Launching
geekbench5 works fine when it's the only one installed. But if you
have multiple versions, then using the version string in the yaml
agenda didn't like specifying '5' as the version and threw exception
out of bound because we assume '5.X' as input. No reason I'm aware of
to force support for a specific version of geekbench5. So keep it
relaxed until we know for sure it breaks with a specific version.
Signed-off-by: Qais Yousef <qais.yousef@arm.com>
Which works as the corporate version except for a different in package
name and a set of Fixed Time Tests that don't exist on free version.
Only support v 4.X and v5.X as that's what's available.
Note there's a clash with glbenchmark package name. glbenchmark is an
ancient version provided by the same developers but was superseded by
gfxbench. The version checks in both workloads should ensure we get the
right one in the unlikely case both are installed.
Signed-off-by: Qais Yousef <qais.yousef@arm.com>
The test was hanging for a long time waiting for RUN text. Checking for
description first prevents that.
Signed-off-by: Qais Yousef <qais.yousef@arm.com>
The code for reading the results is almost the same as for Antutu 8,
but it needs to be adjusted to account for a slightly different set
of benchmarks.
At least on my device, Antutu 9 takes over 10 minutes to run, so increase
the timeout to 20 minutes.
The older versions of the plugin caused problems building with newer
NDK versions due to a lack of MIPS support.
This also required upgrading to a version of Gradle that knows about
the Google Maven repository.
When running perf/simpleperf stat, the report_option_string,
report_sample_options and run_report_sample configuration parameters
don't make sense. Instead of quietly ignoring them, raise a
ConfigError so that the user can fix the agenda.
devlib learnt to use report-sample in
ARM-software/devlib@fe2fe3ae04 ("collector/perf: run simpleperf
report-sample in the target if requested"). Adapt the perf instrument
to use the new parameters of the PerfCollector.
We need to make those attributes class-attributes, to make sure they are still
defined in subsequent jobs. We still access them through 'self', however.
Don't assume the first job iteration is already in the workload cache.
This may not always be the case, for example with the random execution
order a later iteration can be processed first.
Instead check to see if the job id is present or not.
If the device does not have the hoptplug module installed, avoid
unnecessary querying of the device to check the number of cpus which
can cause issues with some devices.
On systems that do not have git installed WA will currently fail
to install with a FileNotFound Exception. If git is not present then
we will not have a commit hash so just ignore this error.