Uiautomator1 has been deprecated, therefore the uiautomation base classes have
been upgraded to use uiautomator2 and the new gradle build system.
Altered to retrieve `package_name` rather than `package` as per the previous commit.
To work around appshare requiring access to protected variables of a workload,
a `setWorkloadParameters` method has been added to manually supply a parameter
bundle, and a `getPackageID` method to retrieve a workloads package ID.
To prevent parameters having to be converted individually for each worload
the getParams() function has been overridden to perform the required type and
url decoding on the passed parameter bundle before passing the correctly typed
bundle to the workloads.
Inorder to support application launch workload, a new interface is created
which has methods that need to be implemented by all workloads that
support application launch time instrumentation.
UiAutoUtility class added to support utility functions used for UiAutomation.
This class can help in refactoring some existing fucntionalities into utility functions.
Launch command generation is added as a utility class method which can be used
by workloads to construct their launch command from parameters passed.
All the uxperf workloads get some common package parameters.
These are moved to the parent class and a new method is introduced to fill
these parameter values. All the uxperf workloads can call this method to resolve
the package parameters.
Revent is terminated from WA via a 'SIGINT', therefore this means
that in order for revent to receive the signal and deal with it
accordingly, revent always needs to be listening on STDIN regardless of
the 'wait_for_stdin' flag.
Log time changed to produce epoch time in milli seconds.
Nano to milli second conversion done in uxperf result
processor is removed.
Tested on Mate8 and time obtained is verified.
Fixed new gamemode not being set for compatibility mode.
Fixed input buffer not being flushed causing replay to fail.
Fixed infinte loop if revent recording did not end correctly.
Updated revent binaries.
Moved broadcast to super. Mandatory and Default are XOR
Added a longer wait for sync to finish. Increases reliability on certain phones
Changed recipient to not mandatory and a default set
Wait for sync when launching gmail from the sharing feature
Fix: cornercase where image viewer already points to working directory. Refactored code due to duplication
Added new function to BaseUiAutomation class to find a folder in the gallery
Changed termination signal to interrupt signal to prevent code exiting too early.
Added exit handler to ensure revent exits correctly as previously was
crashing and therefore not running final code.
Fixed error in writing input event where half of timestamp seconds was missing.
Fixed typo in documentation for revent file structure.
- Added support for gamepad recording. This type of recording contains
only the events from a gamepad device (which is automatically
identified). The details of this devices are collected and stored as
part of the recording. On playback, uinput is used to create a virtual
gamepad and replay into it.
- A "mode" field has been added to the recording format to help
distinguish between the normal and gamepad recording types.
- A field for the total number of input events has been added before the
start of the event stream (after the device description).
- The structure of revent code has undergone a major overhaul to improve
maintainability and robustness.
- More detailed "info" command output.
- Updated Makefile to support debug/production builds.
revent:
- Fixed 32-bit/64-bit compatibility by no longer "long" for timestamps
- Removed superfluous code
- SIGTERM is now handled only while waiting for a file not while processing one
- Added '-s' to docs
- Fixed path_buff size
Record Command:
- Removed timeout in command as -s is specified.
- Previously the command would send SIGTERM to revent but not wait for it to terminate.
This would result in the pulled recording missing its send. This has now been fixed.
Replay Command:
- Added more logging
- Implement a new Marker API in BaseUiAutomation so workload can
generate start and end markers with string name. Outputs to logcat.
- Document the Marker output log format in the WA documentation
- Create a results processor to take existing instrument fps logs and
parse them based on the workload markers. Produce per-action fps
metrics.
- Add simple timing results based on the workload markers
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
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.
- Now works with earlier versions of the DAQmx driver. This is needed to
be able to run the server on Linux systems, which support older
verisions of the driver only.
- DAQ error messages are now properly propaged to the client (PyDAQmx
uses "mess" rather than "message" attribute to store the message in
the Exception obejects).
- pylint and pep8 fixes
terminalsize was loaded from a location added to sys.path during
bootstrap. This appeared to be causing import issues. There is no longer
a good reason for terminalsize to be loaded that way, so just moved it
under wlauto.utils so that it can be loaded normally.
The struct used to read events is being padded when built for 64
bit platforms. The padding has been made explicit in the struct, and
matching padding was added when writing the events during recording.
Then number of input event files was being written as a size_t but read
as an int by revent. These types have different sizes with 64bit GCC,
causing revent not being able to replay recorded files. This comint
updates revent to use size_t when both reading and writing.