#
99740300 |
| 26-Sep-2024 |
Jeremy Spewock <jspewock@iol.unh.edu> |
dts: use Python shell for Scapy instead of XML-RPC
Previously all scapy commands were handled using an XML-RPC server that ran on the TGNode. This unnecessarily enforces a minimum Python version of
dts: use Python shell for Scapy instead of XML-RPC
Previously all scapy commands were handled using an XML-RPC server that ran on the TGNode. This unnecessarily enforces a minimum Python version of 3.10 on the server that is being used as a traffic generator and complicates the implementation of scapy methods. This patch removes the XML-RPC server completely and instead allows the Scapy TG to extend from the PythonShell to implement the functionality of a traffic generator. This is done by importing the Scapy library in the PythonShell and sending commands directly to the interactive session on the TG Node.
Bugzilla ID: 1374
Signed-off-by: Jeremy Spewock <jspewock@iol.unh.edu> Reviewed-by: Juraj Linkeš <juraj.linkes@pantheon.tech> Reviewed-by: Luca Vizzarro <luca.vizzarro@arm.com>
show more ...
|
#
65a1b4e8 |
| 24-Jul-2024 |
Jeremy Spewock <jspewock@iol.unh.edu> |
dts: improve logging for interactive shells
The messages being logged by interactive shells currently are using the same logger as the node they were created from. Because of this, when sending inte
dts: improve logging for interactive shells
The messages being logged by interactive shells currently are using the same logger as the node they were created from. Because of this, when sending interactive commands, the logs make no distinction between when you are sending a command directly to the host and when you are using an interactive shell on the host. This change adds names to interactive shells so that they are able to use their own loggers with distinct names.
Signed-off-by: Jeremy Spewock <jspewock@iol.unh.edu> Reviewed-by: Juraj Linkeš <juraj.linkes@pantheon.tech> Tested-by: Nicholas Pratte <npratte@iol.unh.edu> Reviewed-by: Nicholas Pratte <npratte@iol.unh.edu> Reviewed-by: Luca Vizzarro <luca.vizzarro@arm.com>
show more ...
|
#
6713e286 |
| 24-Jul-2024 |
Jeremy Spewock <jspewock@iol.unh.edu> |
dts: improve output gathering in interactive shells
The current implementation of consuming output from interactive shells relies on being able to find an expected prompt somewhere within the output
dts: improve output gathering in interactive shells
The current implementation of consuming output from interactive shells relies on being able to find an expected prompt somewhere within the output buffer after sending the command. This is useful in situations where the prompt does not appear in the output itself, but in some practical cases (such as the starting of an XML-RPC server for scapy) the prompt exists in one of the commands sent to the shell and this can cause the command to exit early and creates a race condition between the server starting and the first command being sent to the server.
This patch addresses this problem by searching for a line that strictly ends with the provided prompt, rather than one that simply contains it, so that the detection that a command is finished is more consistent. It also adds a catch to detect when a command times out before finding the prompt or the underlying SSH session dies so that the exception can be wrapped into a more explicit one and be more consistent with the non-interactive shells.
Bugzilla ID: 1359 Fixes: 88489c0501af ("dts: add smoke tests")
Signed-off-by: Jeremy Spewock <jspewock@iol.unh.edu> Reviewed-by: Juraj Linkeš <juraj.linkes@pantheon.tech> Reviewed-by: Luca Vizzarro <luca.vizzarro@arm.com> Reviewed-by: Nicholas Pratte <npratte@iol.unh.edu>
show more ...
|
#
92439dc9 |
| 11-Jul-2024 |
Jeremy Spewock <jspewock@iol.unh.edu> |
dts: improve starting and stopping interactive shells
The InteractiveShell class currently relies on being cleaned up and shutdown at the time of garbage collection, but this cleanup of the class do
dts: improve starting and stopping interactive shells
The InteractiveShell class currently relies on being cleaned up and shutdown at the time of garbage collection, but this cleanup of the class does no verification that the session is still running prior to cleanup. So, if a user were to call this method themselves prior to garbage collection, it would be called twice and throw an exception when the desired behavior is to do nothing since the session is already cleaned up. This is solved by using a weakref and a finalize class which achieves the same result of calling the method at garbage collection, but also ensures that it is called exactly once.
Additionally, this fixes issues regarding starting a primary DPDK application while another is still cleaning up via a retry when starting interactive shells. It also adds catch for attempting to send a command to an interactive shell that is not running to create a more descriptive error message.
Signed-off-by: Jeremy Spewock <jspewock@iol.unh.edu> Reviewed-by: Luca Vizzarro <luca.vizzarro@arm.com> Reviewed-by: Patrick Robb <probb@iol.unh.edu> Reviewed-by: Juraj Linkeš <juraj.linkes@pantheon.tech> Tested-by: Dean Marx <dmarx@iol.unh.edu>
show more ...
|
#
2b648cd4 |
| 11-Jul-2024 |
Jeremy Spewock <jspewock@iol.unh.edu> |
dts: add context manager for interactive shells
Interactive shells are managed in a way currently where they are closed and cleaned up at the time of garbage collection. Due to there being no guaran
dts: add context manager for interactive shells
Interactive shells are managed in a way currently where they are closed and cleaned up at the time of garbage collection. Due to there being no guarantee of when this garbage collection happens in Python, there is no way to consistently know when an application will be closed without manually closing the application yourself when you are done with it. This doesn't cause a problem in cases where you can start another instance of the same application multiple times on a server, but this isn't the case for primary applications in DPDK. The introduction of primary applications, such as testpmd, adds a need for knowing previous instances of the application have been stopped and cleaned up before starting a new one, which the garbage collector does not provide.
To solve this problem, a new class is added which acts as a base class for interactive shells that enforces that instances of the application be managed using a context manager. Using a context manager guarantees that once you leave the scope of the block where the application is being used for any reason, the application will be closed immediately. This avoids the possibility of the shell not being closed due to an exception being raised or user error. The interactive shell class then becomes shells that can be started/stopped manually or at the time of garbage collection rather than through a context manager.
Signed-off-by: Jeremy Spewock <jspewock@iol.unh.edu> Reviewed-by: Juraj Linkeš <juraj.linkes@pantheon.tech> Reviewed-by: Patrick Robb <probb@iol.unh.edu> Reviewed-by: Luca Vizzarro <luca.vizzarro@arm.com>
show more ...
|