[v2] dts: add SUT cleanup to framework

Message ID 20250130221324.75711-1-dmarx@iol.unh.edu (mailing list archive)
State Superseded
Delegated to: Paul Szczepanek
Headers
Series [v2] dts: add SUT cleanup to framework |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/loongarch-compilation success Compilation OK
ci/loongarch-unit-testing success Unit Testing PASS
ci/github-robot: build success github build: passed
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/intel-Functional success Functional PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-marvell-Functional success Functional Testing PASS
ci/iol-unit-amd64-testing success Testing PASS
ci/iol-abi-testing success Testing PASS
ci/iol-sample-apps-testing success Testing PASS
ci/iol-unit-arm64-testing success Testing PASS
ci/iol-compile-arm64-testing success Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-compile-amd64-testing success Testing PASS

Commit Message

Dean Marx Jan. 30, 2025, 10:13 p.m. UTC
Add method cleanup_sut to framework that removes a
DPDK source from a SUT node at the conclusion of a testrun.
This will only run when the DPDK source is being copied
from the DTS engine node during the testrun
(when remote=false in the conf.yaml).

Signed-off-by: Dean Marx <dmarx@iol.unh.edu>
---
 dts/framework/runner.py                 |  2 +-
 dts/framework/testbed_model/sut_node.py | 21 ++++++++++++++++++---
 2 files changed, 19 insertions(+), 4 deletions(-)
  

Comments

Patrick Robb Feb. 9, 2025, 9:26 p.m. UTC | #1
On Thu, Jan 30, 2025 at 5:13 PM Dean Marx <dmarx@iol.unh.edu> wrote:

> Add method cleanup_sut to framework that removes a
> DPDK source from a SUT node at the conclusion of a testrun.
> This will only run when the DPDK source is being copied
> from the DTS engine node during the testrun
> (when remote=false in the conf.yaml).
>
> Signed-off-by: Dean Marx <dmarx@iol.unh.edu>
> ---
>  dts/framework/runner.py                 |  2 +-
>  dts/framework/testbed_model/sut_node.py | 21 ++++++++++++++++++---
>  2 files changed, 19 insertions(+), 4 deletions(-)
>
> diff --git a/dts/framework/runner.py b/dts/framework/runner.py
> index 9f9789cf49..367034e038 100644
> --- a/dts/framework/runner.py
> +++ b/dts/framework/runner.py
> @@ -336,7 +336,7 @@ def _run_test_run(
>          finally:
>              try:
>                  self._logger.set_stage(DtsStage.test_run_teardown)
> -                sut_node.tear_down_test_run()
> +
> sut_node.tear_down_test_run(test_run_config.dpdk_config.dpdk_location)
>                  tg_node.tear_down_test_run()
>                  test_run_result.update_teardown(Result.PASS)
>              except Exception as e:
> diff --git a/dts/framework/testbed_model/sut_node.py
> b/dts/framework/testbed_model/sut_node.py
> index 483733cede..c73500b146 100644
> --- a/dts/framework/testbed_model/sut_node.py
> +++ b/dts/framework/testbed_model/sut_node.py
> @@ -188,6 +188,19 @@ def path_to_devbind_script(self) -> PurePath | str:
>              )
>          return self._path_to_devbind_script
>
> +    def cleanup_sut(self, dpdk_build_location, remote_tree: str |
> PurePath | None) -> None:
>

I think you have a missing type hint here for the dpdk_build_location arg.
I think it is a LocalDPDKLocation.


> --
> 2.48.1
>
>
While you're at it, you can edit the commit message to replace the
reference to conf.yaml (no longer named this) to the new name or just
"configuration."

Thanks and sorry I missed this on the first look through! Can merge this
asap once you make the edits.
  

Patch

diff --git a/dts/framework/runner.py b/dts/framework/runner.py
index 9f9789cf49..367034e038 100644
--- a/dts/framework/runner.py
+++ b/dts/framework/runner.py
@@ -336,7 +336,7 @@  def _run_test_run(
         finally:
             try:
                 self._logger.set_stage(DtsStage.test_run_teardown)
-                sut_node.tear_down_test_run()
+                sut_node.tear_down_test_run(test_run_config.dpdk_config.dpdk_location)
                 tg_node.tear_down_test_run()
                 test_run_result.update_teardown(Result.PASS)
             except Exception as e:
diff --git a/dts/framework/testbed_model/sut_node.py b/dts/framework/testbed_model/sut_node.py
index 483733cede..c73500b146 100644
--- a/dts/framework/testbed_model/sut_node.py
+++ b/dts/framework/testbed_model/sut_node.py
@@ -188,6 +188,19 @@  def path_to_devbind_script(self) -> PurePath | str:
             )
         return self._path_to_devbind_script
 
+    def cleanup_sut(self, dpdk_build_location, remote_tree: str | PurePath | None) -> None:
+        """Removes the DPDK tree and/or build directory/tarball depending on the configuration."""
+        match dpdk_build_location:
+            case LocalDPDKTreeLocation(dpdk_tree=dpdk_tree):
+                tree_path = self.main_session.join_remote_path(self._remote_tmp_dir, dpdk_tree.name)
+                self.main_session.remove_remote_dir(tree_path)
+            case LocalDPDKTarballLocation(tarball=tarball):
+                self.main_session.remove_remote_dir(str(remote_tree))
+                tarball_path = self.main_session.join_remote_path(
+                    self._remote_tmp_dir, tarball.name
+                )
+                self.main_session.remove_remote_file(tarball_path)
+
     def get_dpdk_build_info(self) -> DPDKBuildInfo:
         """Get additional DPDK build information.
 
@@ -216,11 +229,11 @@  def set_up_test_run(
             self.virtual_devices.append(VirtualDevice(vdev))
         self._set_up_dpdk(dpdk_build_config)
 
-    def tear_down_test_run(self) -> None:
+    def tear_down_test_run(self, dpdk_build_location=None) -> None:
         """Extend the test run teardown with virtual device teardown and DPDK teardown."""
         super().tear_down_test_run()
         self.virtual_devices = []
-        self._tear_down_dpdk()
+        self._tear_down_dpdk(dpdk_build_location)
 
     def _set_up_dpdk(
         self,
@@ -256,14 +269,16 @@  def _set_up_dpdk(
 
         self.bind_ports_to_driver()
 
-    def _tear_down_dpdk(self) -> None:
+    def _tear_down_dpdk(self, dpdk_build_location) -> None:
         """Reset DPDK variables and bind port driver to the OS driver."""
         self._env_vars = {}
+        remote_tree = self.__remote_dpdk_tree_path
         self.__remote_dpdk_tree_path = None
         self._remote_dpdk_build_dir = None
         self._dpdk_version = None
         self.compiler_version = None
         self.bind_ports_to_driver(for_dpdk=False)
+        self.cleanup_sut(dpdk_build_location, remote_tree)
 
     def _set_remote_dpdk_tree_path(self, dpdk_tree: PurePath):
         """Set the path to the remote DPDK source tree based on the provided DPDK location.