Due to a local file named 'signal.py' this was being imported instead of the system level 'signal' package. This commit ensures the the system level is used instead.
`set_sysfile_values` now accepts a `^` symbol prefixed to the
file path to indicated that the value should be written as binary data.
To accommodate this an extra `binary` flag has been added to the `set_sysfile_value`and `get_sysfile_value` methods to write and retrieve the binary data respectively.
This changeset adds the ability to sleep on the device via a
device.sleep() method. This invokes sleep on the target device. This
is useful for situations where the passage of time on the target
device does not match that of the host, e.g., gem5.
This changeset also updates a number of workloads to use this new
sleep method.
- "remote" getter priority reduced to be below "environment" so that
resouces placed into "~/.workload_automation/dependencies" by the user
take priority over those pulled from remote locations.
- "filer" getter now uses a cache location for the resource rather than
downloading to the local resource location.
- renamed the capture method from "capture_view_hierachy" to
"capture_ui_hierarchy" to fix typo and make more descriptive.
- Change the file extension of the cature file to ".uix" because this is
the extension uiautomatorviewer looks for.
Constraints and allowed values of Extension Parameters will now be check
when the Parameter value is set, rather than when validating the
extension. Mandatory status of a Parameter is still checked during
valudation.
- Device subclasses should provide their own implementation.
Default behaviour is to raise a `NotImplementedError`
- Workload subclasses can set `requires_network` to `True` and
network connectivity check will be performed during `setup()`
Dump window hierarchy view from uiautomator to a file when WA fails
during execution. Note: the xml file are pre-formatted after dump.
Implementation specific to android.device.
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.
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
- 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.
Failed jobs will now be automatically retired. This is controlled by two
new settings:
retry_on_status - a list of statuses which will be consided failures and
result in a retry
max_retries - number of retries before giving up
Dynamic modules may be loaded automatically on device initialization if
the device supports them. Dynamic modules implent probe() method to
determine whether they are supported by a particular deviced.
devcpufreq and cpuidle have been converted into dynamic modules
- standardisded on a single context argument
- removed Device.init() no longer necessary as initilize now
automatically gets propagated up the hierarchy. Renamed the existing
use of it to "initilize".
- related pylint cleanup.
- added initialze and finalize methods to workloads, which were the only
major extension types that did not have them
- Semanatics for initialize/finalize for *all* Extensions are changed so
that now they will always run at most once per run. They will not be
executed twice even if invoke via istances of different subclasses (if
those subclasses defined their own verions, then their versions will
be invoked once each, but the base version will only get invoked
once).