When running our existing DTS testsuites on a new NIC we observed packets would not transmit from the traffic generator to the system under test even after DPDK testpmd and the NIC under test had indicated readiness through the existing readiness checks in DTS. After adding in a warm up sleep to DPDK shells, this issue was resolved. Correctness is more important than execution speed in DTS, so it seems justified to slow down the execution a little in order to make the testing framework less fragile to such device specific bringup behaviors.
Signed-off-by: Patrick Robb <pr...@iol.unh.edu> --- dts/framework/remote_session/dpdk_shell.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/dts/framework/remote_session/dpdk_shell.py b/dts/framework/remote_session/dpdk_shell.py index d4aa02f39b..b0868d32fb 100644 --- a/dts/framework/remote_session/dpdk_shell.py +++ b/dts/framework/remote_session/dpdk_shell.py @@ -6,9 +6,12 @@ Provides a base class to create interactive shells based on DPDK. """ +import time from abc import ABC, abstractmethod from pathlib import PurePath +from typing_extensions import Self + from framework.context import get_ctx from framework.params.eal import EalParams from framework.remote_session.interactive_shell import ( @@ -84,3 +87,9 @@ def _make_real_path(self): Adds the remote DPDK build directory to the path. """ return get_ctx().dpdk_build.remote_dpdk_build_dir.joinpath(self.path) + + def __enter__(self) -> Self: + """Overrides :meth:`~.interactive_shell.InteractiveShell.__enter__`.""" + super().__enter__() + time.sleep(5) + return self -- 2.49.0