From patchwork Wed Jun 22 12:14:40 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Juraj_Linke=C5=A1?= X-Patchwork-Id: 113244 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 64A2FA04FD; Wed, 22 Jun 2022 14:14:53 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5118E4069C; Wed, 22 Jun 2022 14:14:53 +0200 (CEST) Received: from lb.pantheon.sk (lb.pantheon.sk [46.229.239.20]) by mails.dpdk.org (Postfix) with ESMTP id 1E65540689 for ; Wed, 22 Jun 2022 14:14:52 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by lb.pantheon.sk (Postfix) with ESMTP id 8C93A3146D; Wed, 22 Jun 2022 14:14:50 +0200 (CEST) X-Virus-Scanned: amavisd-new at siecit.sk Received: from lb.pantheon.sk ([127.0.0.1]) by localhost (lb.pantheon.sk [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id E4T1a_6Mx2rc; Wed, 22 Jun 2022 14:14:49 +0200 (CEST) Received: from entguard.lab.pantheon.local (unknown [46.229.239.141]) by lb.pantheon.sk (Postfix) with ESMTP id 951EE31466; Wed, 22 Jun 2022 14:14:48 +0200 (CEST) From: =?utf-8?q?Juraj_Linke=C5=A1?= To: thomas@monjalon.net, david.marchand@redhat.com, jerinjacobk@gmail.com, ronan.randles@intel.com, Honnappa.Nagarahalli@arm.com, ohilyard@iol.unh.edu, lijuan.tu@intel.com Cc: dev@dpdk.org, =?utf-8?q?Juraj_Linke=C5=A1?= Subject: [PATCH v1 0/8] dts: ssh connection to a node Date: Wed, 22 Jun 2022 12:14:40 +0000 Message-Id: <20220622121448.3304251-1-juraj.linkes@pantheon.tech> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org All the necessary code needed to connect to a node in a topology with some extras, such as basic logging, per-node locks and some extra useful methods. To run the code, modify the two config files, execution.cfg and conf/topology.cfg and execute ./main.py from the root dts folder. Here's an example config: cat execution.cfg [Execution1] sut=127.0.0.1 cat conf/topology.cfg #Topology Configuration #[SUT IP] # sut_ip: SUT ip address # sut_user: SUT username # sut_passwd: SUT password [127.0.0.1] sut_ip=127.0.0.1 sut_user=root sut_passwd=a The code only connects to a node. You'll see logs emitted to console saying where DTS connected. There's no documentation, as there's not much to document - the above is basically all there is to it, as far as user docs go. We'll add some real docs when there's enough functionality to document, when the HelloWorld testcases is in (point 4 in our roadmap below). The config parser will be reworked in near future, so there's no need to review it. While we're working on it, let's review the rest of the code. This is our current roadmap: 1. Review this patchset and do the rest of the items in parallel, if possible. 2. Finish the config parser rework. 3. Rebase this patch on top of 2 and send a new version (along with addressed review comments). 4. We have extracted the code needed to run the most basic testcase, HelloWorld, which runs the DPDK Hello World application. We'll split this along logical/functional boundaries and send after 1 is done. In fact, 1 is part of 4. 5. Once we have 4 applied, we'll planning on adding a basic functional testcase - pf_smoke. This send a bit of traffic, so the big addition is the software traffic generator, Scapy. 6. After 5, we'll add a basic performance testcases which doesn't use Scapy, but Trex or Ixia instead. 7. This is far in the future, but at this point we should have all of the core functionality in place. What then remains is adding the rest of the testcases. Juraj Linkeš (8): dts: add ssh pexpect library dts: add locks for parallel node connections dts: add ssh connection extension dts: add basic logging facility dts: add Node base class dts: add config parser module dts: add dts runtime workflow module dts: add main script for running dts dts/conf/topology.cfg | 9 ++ dts/execution.cfg | 2 + dts/framework/config.py | 81 ++++++++++++++ dts/framework/dts.py | 128 +++++++++++++++++++++ dts/framework/exception.py | 61 ++++++++++ dts/framework/logger.py | 86 ++++++++++++++ dts/framework/node.py | 95 ++++++++++++++++ dts/framework/settings.py | 42 +++++++ dts/framework/ssh_connection.py | 52 +++++++++ dts/framework/ssh_pexpect.py | 192 ++++++++++++++++++++++++++++++++ dts/framework/utils.py | 128 +++++++++++++++++++++ dts/main.py | 36 ++++++ 12 files changed, 912 insertions(+) create mode 100644 dts/conf/topology.cfg create mode 100644 dts/execution.cfg create mode 100644 dts/framework/config.py create mode 100644 dts/framework/dts.py create mode 100644 dts/framework/exception.py create mode 100644 dts/framework/logger.py create mode 100644 dts/framework/node.py create mode 100644 dts/framework/settings.py create mode 100644 dts/framework/ssh_connection.py create mode 100644 dts/framework/ssh_pexpect.py create mode 100644 dts/framework/utils.py create mode 100755 dts/main.py