From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B4B82A0032; Mon, 11 Jul 2022 16:51:37 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A82E44280E; Mon, 11 Jul 2022 16:51:33 +0200 (CEST) Received: from lb.pantheon.sk (lb.pantheon.sk [46.229.239.20]) by mails.dpdk.org (Postfix) with ESMTP id C601D41611 for ; Mon, 11 Jul 2022 16:51:31 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by lb.pantheon.sk (Postfix) with ESMTP id DC9FF243CDE; Mon, 11 Jul 2022 16:51:28 +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 jFrbDQWZeNYB; Mon, 11 Jul 2022 16:51:27 +0200 (CEST) Received: from entguard.lab.pantheon.local (unknown [46.229.239.141]) by lb.pantheon.sk (Postfix) with ESMTP id 1785A1DE465; Mon, 11 Jul 2022 16:51:26 +0200 (CEST) From: =?UTF-8?q?Juraj=20Linke=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=20Linke=C5=A1?= Subject: [PATCH v2 0/8] ssh connection to a node Date: Mon, 11 Jul 2022 14:51:18 +0000 Message-Id: <20220711145126.295427-1-juraj.linkes@pantheon.tech> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220622121448.3304251-1-juraj.linkes@pantheon.tech> References: <20220622121448.3304251-1-juraj.linkes@pantheon.tech> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 config file, conf.yaml and execute ./main.py from the root dts folder. Here's an example config: executions: - system_under_test: "SUT 1" nodes: - name: "SUT 1" hostname: 127.0.0.1 user: root password: mypw 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). What will be documented later is runtime dependencies and how to set up the DTS control node environment. This is our current roadmap: 1. Review this patchset and do the rest of the items in parallel, if possible. 2. Rework the parallel lock mechanism using something simpler using existing Python tools. 3. Add tools which aid with DTS control node environment setup and document their usage. 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 testcase 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. v2: Reworked config parser. Extended logging to log to files as well. Added type annotations to most of the code. Juraj Linkeš (7): dts: add basic logging facility dts: add ssh pexpect library dts: add locks for parallel node connections dts: add ssh connection extension dts: add Node base class dts: add dts workflow module dts: add dts executable script Owen Hilyard (1): dts: add config parser module dts/conf.yaml | 7 + dts/framework/config/__init__.py | 116 +++++++++++ dts/framework/config/conf_yaml_schema.json | 73 +++++++ dts/framework/dts.py | 76 ++++++++ dts/framework/exception.py | 75 +++++++ dts/framework/logger.py | 118 +++++++++++ dts/framework/node.py | 108 +++++++++++ dts/framework/settings.py | 43 +++++ dts/framework/ssh_connection.py | 70 +++++++ dts/framework/ssh_pexpect.py | 215 +++++++++++++++++++++ dts/framework/utils.py | 130 +++++++++++++ dts/main.py | 47 +++++ 12 files changed, 1078 insertions(+) create mode 100644 dts/conf.yaml create mode 100644 dts/framework/config/__init__.py create mode 100644 dts/framework/config/conf_yaml_schema.json 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 -- 2.30.2