1
0
mirror of https://github.com/ARM-software/workload-automation.git synced 2025-02-20 11:58:55 +00:00

fw/instrument: use signal priorities

Use signal priorities to define priority decorators, rather than
defining own priority enum.
This commit is contained in:
Sergei Trofimov 2018-05-30 11:22:14 +01:00 committed by Marc Bonnici
parent d79e8324f0
commit 864ded60ae
3 changed files with 15 additions and 15 deletions

View File

@ -18,7 +18,8 @@ import sys
import string
from copy import copy
from wa.framework.instrument import SIGNAL_MAP, Priority
from wa.framework.instrument import SIGNAL_MAP
from wa.framework.signal import CallbackPriority
from wa.utils.doc import format_simple_table
@ -36,7 +37,7 @@ def escape_trailing_underscore(value):
def generate_instrument_method_map(outfile):
signal_table = format_simple_table([(k, v) for k, v in SIGNAL_MAP.iteritems()],
headers=['method name', 'signal'], align='<<')
priority_table = format_simple_table(zip(Priority.names, Priority.values),
priority_table = format_simple_table(zip(CallbackPriority.names, CallbackPriority.values),
headers=['decorator', 'priority'], align='<>')
with open(OUTPUT_TEMPLATE_FILE) as fh:
template = string.Template(fh.read())

View File

@ -7,8 +7,8 @@ from wa.framework.exception import (CommandError, ConfigError, HostError, Instru
PluginLoaderError, ResourceError, TargetError,
TargetNotRespondingError, TimeoutError, ToolError,
ValidationError, WAError, WorkloadError, WorkerThreadError)
from wa.framework.instrument import (Instrument, very_slow, slow, normal, fast,
very_fast)
from wa.framework.instrument import (Instrument, extremely_slow, very_slow, slow, normal, fast,
very_fast, extremely_fast)
from wa.framework.output import RunOutput, discover_wa_outputs
from wa.framework.output_processor import OutputProcessor
from wa.framework.plugin import Plugin, Parameter, Alias

View File

@ -108,7 +108,7 @@ from wa.framework.exception import (WAError, TargetNotRespondingError, TimeoutEr
WorkloadError, TargetError)
from wa.utils.log import log_error
from wa.utils.misc import isiterable
from wa.utils.types import identifier, enum, level
from wa.utils.types import identifier, level
logger = logging.getLogger('instruments')
@ -156,9 +156,6 @@ SIGNAL_MAP = OrderedDict([
])
Priority = enum(['very_slow', 'slow', 'normal', 'fast', 'very_fast'], -20, 10)
def get_priority(func):
return getattr(getattr(func, 'im_func', func),
'priority', Priority.normal)
@ -169,8 +166,8 @@ def priority(priority):
def wrapper(*args, **kwargs):
return func(*args, **kwargs)
wrapper.func_name = func.func_name
if priority in Priority.levels:
wrapper.priority = Priority(priority)
if priority in signal.CallbackPriority.levels:
wrapper.priority = signal.CallbackPriority(priority)
else:
if not isinstance(priority, int):
msg = 'Invalid priorty "{}"; must be an int or one of {}'
@ -180,11 +177,13 @@ def priority(priority):
return decorate
very_slow = priority(Priority.very_slow)
slow = priority(Priority.slow)
normal = priority(Priority.normal)
fast = priority(Priority.fast)
very_fast = priority(Priority.very_fast)
extremely_slow = priority(signal.CallbackPriority.extremely_low)
very_slow = priority(signal.CallbackPriority.very_low)
slow = priority(signal.CallbackPriority.low)
normal = priority(signal.CallbackPriority.normal)
fast = priority(signal.CallbackPriority.high)
very_fast = priority(signal.CallbackPriority.very_high)
extremely_fast = priority(signal.CallbackPriority.extremely_high)
installed = []