[RFC,v1,5/5] dts: add traffic generator node to dts runner
Checks
Commit Message
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(-)
Comments
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
>
>
@@ -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:
@@ -20,3 +20,4 @@
)
from .node import Node
from .sut_node import SutNode
+from .tg_node import TGNode