1
0
mirror of https://github.com/ARM-software/workload-automation.git synced 2025-03-25 03:59:11 +00:00
Luis Machado 18d9f942da [framework/workload] Add support for jank testing
Jank testing involves using a different library (JankTestBase) that our
testing class needs to extend. Since we already make the base testing
class UiAutomation extend BaseUiAutomation, we cannot use the UiAutomation
class for our tests.

The uiauto_class property is hardcoded to "UiAutomation" though, so this
patch adds a uiauto_jank_class property for the Jank test class.

While at it, we also make the uiauto_runner configurable (currently hardcoded
to the old deprecated android.support version of it) so that our workloads
can pass whatever runner they need to use.

In terms of stages for testing, their current names are the following:

stages = ['setup', 'runWorkload', 'extractResults', 'teardown']

Those won't work for jank tests. For some reason the jank test library wants
to see the testing function name contain or start with a "test" string
pattern on it.

This behavior doesn't seem to be documented, but at least with the current
version of the JankTestBase library we have this restriction.

To make things work despite this restriction, I've added separate jank
test stages that can be provided by the workload. The generic workload
code will use these stages to generate the instrumentation invocation
command, and the provided jank test stages (essentially jank test
functions) will be invoked one by one.

Finally, we make the UiAutomatorGUI's _execute method return the output
of the execution so the workload can freely process and pattern-match
the results, like the UiBenchJankTests workload.
2024-07-16 14:30:11 +01:00
2024-01-09 12:20:26 -08:00
2023-04-29 17:29:43 -05:00
2020-12-16 09:51:09 +00:00
2023-08-21 16:53:53 -05:00
2019-12-03 14:03:18 +00:00
---
2024-06-12 17:09:04 -05:00
2024-01-09 12:20:26 -08:00

Workload Automation
+++++++++++++++++++

Workload Automation (WA) is a framework for executing workloads and collecting
measurements on Android and Linux devices. WA includes automation for nearly 40
workloads and supports some common instrumentation (ftrace, hwmon) along with a
number of output formats.

WA is designed primarily as a developer tool/framework to facilitate data driven
development by providing a method of collecting measurements from a device in a
repeatable way.

WA is highly extensible. Most of the concrete functionality is implemented via
plug-ins, and it is easy to write new plug-ins to support new device types,
workloads, instruments or output processing.


Requirements
============

- Python 3.5+
- Linux (should work on other Unixes, but untested)
- Latest Android SDK (ANDROID_HOME must be set) for Android devices, or
- SSH for Linux devices


Installation
============

To install::

        git clone git@github.com:ARM-software/workload-automation.git workload-automation
        sudo -H python setup [install|develop]

Note: A `requirements.txt` is included however this is designed to be used as a
reference for known working versions rather than as part of a standard
installation.

Please refer to the `installation section <http://workload-automation.readthedocs.io/en/latest/user_information.html#install>`_
in the documentation for more details.


Basic Usage
===========

Please see the `Quickstart <http://workload-automation.readthedocs.io/en/latest/user_information.html#user-guide>`_
section of the documentation.


Documentation
=============

You can view pre-built HTML documentation `here <http://workload-automation.readthedocs.io/en/latest/>`_.

Documentation in reStructuredText format may be found under ``doc/source``. To
compile it into cross-linked HTML, make sure you have `Sphinx
<http://sphinx-doc.org/install.html>`_ installed, and then ::

        cd doc
        make html


License
=======

Workload Automation is distributed under `Apache v2.0 License
<http://www.apache.org/licenses/LICENSE-2.0>`_. Workload automation includes
binaries distributed under different licenses (see LICENSE files in specific
directories).


Feedback, Contributions and Support
===================================

- Please use the GitHub Issue Tracker associated with this repository for
  feedback.
- ARM licensees may contact ARM directly via their partner managers.
- We welcome code contributions via GitHub Pull requests. Please see
  "Contributing Code" section of the documentation for details.
Description
No description provided
Readme Apache-2.0 208 MiB
Languages
Python 75.9%
Java 15.8%
C 5.4%
Shell 2.5%
Dockerfile 0.3%