Tested-by: Nicholas Pratte <npra...@iol.unh.edu>
Reviewed-by: Nicholas Pratte <npra...@iol.unh.edu>

On Thu, May 9, 2024 at 7:21 AM Luca Vizzarro <luca.vizza...@arm.com> wrote:
>
> Move EalParams to its own module to avoid circular dependencies.
>
> Signed-off-by: Luca Vizzarro <luca.vizza...@arm.com>
> Reviewed-by: Paul Szczepanek <paul.szczepa...@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
>

Reply via email to