[v2,3/8] dts: refactor EalParams

Message ID 20240509112057.1167947-4-luca.vizzarro@arm.com (mailing list archive)
State Superseded
Delegated to: Thomas Monjalon
Headers
Series dts: add testpmd params |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Luca Vizzarro May 9, 2024, 11:20 a.m. UTC
  Move EalParams to its own module to avoid circular dependencies.

Signed-off-by: Luca Vizzarro <luca.vizzarro@arm.com>
Reviewed-by: Paul Szczepanek <paul.szczepanek@arm.com>
---
 dts/framework/params/eal.py                   | 50 +++++++++++++++++++
 dts/framework/remote_session/testpmd_shell.py |  2 +-
 dts/framework/testbed_model/sut_node.py       | 42 +---------------
 3 files changed, 53 insertions(+), 41 deletions(-)
 create mode 100644 dts/framework/params/eal.py
  

Comments

Nicholas Pratte May 28, 2024, 3:44 p.m. UTC | #1
Tested-by: Nicholas Pratte <npratte@iol.unh.edu>
Reviewed-by: Nicholas Pratte <npratte@iol.unh.edu>

On Thu, May 9, 2024 at 7:21 AM Luca Vizzarro <luca.vizzarro@arm.com> wrote:
>
> Move EalParams to its own module to avoid circular dependencies.
>
> Signed-off-by: Luca Vizzarro <luca.vizzarro@arm.com>
> Reviewed-by: Paul Szczepanek <paul.szczepanek@arm.com>
> ---
>  dts/framework/params/eal.py                   | 50 +++++++++++++++++++
>  dts/framework/remote_session/testpmd_shell.py |  2 +-
>  dts/framework/testbed_model/sut_node.py       | 42 +---------------
>  3 files changed, 53 insertions(+), 41 deletions(-)
>  create mode 100644 dts/framework/params/eal.py
>
> diff --git a/dts/framework/params/eal.py b/dts/framework/params/eal.py
> new file mode 100644
> index 0000000000..bbdbc8f334
> --- /dev/null
> +++ b/dts/framework/params/eal.py
> @@ -0,0 +1,50 @@
> +# SPDX-License-Identifier: BSD-3-Clause
> +# Copyright(c) 2024 Arm Limited
> +
> +"""Module representing the DPDK EAL-related parameters."""
> +
> +from dataclasses import dataclass, field
> +from typing import Literal
> +
> +from framework.params import Params, Switch
> +from framework.testbed_model.cpu import LogicalCoreList
> +from framework.testbed_model.port import Port
> +from framework.testbed_model.virtual_device import VirtualDevice
> +
> +
> +def _port_to_pci(port: Port) -> str:
> +    return port.pci
> +
> +
> +@dataclass(kw_only=True)
> +class EalParams(Params):
> +    """The environment abstraction layer parameters.
> +
> +    Attributes:
> +        lcore_list: The list of logical cores to use.
> +        memory_channels: The number of memory channels to use.
> +        prefix: Set the file prefix string with which to start DPDK, e.g.: ``prefix="vf"``.
> +        no_pci: Switch to disable PCI bus, e.g.: ``no_pci=True``.
> +        vdevs: Virtual devices, e.g.::
> +            vdevs=[
> +                VirtualDevice('net_ring0'),
> +                VirtualDevice('net_ring1')
> +            ]
> +        ports: The list of ports to allow.
> +        other_eal_param: user defined DPDK EAL parameters, e.g.:
> +                ``other_eal_param='--single-file-segments'``
> +    """
> +
> +    lcore_list: LogicalCoreList = field(metadata=Params.short("l"))
> +    memory_channels: int = field(metadata=Params.short("n"))
> +    prefix: str = field(metadata=Params.long("file-prefix"))
> +    no_pci: Switch = None
> +    vdevs: list[VirtualDevice] | None = field(
> +        default=None, metadata=Params.multiple() | Params.long("vdev")
> +    )
> +    ports: list[Port] | None = field(
> +        default=None,
> +        metadata=Params.convert_value(_port_to_pci) | Params.multiple() | Params.short("a"),
> +    )
> +    other_eal_param: Params | None = None
> +    _separator: Literal[True] = field(default=True, init=False, metadata=Params.short("-"))
> diff --git a/dts/framework/remote_session/testpmd_shell.py b/dts/framework/remote_session/testpmd_shell.py
> index 7eced27096..841d456a2f 100644
> --- a/dts/framework/remote_session/testpmd_shell.py
> +++ b/dts/framework/remote_session/testpmd_shell.py
> @@ -21,8 +21,8 @@
>  from typing import Callable, ClassVar
>
>  from framework.exception import InteractiveCommandExecutionError
> +from framework.params.eal import EalParams
>  from framework.settings import SETTINGS
> -from framework.testbed_model.sut_node import EalParams
>  from framework.utils import StrEnum
>
>  from .interactive_shell import InteractiveShell
> diff --git a/dts/framework/testbed_model/sut_node.py b/dts/framework/testbed_model/sut_node.py
> index c886590979..e1163106a3 100644
> --- a/dts/framework/testbed_model/sut_node.py
> +++ b/dts/framework/testbed_model/sut_node.py
> @@ -15,9 +15,8 @@
>  import os
>  import tarfile
>  import time
> -from dataclasses import dataclass, field
>  from pathlib import PurePath
> -from typing import Literal, Type
> +from typing import Type
>
>  from framework.config import (
>      BuildTargetConfiguration,
> @@ -26,6 +25,7 @@
>      SutNodeConfiguration,
>  )
>  from framework.params import Params, Switch
> +from framework.params.eal import EalParams
>  from framework.remote_session import CommandResult
>  from framework.settings import SETTINGS
>  from framework.utils import MesonArgs
> @@ -37,44 +37,6 @@
>  from .virtual_device import VirtualDevice
>
>
> -def _port_to_pci(port: Port) -> str:
> -    return port.pci
> -
> -
> -@dataclass(kw_only=True)
> -class EalParams(Params):
> -    """The environment abstraction layer parameters.
> -
> -    Attributes:
> -        lcore_list: The list of logical cores to use.
> -        memory_channels: The number of memory channels to use.
> -        prefix: Set the file prefix string with which to start DPDK, e.g.: ``prefix="vf"``.
> -        no_pci: Switch to disable PCI bus, e.g.: ``no_pci=True``.
> -        vdevs: Virtual devices, e.g.::
> -            vdevs=[
> -                VirtualDevice('net_ring0'),
> -                VirtualDevice('net_ring1')
> -            ]
> -        ports: The list of ports to allow.
> -        other_eal_param: user defined DPDK EAL parameters, e.g.:
> -                ``other_eal_param='--single-file-segments'``
> -    """
> -
> -    lcore_list: LogicalCoreList = field(metadata=Params.short("l"))
> -    memory_channels: int = field(metadata=Params.short("n"))
> -    prefix: str = field(metadata=Params.long("file-prefix"))
> -    no_pci: Switch
> -    vdevs: list[VirtualDevice] | None = field(
> -        default=None, metadata=Params.multiple() | Params.long("vdev")
> -    )
> -    ports: list[Port] | None = field(
> -        default=None,
> -        metadata=Params.convert_value(_port_to_pci) | Params.multiple() | Params.short("a"),
> -    )
> -    other_eal_param: Params | None = None
> -    _separator: Literal[True] = field(default=True, init=False, metadata=Params.short("-"))
> -
> -
>  class SutNode(Node):
>      """The system under test node.
>
> --
> 2.34.1
>
  
Jeremy Spewock May 28, 2024, 9:05 p.m. UTC | #2
Reviewed-by: Jeremy Spewock <jspewock@iol.unh.edu>
  

Patch

diff --git a/dts/framework/params/eal.py b/dts/framework/params/eal.py
new file mode 100644
index 0000000000..bbdbc8f334
--- /dev/null
+++ b/dts/framework/params/eal.py
@@ -0,0 +1,50 @@ 
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2024 Arm Limited
+
+"""Module representing the DPDK EAL-related parameters."""
+
+from dataclasses import dataclass, field
+from typing import Literal
+
+from framework.params import Params, Switch
+from framework.testbed_model.cpu import LogicalCoreList
+from framework.testbed_model.port import Port
+from framework.testbed_model.virtual_device import VirtualDevice
+
+
+def _port_to_pci(port: Port) -> str:
+    return port.pci
+
+
+@dataclass(kw_only=True)
+class EalParams(Params):
+    """The environment abstraction layer parameters.
+
+    Attributes:
+        lcore_list: The list of logical cores to use.
+        memory_channels: The number of memory channels to use.
+        prefix: Set the file prefix string with which to start DPDK, e.g.: ``prefix="vf"``.
+        no_pci: Switch to disable PCI bus, e.g.: ``no_pci=True``.
+        vdevs: Virtual devices, e.g.::
+            vdevs=[
+                VirtualDevice('net_ring0'),
+                VirtualDevice('net_ring1')
+            ]
+        ports: The list of ports to allow.
+        other_eal_param: user defined DPDK EAL parameters, e.g.:
+                ``other_eal_param='--single-file-segments'``
+    """
+
+    lcore_list: LogicalCoreList = field(metadata=Params.short("l"))
+    memory_channels: int = field(metadata=Params.short("n"))
+    prefix: str = field(metadata=Params.long("file-prefix"))
+    no_pci: Switch = None
+    vdevs: list[VirtualDevice] | None = field(
+        default=None, metadata=Params.multiple() | Params.long("vdev")
+    )
+    ports: list[Port] | None = field(
+        default=None,
+        metadata=Params.convert_value(_port_to_pci) | Params.multiple() | Params.short("a"),
+    )
+    other_eal_param: Params | None = None
+    _separator: Literal[True] = field(default=True, init=False, metadata=Params.short("-"))
diff --git a/dts/framework/remote_session/testpmd_shell.py b/dts/framework/remote_session/testpmd_shell.py
index 7eced27096..841d456a2f 100644
--- a/dts/framework/remote_session/testpmd_shell.py
+++ b/dts/framework/remote_session/testpmd_shell.py
@@ -21,8 +21,8 @@ 
 from typing import Callable, ClassVar
 
 from framework.exception import InteractiveCommandExecutionError
+from framework.params.eal import EalParams
 from framework.settings import SETTINGS
-from framework.testbed_model.sut_node import EalParams
 from framework.utils import StrEnum
 
 from .interactive_shell import InteractiveShell
diff --git a/dts/framework/testbed_model/sut_node.py b/dts/framework/testbed_model/sut_node.py
index c886590979..e1163106a3 100644
--- a/dts/framework/testbed_model/sut_node.py
+++ b/dts/framework/testbed_model/sut_node.py
@@ -15,9 +15,8 @@ 
 import os
 import tarfile
 import time
-from dataclasses import dataclass, field
 from pathlib import PurePath
-from typing import Literal, Type
+from typing import Type
 
 from framework.config import (
     BuildTargetConfiguration,
@@ -26,6 +25,7 @@ 
     SutNodeConfiguration,
 )
 from framework.params import Params, Switch
+from framework.params.eal import EalParams
 from framework.remote_session import CommandResult
 from framework.settings import SETTINGS
 from framework.utils import MesonArgs
@@ -37,44 +37,6 @@ 
 from .virtual_device import VirtualDevice
 
 
-def _port_to_pci(port: Port) -> str:
-    return port.pci
-
-
-@dataclass(kw_only=True)
-class EalParams(Params):
-    """The environment abstraction layer parameters.
-
-    Attributes:
-        lcore_list: The list of logical cores to use.
-        memory_channels: The number of memory channels to use.
-        prefix: Set the file prefix string with which to start DPDK, e.g.: ``prefix="vf"``.
-        no_pci: Switch to disable PCI bus, e.g.: ``no_pci=True``.
-        vdevs: Virtual devices, e.g.::
-            vdevs=[
-                VirtualDevice('net_ring0'),
-                VirtualDevice('net_ring1')
-            ]
-        ports: The list of ports to allow.
-        other_eal_param: user defined DPDK EAL parameters, e.g.:
-                ``other_eal_param='--single-file-segments'``
-    """
-
-    lcore_list: LogicalCoreList = field(metadata=Params.short("l"))
-    memory_channels: int = field(metadata=Params.short("n"))
-    prefix: str = field(metadata=Params.long("file-prefix"))
-    no_pci: Switch
-    vdevs: list[VirtualDevice] | None = field(
-        default=None, metadata=Params.multiple() | Params.long("vdev")
-    )
-    ports: list[Port] | None = field(
-        default=None,
-        metadata=Params.convert_value(_port_to_pci) | Params.multiple() | Params.short("a"),
-    )
-    other_eal_param: Params | None = None
-    _separator: Literal[True] = field(default=True, init=False, metadata=Params.short("-"))
-
-
 class SutNode(Node):
     """The system under test node.