From e04543fd411e74c950e8fa9699214ba139254a46 Mon Sep 17 00:00:00 2001 From: Douglas Raillard Date: Tue, 10 Oct 2023 11:12:05 +0100 Subject: [PATCH 1/2] lisa.tests.staging.utilclamp: Fix uclamp value type FIX Ensure uclamp values are integers and not float. --- lisa/tests/staging/utilclamp.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisa/tests/staging/utilclamp.py b/lisa/tests/staging/utilclamp.py index 33152243c..c34f4e037 100644 --- a/lisa/tests/staging/utilclamp.py +++ b/lisa/tests/staging/utilclamp.py @@ -161,6 +161,8 @@ class UtilClamp(RTATestBundle, TestBundle): # by schedutil uclamp *= cls.CAPACITY_MARGIN util = uclamp / 2 + + uclamp = int(uclamp) name = f'uclamp-{uclamp}' return (name, (uclamp, util)) -- GitLab From 53226f687fd457d46d5259026f2240882538bd26 Mon Sep 17 00:00:00 2001 From: Douglas Raillard Date: Tue, 10 Oct 2023 11:10:24 +0100 Subject: [PATCH 2/2] lisa.wlgen.rta: Fix ComposableMultiConcretePropertyBase._ATTRIBUTES type hint FIX Fix type hints in _ATTRIBUTES so that they are accurate, and then use them to validate only as they cannot generally be used to convert a value. --- lisa/wlgen/rta.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/lisa/wlgen/rta.py b/lisa/wlgen/rta.py index a653152f7..21ff23c69 100644 --- a/lisa/wlgen/rta.py +++ b/lisa/wlgen/rta.py @@ -193,6 +193,7 @@ from itertools import chain, product, starmap, islice from operator import itemgetter from shlex import quote from statistics import mean +import typing from devlib import TargetStableError from devlib.target import KernelConfigTristate @@ -228,6 +229,7 @@ from lisa.wlgen.workload import Workload from lisa.conf import DeferredValueComputationError from lisa.monad import StateDiscard, TransformerStack from lisa.fuzz import GenMonad +from lisa._generic import check_type def _to_us(x): @@ -2346,7 +2348,15 @@ class ComposableMultiConcretePropertyBase(MultiConcreteProperty): except KeyError: raise TypeError(f'Unknown parameter "{key}". Only {sorted(self._ATTRIBUTES)} are allowed') else: - return desc.get('type_', lambda x: x)(val) + try: + hint = desc['type_'] + except KeyError: + pass + else: + hint = typing.Union[hint, self._ATTRIBUTE_DEFAULT.__class__] + check_type(val, hint) + + return val attrs = { key: check(key, val) @@ -2390,9 +2400,12 @@ class ComposableMultiConcretePropertyBase(MultiConcreteProperty): @classmethod def _get_rst_param_doc(cls): + default = cls._ATTRIBUTE_DEFAULT + default = None if default is None else default.__class__.__qualname__ + def make(param, desc): fst = f':param {param}: {desc["doc"]}' - snd = f':type {param}: {get_cls_name(desc["type_"])} or None' + snd = f':type {param}: {get_cls_name(desc["type_"])} or {default}' return f'{fst}\n{snd}' return '\n\n'.join(starmap(make, cls._ATTRIBUTES.items())) @@ -2957,7 +2970,7 @@ class PeriodicWload(WloadPropertyBase, ComposableMultiConcretePropertyBase): type_=float, ), 'duration': dict( - doc="Duration of the workload in seconds. If ``None``, keep running forever", + doc="Duration of the workload in seconds.", type_=float, ), 'scale_for_cpu': dict( -- GitLab