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 25E17A00C4; Mon, 14 Nov 2022 17:54:45 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B4B3B4014F; Mon, 14 Nov 2022 17:54:44 +0100 (CET) Received: from lb.pantheon.sk (lb.pantheon.sk [46.229.239.20]) by mails.dpdk.org (Postfix) with ESMTP id 269634014F for ; Mon, 14 Nov 2022 17:54:43 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by lb.pantheon.sk (Postfix) with ESMTP id C5F1221C5E8; Mon, 14 Nov 2022 17:54:41 +0100 (CET) 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 zQlAEEqoCp0K; Mon, 14 Nov 2022 17:54:39 +0100 (CET) Received: from entguard.lab.pantheon.local (unknown [46.229.239.141]) by lb.pantheon.sk (Postfix) with ESMTP id 13B5A165617; Mon, 14 Nov 2022 17:54:38 +0100 (CET) From: =?UTF-8?q?Juraj=20Linke=C5=A1?= To: thomas@monjalon.net, Honnappa.Nagarahalli@arm.com, ohilyard@iol.unh.edu, lijuan.tu@intel.com, bruce.richardson@intel.com Cc: dev@dpdk.org, =?UTF-8?q?Juraj=20Linke=C5=A1?= Subject: [RFC PATCH v2 00/10] dts: add hello world testcase Date: Mon, 14 Nov 2022 16:54:28 +0000 Message-Id: <20221114165438.1133783-1-juraj.linkes@pantheon.tech> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220824162454.394285-1-juraj.linkes@pantheon.tech> References: <20220824162454.394285-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 Add code needed to run the HelloWorld testcase which just runs the hello world dpdk application. The patch first outlines the basic class architecture, covering Nodes (hosts that DTS connects to), RemoteSession, OS-specific code, test runner and Exceptions. The patchset currently heavily refactors this original DTS code needed to run the testcase: * DPDK build on the System under Test * DPDK eal args construction, app running and shutting down * SUT hugepage memory configuration * Test runner The code that still needs to be refactored: * Test results * TestCase/TestSuite class * Test runner parts interfacing with TestCase * The HelloWorld testsuite itself The code is divided into sub-packages, some of which are divided further. It's possible that some sub-directories should be flattened to simplify imports. I've also had to make some concessions to code structure to avoid circular imports. I'll continue thinking about this going forward and v3 may have a different dir/import structure. The code has been ported from DTS and we may want/need to change some designs, such as what configuration to do and when - for example, we may not want DTS to configure hugepages (as that may be too much of a system modification or it just simply makes sense to configure once outside of DTS and not touch it in every single run). Juraj Linkeš (10): dts: add node and os abstractions dts: add ssh command verification dts: add dpdk build on sut dts: add dpdk execution handling dts: add node memory setup dts: add test results module dts: add simple stats report dts: add testsuite class dts: add hello world testplan dts: add hello world testsuite dts/conf.yaml | 16 +- dts/framework/config/__init__.py | 186 +++++++++- dts/framework/config/conf_yaml_schema.json | 137 +++++++- dts/framework/dts.py | 153 ++++++-- dts/framework/exception.py | 190 +++++++++- dts/framework/remote_session/__init__.py | 23 +- dts/framework/remote_session/arch/__init__.py | 20 ++ dts/framework/remote_session/arch/arch.py | 57 +++ dts/framework/remote_session/factory.py | 14 + dts/framework/remote_session/os/__init__.py | 17 + .../remote_session/os/linux_session.py | 111 ++++++ dts/framework/remote_session/os/os_session.py | 170 +++++++++ .../remote_session/os/posix_session.py | 220 ++++++++++++ .../remote_session/remote_session.py | 94 ++++- dts/framework/remote_session/ssh_session.py | 69 +++- dts/framework/settings.py | 65 +++- dts/framework/stats_reporter.py | 65 ++++ dts/framework/test_case.py | 246 +++++++++++++ dts/framework/test_result.py | 217 ++++++++++++ dts/framework/testbed_model/__init__.py | 7 +- dts/framework/testbed_model/hw/__init__.py | 17 + dts/framework/testbed_model/hw/cpu.py | 164 +++++++++ dts/framework/testbed_model/node.py | 62 ---- dts/framework/testbed_model/node/__init__.py | 7 + dts/framework/testbed_model/node/node.py | 169 +++++++++ dts/framework/testbed_model/node/sut_node.py | 331 ++++++++++++++++++ dts/framework/utils.py | 35 ++ dts/test_plans/hello_world_test_plan.rst | 68 ++++ dts/tests/TestSuite_hello_world.py | 53 +++ 29 files changed, 2854 insertions(+), 129 deletions(-) create mode 100644 dts/framework/remote_session/arch/__init__.py create mode 100644 dts/framework/remote_session/arch/arch.py create mode 100644 dts/framework/remote_session/factory.py create mode 100644 dts/framework/remote_session/os/__init__.py create mode 100644 dts/framework/remote_session/os/linux_session.py create mode 100644 dts/framework/remote_session/os/os_session.py create mode 100644 dts/framework/remote_session/os/posix_session.py create mode 100644 dts/framework/stats_reporter.py create mode 100644 dts/framework/test_case.py create mode 100644 dts/framework/test_result.py create mode 100644 dts/framework/testbed_model/hw/__init__.py create mode 100644 dts/framework/testbed_model/hw/cpu.py delete mode 100644 dts/framework/testbed_model/node.py create mode 100644 dts/framework/testbed_model/node/__init__.py create mode 100644 dts/framework/testbed_model/node/node.py create mode 100644 dts/framework/testbed_model/node/sut_node.py create mode 100644 dts/test_plans/hello_world_test_plan.rst create mode 100644 dts/tests/TestSuite_hello_world.py -- 2.30.2