Acked-by: Jeremy Spewock <jspewock@iol.unh.edu>

On Thu, Apr 20, 2023 at 5:51 AM Juraj Linkeš <juraj.linkes@pantheon.tech> wrote:
Initialize the TG node and do basic verification.

Signed-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech>
---
 dts/framework/dts.py                    | 42 ++++++++++++++++---------
 dts/framework/testbed_model/__init__.py |  1 +
 2 files changed, 28 insertions(+), 15 deletions(-)

diff --git a/dts/framework/dts.py b/dts/framework/dts.py
index 0502284580..9c82bfe1f4 100644
--- a/dts/framework/dts.py
+++ b/dts/framework/dts.py
@@ -9,7 +9,7 @@
 from .logger import DTSLOG, getLogger
 from .test_result import BuildTargetResult, DTSResult, ExecutionResult, Result
 from .test_suite import get_test_suites
-from .testbed_model import SutNode
+from .testbed_model import SutNode, TGNode, Node
 from .utils import check_dts_python_version

 dts_logger: DTSLOG = getLogger("DTSRunner")
@@ -27,28 +27,40 @@ def run_all() -> None:
     # check the python version of the server that run dts
     check_dts_python_version()

-    nodes: dict[str, SutNode] = {}
+    nodes: dict[str, Node] = {}
     try:
         # for all Execution sections
         for execution in CONFIGURATION.executions:
             sut_node = None
+            tg_node = None
             if execution.system_under_test.name in nodes:
                 # a Node with the same name already exists
                 sut_node = nodes[execution.system_under_test.name]
-            else:
-                # the SUT has not been initialized yet
-                try:
+
+            if execution.traffic_generator_system.name in nodes:
+                # a Node with the same name already exists
+                tg_node = nodes[execution.traffic_generator_system.name]
+
+            try:
+                if not sut_node:
                     sut_node = SutNode(execution.system_under_test)
-                    result.update_setup(Result.PASS)
-                except Exception as e:
-                    dts_logger.exception(
-                        f"Connection to node {execution.system_under_test} failed."
-                    )
-                    result.update_setup(Result.FAIL, e)
-                else:
-                    nodes[sut_node.name] = sut_node
-
-            if sut_node:
+                if not tg_node:
+                    tg_node = TGNode(execution.traffic_generator_system)
+                    tg_node.verify()
+                result.update_setup(Result.PASS)
+            except Exception as e:
+                failed_node = execution.system_under_test.name
+                if sut_node:
+                    failed_node = execution.traffic_generator_system.name
+                dts_logger.exception(
+                    f"Creation of node {failed_node} failed."
+                )
+                result.update_setup(Result.FAIL, e)
+            else:
+                nodes[sut_node.name] = sut_node
+                nodes[tg_node.name] = tg_node
+
+            if sut_node and tg_node:
                 _run_execution(sut_node, execution, result)

     except Exception as e:
diff --git a/dts/framework/testbed_model/__init__.py b/dts/framework/testbed_model/__init__.py
index f54a947051..5cbb859e47 100644
--- a/dts/framework/testbed_model/__init__.py
+++ b/dts/framework/testbed_model/__init__.py
@@ -20,3 +20,4 @@
 )
 from .node import Node
 from .sut_node import SutNode
+from .tg_node import TGNode
--
2.30.2