[v3,2/7] dts: simplify build options config

Message ID 20250115141809.3898708-3-luca.vizzarro@arm.com (mailing list archive)
State Superseded
Delegated to: Paul Szczepanek
Headers
Series dts: refactor configuration |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Luca Vizzarro Jan. 15, 2025, 2:18 p.m. UTC
From: Nicholas Pratte <npratte@iol.unh.edu>

The build options configuration contained redundant fields that were not
in use, and there is no future scope for their use.

Bugzilla ID: 1360

Signed-off-by: Nicholas Pratte <npratte@iol.unh.edu>
Signed-off-by: Luca Vizzarro <luca.vizzarro@arm.com>
Reviewed-by: Paul Szczepanek <paul.szczepanek@arm.com>
---
 dts/conf.yaml                                |  3 --
 dts/framework/config/__init__.py             | 43 --------------------
 dts/framework/test_result.py                 |  2 +-
 dts/framework/testbed_model/cpu.py           | 20 ++++++++-
 dts/framework/testbed_model/node.py          |  2 +-
 dts/framework/testbed_model/os_session.py    |  4 +-
 dts/framework/testbed_model/posix_session.py |  2 +-
 dts/framework/testbed_model/sut_node.py      |  6 ++-
 8 files changed, 28 insertions(+), 54 deletions(-)
  

Comments

Dean Marx Jan. 16, 2025, 8:53 p.m. UTC | #1
On Wed, Jan 15, 2025 at 9:19 AM Luca Vizzarro <luca.vizzarro@arm.com> wrote:
>
> From: Nicholas Pratte <npratte@iol.unh.edu>
>
> The build options configuration contained redundant fields that were not
> in use, and there is no future scope for their use.
>
> Bugzilla ID: 1360
>
> Signed-off-by: Nicholas Pratte <npratte@iol.unh.edu>
> Signed-off-by: Luca Vizzarro <luca.vizzarro@arm.com>
> Reviewed-by: Paul Szczepanek <paul.szczepanek@arm.com>

Reviewed-by: Dean Marx <dmarx@iol.unh.edu>
  
Nicholas Pratte Jan. 22, 2025, 5:45 p.m. UTC | #2
Reviewed-by: Nicholas Pratte <npratte@iol.unh.edu>

On Wed, Jan 15, 2025 at 9:19 AM Luca Vizzarro <luca.vizzarro@arm.com> wrote:
>
> From: Nicholas Pratte <npratte@iol.unh.edu>
>
> The build options configuration contained redundant fields that were not
> in use, and there is no future scope for their use.
>
> Bugzilla ID: 1360
>
> Signed-off-by: Nicholas Pratte <npratte@iol.unh.edu>
> Signed-off-by: Luca Vizzarro <luca.vizzarro@arm.com>
> Reviewed-by: Paul Szczepanek <paul.szczepanek@arm.com>
> ---
>  dts/conf.yaml                                |  3 --
>  dts/framework/config/__init__.py             | 43 --------------------
>  dts/framework/test_result.py                 |  2 +-
>  dts/framework/testbed_model/cpu.py           | 20 ++++++++-
>  dts/framework/testbed_model/node.py          |  2 +-
>  dts/framework/testbed_model/os_session.py    |  4 +-
>  dts/framework/testbed_model/posix_session.py |  2 +-
>  dts/framework/testbed_model/sut_node.py      |  6 ++-
>  8 files changed, 28 insertions(+), 54 deletions(-)
>
> diff --git a/dts/conf.yaml b/dts/conf.yaml
> index 80aba0d63a..4b6965b3d7 100644
> --- a/dts/conf.yaml
> +++ b/dts/conf.yaml
> @@ -14,9 +14,6 @@ test_runs:
>
>        # precompiled_build_dir: Commented out because `build_options` is defined.
>        build_options:
> -        arch: x86_64
> -        os: linux
> -        cpu: native
>          # the combination of the following two makes CC="ccache gcc"
>          compiler: gcc
>          compiler_wrapper: ccache # Optional.
> diff --git a/dts/framework/config/__init__.py b/dts/framework/config/__init__.py
> index 1127c6474a..3fa8f4fa8f 100644
> --- a/dts/framework/config/__init__.py
> +++ b/dts/framework/config/__init__.py
> @@ -63,22 +63,6 @@ class FrozenModel(BaseModel):
>      model_config = ConfigDict(frozen=True, extra="forbid")
>
>
> -@unique
> -class Architecture(StrEnum):
> -    r"""The supported architectures of :class:`~framework.testbed_model.node.Node`\s."""
> -
> -    #:
> -    i686 = auto()
> -    #:
> -    x86_64 = auto()
> -    #:
> -    x86_32 = auto()
> -    #:
> -    arm64 = auto()
> -    #:
> -    ppc64le = auto()
> -
> -
>  @unique
>  class OS(StrEnum):
>      r"""The supported operating systems of :class:`~framework.testbed_model.node.Node`\s."""
> @@ -91,22 +75,6 @@ class OS(StrEnum):
>      windows = auto()
>
>
> -@unique
> -class CPUType(StrEnum):
> -    r"""The supported CPUs of :class:`~framework.testbed_model.node.Node`\s."""
> -
> -    #:
> -    native = auto()
> -    #:
> -    armv8a = auto()
> -    #:
> -    dpaa2 = auto()
> -    #:
> -    thunderx = auto()
> -    #:
> -    xgene1 = auto()
> -
> -
>  @unique
>  class Compiler(StrEnum):
>      r"""The supported compilers of :class:`~framework.testbed_model.node.Node`\s."""
> @@ -351,23 +319,12 @@ class DPDKBuildOptionsConfiguration(FrozenModel):
>      The build options used for building DPDK.
>      """
>
> -    #: The target architecture to build for.
> -    arch: Architecture
> -    #: The target OS to build for.
> -    os: OS
> -    #: The target CPU to build for.
> -    cpu: CPUType
>      #: The compiler executable to use.
>      compiler: Compiler
>      #: This string will be put in front of the compiler when executing the build. Useful for adding
>      #: wrapper commands, such as ``ccache``.
>      compiler_wrapper: str = ""
>
> -    @cached_property
> -    def name(self) -> str:
> -        """The name of the compiler."""
> -        return f"{self.arch}-{self.os}-{self.cpu}-{self.compiler}"
> -
>
>  class DPDKUncompiledBuildConfiguration(BaseDPDKBuildConfiguration):
>      """DPDK uncompiled build configuration."""
> diff --git a/dts/framework/test_result.py b/dts/framework/test_result.py
> index ba7c1c9804..381f72b974 100644
> --- a/dts/framework/test_result.py
> +++ b/dts/framework/test_result.py
> @@ -337,7 +337,7 @@ class DTSResult(BaseResult):
>      """Stores environment information and test results from a DTS run.
>
>          * Test run level information, such as testbed, the test suite list and
> -          DPDK build configuration (compiler, target OS and cpu),
> +          DPDK build compiler configuration,
>          * Test suite and test case results,
>          * All errors that are caught and recorded during DTS execution.
>
> diff --git a/dts/framework/testbed_model/cpu.py b/dts/framework/testbed_model/cpu.py
> index 46bf13960d..d19fa5d597 100644
> --- a/dts/framework/testbed_model/cpu.py
> +++ b/dts/framework/testbed_model/cpu.py
> @@ -1,5 +1,6 @@
>  # SPDX-License-Identifier: BSD-3-Clause
>  # Copyright(c) 2023 PANTHEON.tech s.r.o.
> +# Copyright(c) 2025 Arm Limited
>
>  """CPU core representation and filtering.
>
> @@ -21,8 +22,25 @@
>  from abc import ABC, abstractmethod
>  from collections.abc import Iterable, ValuesView
>  from dataclasses import dataclass
> +from enum import auto, unique
>
> -from framework.utils import expand_range
> +from framework.utils import StrEnum, expand_range
> +
> +
> +@unique
> +class Architecture(StrEnum):
> +    r"""The supported architectures of :class:`~framework.testbed_model.node.Node`\s."""
> +
> +    #:
> +    i686 = auto()
> +    #:
> +    x86_64 = auto()
> +    #:
> +    x86_32 = auto()
> +    #:
> +    aarch64 = auto()
> +    #:
> +    ppc64le = auto()
>
>
>  @dataclass(slots=True, frozen=True)
> diff --git a/dts/framework/testbed_model/node.py b/dts/framework/testbed_model/node.py
> index c56872aa99..08328ee482 100644
> --- a/dts/framework/testbed_model/node.py
> +++ b/dts/framework/testbed_model/node.py
> @@ -17,7 +17,6 @@
>
>  from framework.config import (
>      OS,
> -    Architecture,
>      DPDKBuildConfiguration,
>      NodeConfiguration,
>      TestRunConfiguration,
> @@ -26,6 +25,7 @@
>  from framework.logger import DTSLogger, get_dts_logger
>
>  from .cpu import (
> +    Architecture,
>      LogicalCore,
>      LogicalCoreCount,
>      LogicalCoreList,
> diff --git a/dts/framework/testbed_model/os_session.py b/dts/framework/testbed_model/os_session.py
> index 30d781c355..fcda9b3de1 100644
> --- a/dts/framework/testbed_model/os_session.py
> +++ b/dts/framework/testbed_model/os_session.py
> @@ -28,7 +28,7 @@
>  from dataclasses import dataclass
>  from pathlib import Path, PurePath, PurePosixPath
>
> -from framework.config import Architecture, NodeConfiguration
> +from framework.config import NodeConfiguration
>  from framework.logger import DTSLogger
>  from framework.remote_session import (
>      InteractiveRemoteSession,
> @@ -40,7 +40,7 @@
>  from framework.settings import SETTINGS
>  from framework.utils import MesonArgs, TarCompressionFormat
>
> -from .cpu import LogicalCore
> +from .cpu import Architecture, LogicalCore
>  from .port import Port
>
>
> diff --git a/dts/framework/testbed_model/posix_session.py b/dts/framework/testbed_model/posix_session.py
> index 220618cacc..981600e24c 100644
> --- a/dts/framework/testbed_model/posix_session.py
> +++ b/dts/framework/testbed_model/posix_session.py
> @@ -15,7 +15,6 @@
>  from collections.abc import Iterable
>  from pathlib import Path, PurePath, PurePosixPath
>
> -from framework.config import Architecture
>  from framework.exception import DPDKBuildError, RemoteCommandExecutionError
>  from framework.settings import SETTINGS
>  from framework.utils import (
> @@ -26,6 +25,7 @@
>      extract_tarball,
>  )
>
> +from .cpu import Architecture
>  from .os_session import OSSession, OSSessionInfo
>
>
> diff --git a/dts/framework/testbed_model/sut_node.py b/dts/framework/testbed_model/sut_node.py
> index a9dc0a474a..11d4b22089 100644
> --- a/dts/framework/testbed_model/sut_node.py
> +++ b/dts/framework/testbed_model/sut_node.py
> @@ -400,7 +400,7 @@ def _configure_dpdk_build(self, dpdk_build_config: DPDKBuildOptionsConfiguration
>              dpdk_build_config: A DPDK build configuration to test.
>          """
>          self._env_vars = {}
> -        self._env_vars.update(self.main_session.get_dpdk_build_env_vars(dpdk_build_config.arch))
> +        self._env_vars.update(self.main_session.get_dpdk_build_env_vars(self.arch))
>          if compiler_wrapper := dpdk_build_config.compiler_wrapper:
>              self._env_vars["CC"] = f"'{compiler_wrapper} {dpdk_build_config.compiler.name}'"
>          else:
> @@ -410,8 +410,10 @@ def _configure_dpdk_build(self, dpdk_build_config: DPDKBuildOptionsConfiguration
>              dpdk_build_config.compiler.name
>          )
>
> +        build_dir_name = f"{self.arch}-{self.config.os}-{dpdk_build_config.compiler}"
> +
>          self._remote_dpdk_build_dir = self.main_session.join_remote_path(
> -            self._remote_dpdk_tree_path, dpdk_build_config.name
> +            self._remote_dpdk_tree_path, build_dir_name
>          )
>
>      def _build_dpdk(self) -> None:
> --
> 2.43.0
>
  

Patch

diff --git a/dts/conf.yaml b/dts/conf.yaml
index 80aba0d63a..4b6965b3d7 100644
--- a/dts/conf.yaml
+++ b/dts/conf.yaml
@@ -14,9 +14,6 @@  test_runs:
 
       # precompiled_build_dir: Commented out because `build_options` is defined.
       build_options:
-        arch: x86_64
-        os: linux
-        cpu: native
         # the combination of the following two makes CC="ccache gcc"
         compiler: gcc
         compiler_wrapper: ccache # Optional.
diff --git a/dts/framework/config/__init__.py b/dts/framework/config/__init__.py
index 1127c6474a..3fa8f4fa8f 100644
--- a/dts/framework/config/__init__.py
+++ b/dts/framework/config/__init__.py
@@ -63,22 +63,6 @@  class FrozenModel(BaseModel):
     model_config = ConfigDict(frozen=True, extra="forbid")
 
 
-@unique
-class Architecture(StrEnum):
-    r"""The supported architectures of :class:`~framework.testbed_model.node.Node`\s."""
-
-    #:
-    i686 = auto()
-    #:
-    x86_64 = auto()
-    #:
-    x86_32 = auto()
-    #:
-    arm64 = auto()
-    #:
-    ppc64le = auto()
-
-
 @unique
 class OS(StrEnum):
     r"""The supported operating systems of :class:`~framework.testbed_model.node.Node`\s."""
@@ -91,22 +75,6 @@  class OS(StrEnum):
     windows = auto()
 
 
-@unique
-class CPUType(StrEnum):
-    r"""The supported CPUs of :class:`~framework.testbed_model.node.Node`\s."""
-
-    #:
-    native = auto()
-    #:
-    armv8a = auto()
-    #:
-    dpaa2 = auto()
-    #:
-    thunderx = auto()
-    #:
-    xgene1 = auto()
-
-
 @unique
 class Compiler(StrEnum):
     r"""The supported compilers of :class:`~framework.testbed_model.node.Node`\s."""
@@ -351,23 +319,12 @@  class DPDKBuildOptionsConfiguration(FrozenModel):
     The build options used for building DPDK.
     """
 
-    #: The target architecture to build for.
-    arch: Architecture
-    #: The target OS to build for.
-    os: OS
-    #: The target CPU to build for.
-    cpu: CPUType
     #: The compiler executable to use.
     compiler: Compiler
     #: This string will be put in front of the compiler when executing the build. Useful for adding
     #: wrapper commands, such as ``ccache``.
     compiler_wrapper: str = ""
 
-    @cached_property
-    def name(self) -> str:
-        """The name of the compiler."""
-        return f"{self.arch}-{self.os}-{self.cpu}-{self.compiler}"
-
 
 class DPDKUncompiledBuildConfiguration(BaseDPDKBuildConfiguration):
     """DPDK uncompiled build configuration."""
diff --git a/dts/framework/test_result.py b/dts/framework/test_result.py
index ba7c1c9804..381f72b974 100644
--- a/dts/framework/test_result.py
+++ b/dts/framework/test_result.py
@@ -337,7 +337,7 @@  class DTSResult(BaseResult):
     """Stores environment information and test results from a DTS run.
 
         * Test run level information, such as testbed, the test suite list and
-          DPDK build configuration (compiler, target OS and cpu),
+          DPDK build compiler configuration,
         * Test suite and test case results,
         * All errors that are caught and recorded during DTS execution.
 
diff --git a/dts/framework/testbed_model/cpu.py b/dts/framework/testbed_model/cpu.py
index 46bf13960d..d19fa5d597 100644
--- a/dts/framework/testbed_model/cpu.py
+++ b/dts/framework/testbed_model/cpu.py
@@ -1,5 +1,6 @@ 
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2023 PANTHEON.tech s.r.o.
+# Copyright(c) 2025 Arm Limited
 
 """CPU core representation and filtering.
 
@@ -21,8 +22,25 @@ 
 from abc import ABC, abstractmethod
 from collections.abc import Iterable, ValuesView
 from dataclasses import dataclass
+from enum import auto, unique
 
-from framework.utils import expand_range
+from framework.utils import StrEnum, expand_range
+
+
+@unique
+class Architecture(StrEnum):
+    r"""The supported architectures of :class:`~framework.testbed_model.node.Node`\s."""
+
+    #:
+    i686 = auto()
+    #:
+    x86_64 = auto()
+    #:
+    x86_32 = auto()
+    #:
+    aarch64 = auto()
+    #:
+    ppc64le = auto()
 
 
 @dataclass(slots=True, frozen=True)
diff --git a/dts/framework/testbed_model/node.py b/dts/framework/testbed_model/node.py
index c56872aa99..08328ee482 100644
--- a/dts/framework/testbed_model/node.py
+++ b/dts/framework/testbed_model/node.py
@@ -17,7 +17,6 @@ 
 
 from framework.config import (
     OS,
-    Architecture,
     DPDKBuildConfiguration,
     NodeConfiguration,
     TestRunConfiguration,
@@ -26,6 +25,7 @@ 
 from framework.logger import DTSLogger, get_dts_logger
 
 from .cpu import (
+    Architecture,
     LogicalCore,
     LogicalCoreCount,
     LogicalCoreList,
diff --git a/dts/framework/testbed_model/os_session.py b/dts/framework/testbed_model/os_session.py
index 30d781c355..fcda9b3de1 100644
--- a/dts/framework/testbed_model/os_session.py
+++ b/dts/framework/testbed_model/os_session.py
@@ -28,7 +28,7 @@ 
 from dataclasses import dataclass
 from pathlib import Path, PurePath, PurePosixPath
 
-from framework.config import Architecture, NodeConfiguration
+from framework.config import NodeConfiguration
 from framework.logger import DTSLogger
 from framework.remote_session import (
     InteractiveRemoteSession,
@@ -40,7 +40,7 @@ 
 from framework.settings import SETTINGS
 from framework.utils import MesonArgs, TarCompressionFormat
 
-from .cpu import LogicalCore
+from .cpu import Architecture, LogicalCore
 from .port import Port
 
 
diff --git a/dts/framework/testbed_model/posix_session.py b/dts/framework/testbed_model/posix_session.py
index 220618cacc..981600e24c 100644
--- a/dts/framework/testbed_model/posix_session.py
+++ b/dts/framework/testbed_model/posix_session.py
@@ -15,7 +15,6 @@ 
 from collections.abc import Iterable
 from pathlib import Path, PurePath, PurePosixPath
 
-from framework.config import Architecture
 from framework.exception import DPDKBuildError, RemoteCommandExecutionError
 from framework.settings import SETTINGS
 from framework.utils import (
@@ -26,6 +25,7 @@ 
     extract_tarball,
 )
 
+from .cpu import Architecture
 from .os_session import OSSession, OSSessionInfo
 
 
diff --git a/dts/framework/testbed_model/sut_node.py b/dts/framework/testbed_model/sut_node.py
index a9dc0a474a..11d4b22089 100644
--- a/dts/framework/testbed_model/sut_node.py
+++ b/dts/framework/testbed_model/sut_node.py
@@ -400,7 +400,7 @@  def _configure_dpdk_build(self, dpdk_build_config: DPDKBuildOptionsConfiguration
             dpdk_build_config: A DPDK build configuration to test.
         """
         self._env_vars = {}
-        self._env_vars.update(self.main_session.get_dpdk_build_env_vars(dpdk_build_config.arch))
+        self._env_vars.update(self.main_session.get_dpdk_build_env_vars(self.arch))
         if compiler_wrapper := dpdk_build_config.compiler_wrapper:
             self._env_vars["CC"] = f"'{compiler_wrapper} {dpdk_build_config.compiler.name}'"
         else:
@@ -410,8 +410,10 @@  def _configure_dpdk_build(self, dpdk_build_config: DPDKBuildOptionsConfiguration
             dpdk_build_config.compiler.name
         )
 
+        build_dir_name = f"{self.arch}-{self.config.os}-{dpdk_build_config.compiler}"
+
         self._remote_dpdk_build_dir = self.main_session.join_remote_path(
-            self._remote_dpdk_tree_path, dpdk_build_config.name
+            self._remote_dpdk_tree_path, build_dir_name
         )
 
     def _build_dpdk(self) -> None: