mirror of
https://github.com/ARM-software/workload-automation.git
synced 2025-02-22 04:49:00 +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
|
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
|
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
|
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
|
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
|
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
|
and afterRun phase) can be defined and this helps track the cause of errors in
|
||||||
case an unexpected state is encountered.
|
case an unexpected state is encountered.
|
||||||
|
|
||||||
.. code-block:: python
|
.. code-block:: yaml
|
||||||
|
|
||||||
workload_name: angrybirds
|
workload_name: angrybirds
|
||||||
|
|
||||||
|
@ -439,6 +439,7 @@ AndroidBenchmark = ApkWorkload # backward compatibility
|
|||||||
|
|
||||||
|
|
||||||
class ReventWorkload(Workload):
|
class ReventWorkload(Workload):
|
||||||
|
# pylint: disable=attribute-defined-outside-init
|
||||||
|
|
||||||
def __init__(self, device, _call_super=True, **kwargs):
|
def __init__(self, device, _call_super=True, **kwargs):
|
||||||
if _call_super:
|
if _call_super:
|
||||||
@ -452,7 +453,9 @@ class ReventWorkload(Workload):
|
|||||||
self.on_device_setup_revent = None
|
self.on_device_setup_revent = None
|
||||||
self.on_device_run_revent = None
|
self.on_device_run_revent = None
|
||||||
self.statedefs_dir = None
|
self.statedefs_dir = None
|
||||||
self.check_states = None
|
|
||||||
|
if self.check_states:
|
||||||
|
state_detector.check_match_state_dependencies()
|
||||||
|
|
||||||
def setup(self, context):
|
def setup(self, context):
|
||||||
self.revent_setup_file = context.resolver.get(ReventFile(self, 'setup'))
|
self.revent_setup_file = context.resolver.get(ReventFile(self, 'setup'))
|
||||||
|
@ -40,6 +40,8 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
imutils = None
|
imutils = None
|
||||||
|
|
||||||
|
from wlauto.exceptions import HostError
|
||||||
|
|
||||||
|
|
||||||
class StateDefinitionError(RuntimeError):
|
class StateDefinitionError(RuntimeError):
|
||||||
pass
|
pass
|
||||||
@ -58,10 +60,14 @@ def auto_canny(image, sigma=0.33):
|
|||||||
return edged
|
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
|
def match_state(screenshot_file, defpath, state_definitions): # pylint: disable=too-many-locals
|
||||||
# check dependencies
|
# check dependencies
|
||||||
if np is None or cv2 is None or imutils is None:
|
check_match_state_dependencies()
|
||||||
raise RuntimeError("State detection requires numpy, opencv (cv2) and imutils.")
|
|
||||||
|
|
||||||
# check if file exists, then load screenshot into opencv and create edge map
|
# check if file exists, then load screenshot into opencv and create edge map
|
||||||
if not os.path.isfile(screenshot_file):
|
if not os.path.isfile(screenshot_file):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user