mirror of
https://github.com/ARM-software/workload-automation.git
synced 2025-02-20 20:09:11 +00:00
ReventWorkload: State detection fixes
- Corrected code highlighting and phase names in documentation - Fixed check_states paremeter not being honoured - Moved state dependencies check to happen earlier in execution and to be a user facing error
This commit is contained in:
parent
0f2bc17eca
commit
9fffa7958a
@ -246,7 +246,7 @@ definition.yaml file
|
||||
This defines each state of the workload and lists which templates are expected
|
||||
to be found and how many are required to be detected for a conclusive match. It
|
||||
also defines the expected state in each workload phase where a state detection
|
||||
is run (currently those are setupComplete and runComplete).
|
||||
is run (currently those are setup_complete and run_complete).
|
||||
|
||||
Templates are picture elements to be matched in a screenshot. Each template
|
||||
mentioned in the definition file should be placed as a file with the same name
|
||||
@ -260,7 +260,7 @@ understand the format. Note that more than just two states (for the afterSetup
|
||||
and afterRun phase) can be defined and this helps track the cause of errors in
|
||||
case an unexpected state is encountered.
|
||||
|
||||
.. code-block:: python
|
||||
.. code-block:: yaml
|
||||
|
||||
workload_name: angrybirds
|
||||
|
||||
|
@ -240,7 +240,7 @@ class ApkWorkload(Workload):
|
||||
context.add_classifiers(apk_version=self.apk_version)
|
||||
|
||||
if self.launch_main:
|
||||
self.launch_package() # launch default activity without intent data
|
||||
self.launch_package() # launch default activity without intent data
|
||||
self.device.execute('am kill-all') # kill all *background* activities
|
||||
self.device.clear_logcat()
|
||||
|
||||
@ -439,6 +439,7 @@ AndroidBenchmark = ApkWorkload # backward compatibility
|
||||
|
||||
|
||||
class ReventWorkload(Workload):
|
||||
# pylint: disable=attribute-defined-outside-init
|
||||
|
||||
def __init__(self, device, _call_super=True, **kwargs):
|
||||
if _call_super:
|
||||
@ -452,7 +453,9 @@ class ReventWorkload(Workload):
|
||||
self.on_device_setup_revent = None
|
||||
self.on_device_run_revent = None
|
||||
self.statedefs_dir = None
|
||||
self.check_states = None
|
||||
|
||||
if self.check_states:
|
||||
state_detector.check_match_state_dependencies()
|
||||
|
||||
def setup(self, context):
|
||||
self.revent_setup_file = context.resolver.get(ReventFile(self, 'setup'))
|
||||
|
@ -40,6 +40,8 @@ try:
|
||||
except ImportError:
|
||||
imutils = None
|
||||
|
||||
from wlauto.exceptions import HostError
|
||||
|
||||
|
||||
class StateDefinitionError(RuntimeError):
|
||||
pass
|
||||
@ -58,10 +60,14 @@ def auto_canny(image, sigma=0.33):
|
||||
return edged
|
||||
|
||||
|
||||
def check_match_state_dependencies():
|
||||
if np is None or cv2 is None or imutils is None:
|
||||
raise HostError("State detection requires numpy, opencv (cv2) and imutils.")
|
||||
|
||||
|
||||
def match_state(screenshot_file, defpath, state_definitions): # pylint: disable=too-many-locals
|
||||
# check dependencies
|
||||
if np is None or cv2 is None or imutils is None:
|
||||
raise RuntimeError("State detection requires numpy, opencv (cv2) and imutils.")
|
||||
check_match_state_dependencies()
|
||||
|
||||
# check if file exists, then load screenshot into opencv and create edge map
|
||||
if not os.path.isfile(screenshot_file):
|
||||
|
Loading…
x
Reference in New Issue
Block a user