From: Aleš Date: Tue, 21 Sep 2021 18:58:34 +0000 (+0200) Subject: datamodel: types: SizeUnit: added method to return value in bytes X-Git-Tag: v6.0.0a1~125^2~2^2~5 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=3d58962d23f62ec338077f88b6529c526268a46e;p=thirdparty%2Fknot-resolver.git datamodel: types: SizeUnit: added method to return value in bytes --- diff --git a/manager/knot_resolver_manager/datamodel/types.py b/manager/knot_resolver_manager/datamodel/types.py index 440d7226e..e70bd89d3 100644 --- a/manager/knot_resolver_manager/datamodel/types.py +++ b/manager/knot_resolver_manager/datamodel/types.py @@ -77,6 +77,9 @@ class SizeUnit(Unit): _re = re.compile(r"^([0-9]+)\s{0,1}([BKMG]){0,1}$") _units = {"B": 1, "K": 1024, "M": 1024 ** 2, "G": 1024 ** 3} + def bytes(self) -> int: + return self._value + class TimeUnit(Unit): _re = re.compile(r"^(\d+)\s{0,1}([smhd]s?){0,1}$") @@ -136,10 +139,10 @@ class Listen(SchemaNode): _PREVIOUS_SCHEMA = Raw typ: ListenType - ip: Optional[Union[ipaddress.IPv4Address, ipaddress.IPv6Address]] = None - port: Optional[int] = None - unix_socket: Optional[AnyPath] = None - interface: Optional[str] = None + ip: Optional[Union[ipaddress.IPv4Address, ipaddress.IPv6Address]] + port: Optional[int] + unix_socket: Optional[AnyPath] + interface: Optional[str] def _typ(self, origin: Raw): present = { diff --git a/manager/tests/datamodel/test_datamodel_types.py b/manager/tests/datamodel/test_datamodel_types.py index 340ebf8c2..bd8904115 100644 --- a/manager/tests/datamodel/test_datamodel_types.py +++ b/manager/tests/datamodel/test_datamodel_types.py @@ -40,24 +40,15 @@ def test_time_unit(): def test_parsing_units(): - class TestClass(SchemaNode): + class TestSchema(SchemaNode): size: SizeUnit time: TimeUnit - class TestClassStrict(SchemaNode): - size: int - time: int - - def _validate(self) -> None: - pass - - obj = TestClass({"size": "3K", "time": "10m"}) - assert obj.size == SizeUnit("3072B") - assert obj.time == TimeUnit("10m") - - strict = TestClassStrict(obj) - assert strict.size == 3 * 1024 - assert strict.time == 10 * 60 * 1000 + o = TestSchema({"size": "3K", "time": "10m"}) + assert o.size == SizeUnit("3072B") + assert o.time == TimeUnit("10m") + assert o.size.bytes() == 3072 + assert o.time.seconds() == 10 * 60 def test_anypath():