Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/109291/?format=api
http://patches.dpdk.org/api/patches/109291/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/patch/20220406151106.2915304-25-juraj.linkes@pantheon.tech/", "project": { "id": 1, "url": "http://patches.dpdk.org/api/projects/1/?format=api", "name": "DPDK", "link_name": "dpdk", "list_id": "dev.dpdk.org", "list_email": "dev@dpdk.org", "web_url": "http://core.dpdk.org", "scm_url": "git://dpdk.org/dpdk", "webscm_url": "http://git.dpdk.org/dpdk", "list_archive_url": "https://inbox.dpdk.org/dev", "list_archive_url_format": "https://inbox.dpdk.org/dev/{}", "commit_url_format": "" }, "msgid": "<20220406151106.2915304-25-juraj.linkes@pantheon.tech>", "list_archive_url": "https://inbox.dpdk.org/dev/20220406151106.2915304-25-juraj.linkes@pantheon.tech", "date": "2022-04-06T15:11:06", "name": "[RFC,v1,24/24] dts: merge DTS doc/dts_gsg/usr_guide/usage.rst to DPDK", "commit_ref": null, "pull_url": null, "state": "rfc", "archived": true, "hash": "84d4c2b64051b5379b82197ddcc58572c5531896", "submitter": { "id": 1626, "url": "http://patches.dpdk.org/api/people/1626/?format=api", "name": "Juraj Linkeš", "email": "juraj.linkes@pantheon.tech" }, "delegate": { "id": 1, "url": "http://patches.dpdk.org/api/users/1/?format=api", "username": "tmonjalo", "first_name": "Thomas", "last_name": "Monjalon", "email": "thomas@monjalon.net" }, "mbox": "http://patches.dpdk.org/project/dpdk/patch/20220406151106.2915304-25-juraj.linkes@pantheon.tech/mbox/", "series": [ { "id": 22379, "url": "http://patches.dpdk.org/api/series/22379/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=22379", "date": "2022-04-06T15:10:42", "name": "merge DTS documentation files to DPDK", "version": 1, "mbox": "http://patches.dpdk.org/series/22379/mbox/" } ], "comments": "http://patches.dpdk.org/api/patches/109291/comments/", "check": "warning", "checks": "http://patches.dpdk.org/api/patches/109291/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "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])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 8D063A0508;\n\tWed, 6 Apr 2022 17:14:26 +0200 (CEST)", "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 0F98E42934;\n\tWed, 6 Apr 2022 17:11:45 +0200 (CEST)", "from lb.pantheon.sk (lb.pantheon.sk [46.229.239.20])\n by mails.dpdk.org (Postfix) with ESMTP id 6AFE042900\n for <dev@dpdk.org>; Wed, 6 Apr 2022 17:11:37 +0200 (CEST)", "from localhost (localhost [127.0.0.1])\n by lb.pantheon.sk (Postfix) with ESMTP id CE402184FE8;\n Wed, 6 Apr 2022 17:11:36 +0200 (CEST)", "from lb.pantheon.sk ([127.0.0.1])\n by localhost (lb.pantheon.sk [127.0.0.1]) (amavisd-new, port 10024)\n with ESMTP id mQ1UmAA_srP7; Wed, 6 Apr 2022 17:11:35 +0200 (CEST)", "from entguard.lab.pantheon.local (unknown [46.229.239.141])\n by lb.pantheon.sk (Postfix) with ESMTP id 45252184FFD;\n Wed, 6 Apr 2022 17:11:18 +0200 (CEST)" ], "X-Virus-Scanned": "amavisd-new at siecit.sk", "From": "=?utf-8?q?Juraj_Linke=C5=A1?= <juraj.linkes@pantheon.tech>", "To": "thomas@monjalon.net, david.marchand@redhat.com,\n Honnappa.Nagarahalli@arm.com, ohilyard@iol.unh.edu, lijuan.tu@intel.com", "Cc": "dev@dpdk.org, =?utf-8?q?Juraj_Linke=C5=A1?= <juraj.linkes@pantheon.tech>", "Subject": "[RFC PATCH v1 24/24] dts: merge DTS doc/dts_gsg/usr_guide/usage.rst\n to DPDK", "Date": "Wed, 6 Apr 2022 15:11:06 +0000", "Message-Id": "<20220406151106.2915304-25-juraj.linkes@pantheon.tech>", "X-Mailer": "git-send-email 2.25.1", "In-Reply-To": "<20220406151106.2915304-1-juraj.linkes@pantheon.tech>", "References": "<20220406151106.2915304-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 <dev.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dev/>", "List-Post": "<mailto:dev@dpdk.org>", "List-Help": "<mailto:dev-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org" }, "content": "---\n dts/doc/dts_gsg/usr_guide/usage.rst | 350 ++++++++++++++++++++++++++++\n 1 file changed, 350 insertions(+)\n create mode 100644 dts/doc/dts_gsg/usr_guide/usage.rst", "diff": "diff --git a/dts/doc/dts_gsg/usr_guide/usage.rst b/dts/doc/dts_gsg/usr_guide/usage.rst\nnew file mode 100644\nindex 0000000000..ba714703c0\n--- /dev/null\n+++ b/dts/doc/dts_gsg/usr_guide/usage.rst\n@@ -0,0 +1,350 @@\n+Usage\n+=====\n+\n+Configuration\n+-------------\n+\n+Configuring your own execution file\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+\n+First of all, you must configure execution.cfg as below:\n+\n+.. code-block:: console\n+\n+ [Execution1]\n+ crbs=<CRB IP Address>\n+ drivername=vfio-pci\n+ build_type=meson\n+ rx_mode=avx512\n+ test_suites=\n+ hello_world,\n+ targets=\n+ x86_64-native-linuxapp-gcc\n+ parameters=nic_type=cfg:func=true\n+\n+* crbs: IP address of the DUT. The detail information is defined in file $DTS_CFG_FOLDER/crbs.cfg.\n+* drivername: the driver devices used by DPDK bound to.\n+* build_type: the tool for building DPDK, it can be meson.\n+* rx_mode: vector instructions used in tests, it can be novector/sse/avx2/avx512. it is optional, if not set, dpdk uses avx2 by default.\n+* test_suites: test suites and cases that to be executed. use ``:`` to separate suite and it's cases and use ``\\`` to separate different cases.\n+* targets: DPDK targets to be tested.\n+* parameters: multiple keywords as following:\n+\n+ * nic_type: it is the type of the NIC to use. The types are defined in the file settings.py.\n+ There's a special type named as **cfg**, which mean network information will be loaded from file $DTS_CFG_FOLDER/ports.cfg.\n+ If use NIC type such as niantic, fortville_25g, it requires all DUT are the same types and no any same devices connected to Tester,\n+ as DTS will test all devices connected to Tester. Therefore, recommend using **cfg**.\n+ * func=true: run only functional test.\n+ * perf=true: run only performance test.\n+\n+.. note::\n+\n+ The two options ``func=true`` and ``perf=true`` are mutually exclusive, as the traffic generators for functional and performance are mutually exclusive.\n+\n+Here are an example for functional testing:\n+\n+.. code-block:: console\n+\n+ [Execution1]\n+ crbs=192.168.1.1\n+ drivername=vfio-pci\n+ build_type=meson\n+ test_suites=\n+ unit_tests_eal:test_version\\test_common,\n+ targets=\n+ x86_64-default-linuxapp-gcc,\n+ parameters=nic_type=cfg:func=true\n+\n+\n+Configure CRB information\n+~~~~~~~~~~~~~~~~~~~~~~~~~\n+\n+Then please add the detail information about your CRB in $DTS_CFG_FOLDER/crbs.conf as following:\n+\n+.. code-block:: console\n+\n+ [DUT IP]\n+ dut_ip=xxx.xxx.xxx.xxx\n+ dut_user=root\n+ dut_passwd=\n+ os=linux\n+ dut_arch=\n+ tester_ip=xxx.xxx.xxx.xxx\n+ tester_passwd=\n+ pktgen_group=\n+ channels=4\n+ bypass_core0=True\n+ dut_cores=\n+\n+* DUT IP: section name, same as ``crbs`` in execution.cfg.\n+* dut_ip: IP address of the DUT, same as ``crbs`` in execution.cfg.\n+* dut_user: User name of DUT linux account\n+* dut_passwd: Password of DUT linux account\n+* tester_ip: IP address of tester\n+* tester_passwd: Password of Tester linux account, user name should same as dut_user\n+* pktgen_group: traffic generator name, it can be ``trex`` or ``ixia``, it is optional, if not set, DTS can't do performance tests.\n+* channels: number of memory channels for DPDK EAL\n+* bypass_core0: skip the first core when initialize DPDK\n+* dut_cores: DUT core list, eg: 1,2,3,4,5,18-22, it is optional, if it is ``None`` or not set, all core list will be used.\n+\n+Here are an example for functional testing:\n+\n+.. code-block:: console\n+\n+ [192.168.1.1]\n+ dut_ip=192.168.1.1\n+ dut_user=root\n+ dut_passwd=dutpasswd\n+ os=linux\n+ tester_ip=192.168.1.2\n+ tester_passwd=testerpasswd\n+ channels=4\n+ bypass_core0=True\n+\n+\n+Configure port information\n+~~~~~~~~~~~~~~~~~~~~~~~~~~\n+\n+If set ``nic_type=cfg`` in execution.cfg, please add port configuration in $DTS_CFG_FOLDER/ports.cfg as following:\n+\n+.. code-block:: console\n+\n+ [DUT IP]\n+ ports =\n+ pci=<Pci BDF>,peer=<Pci BDF>;\n+ pci=<Pci BDF>,peer=IXIA:X.Y;\n+ pci=<Pci BDF>,peer=TREX:X;\n+\n+It supports three patterns, the first one is for functional testing, the second one is for ``IXIA``, the third one is for ``TRex``:\n+\n+* pci: Device pci address of DUT\n+* peer: info of Tester port which connected to the DUT device:\n+\n+ * if it is func testing, it is pci address\n+ * if pktgen is ``TRex``, the `X` in ``TREX:X`` is port id in TRex configuration file, e.g. /etc/trex_cfg.yaml.\n+ * if pktgen is ``IXIA``, the `X` is card id ,and the `Y` is port id, which configured in DTS_CFG_FOLDER/pktgen.cfg (./conf/pktgen.cfg by default).\n+\n+Here are an example for functional testing:\n+\n+.. code-block:: console\n+\n+ [192.168.1.1]\n+ ports =\n+ pci=0000:06:00.0,peer=0000:81:00.0;\n+ pci=0000:06:00.1,peer=0000:81:00.1;\n+\n+Here are an example for IXIA:\n+\n+.. code-block:: console\n+\n+ [192.168.1.1]\n+ ports =\n+ pci=0000:18:00.0,peer=IXIA:1.1;\n+ pci=0000:18:00.1,peer=IXIA:1.2;\n+\n+Here are an example for TRex:\n+\n+.. code-block:: console\n+\n+ [192.168.1.1]\n+ ports =\n+ pci=0000:18:00.0,peer=TREX:1;\n+ pci=0000:18:00.1,peer=TREX:1;\n+\n+\n+Configure all test suites\n+~~~~~~~~~~~~~~~~~~~~~~~~~\n+\n+$DTS_CFG_FOLDER/global_suite.cfg is a global suite configure file which is shared by all suites.\n+\n+.. code-block:: console\n+\n+ [global]\n+ vf_driver=vfio-pci\n+\n+* vf_driver: VF driver that for VF testing, recommend keep the default value ``vfio-pci``.\n+\n+\n+Configure your own suites\n+~~~~~~~~~~~~~~~~~~~~~~~~~\n+\n+Not all test suites have it's own configuration file which depended on script. If it has, the configuration file is $DTS_CFG_FOLDER/[suite_name].cfg\n+For example, suite metrics has its suite configure file $DTS_CFG_FOLDER/metric.cfg:\n+\n+.. code-block:: console\n+\n+ [suite]\n+ frames_cfg = { 64: 0.07, 128: 0.04, 256: 0.02, 512: 0.01, 1024: 0.01 }\n+ duration = 60\n+ sample_number = 3\n+ rates = [100, 80, 40, 20]\n+\n+\n+Configure your pktgen\n+~~~~~~~~~~~~~~~~~~~~~\n+\n+Pktgen information are configured in $DTS_CFG_FOLDER/pktgen.cfg, pktgen_group must be configured too:\n+\n+* traffic generator is ``TRex``, set ``pktgen_group=trex`` in crbs.cfg.\n+* traffic generator is ``IXIA``, set ``pktgen_group=ixia`` in crbs.cfg.\n+\n+Then configure $DTS_CFG_FOLDER/pktgen.cfg as following:\n+\n+.. code-block:: console\n+\n+ [TREX]\n+ trex_root_path=/opt/trex/v2.84/\n+ trex_lib_path=/opt/trex/v2.84/automation/trex_control_plane/interactive\n+ config_file=/etc/trex_cfg.yaml\n+ server=192.168.1.1 # equal to tester IP, TREX should be installed in tester\n+ pcap_file=/opt/trex/v2.84/stl/sample.pacp\n+ core_num=16\n+ ip_src=16.0.0.1\n+ ip_dst=10.0.0.1\n+ warmup=15\n+ duration=-1\n+ start_trex=yes\n+\n+ [IXIA]\n+ ixia_version=6.62\n+ ixia_ip=xxx.xxx.xxx.xxx\n+ ixia_ports=\n+ card=1,port=1;\n+ card=1,port=2;\n+ card=1,port=3;\n+ card=1,port=4;\n+\n+* TREX: section name for TRex.\n+* trex_root_path: source code path for TRex\n+* trex_lib_path: the director where dts can import Trex API\n+* start_trex: whether DTS start TRex server, suggest 'yes' for one-time test, and 'no' for CI integration\n+\n+* IXIA: section name for IXIA.\n+* ixia_version: the version of IxExplorer.\n+* ixia_ip: IP of ixia\n+* ixia_ports: ixia ports connected to DUT.\n+\n+Here are an example for TRex:\n+\n+.. code-block:: console\n+\n+ [TREX]\n+ trex_root_path=/opt/trex/v2.84/\n+ trex_lib_path=/opt/trex/v2.84/automation/trex_control_plane/interactive\n+ config_file=/etc/trex_cfg.yaml\n+ server=192.168.1.1 # equal to tester IP, TREX should be installed in tester\n+ pcap_file=/opt/trex/v2.84/stl/sample.pacp\n+ core_num=16\n+ ip_src=16.0.0.1\n+ ip_dst=10.0.0.1\n+ warmup=15\n+ duration=-1\n+ start_trex=yes\n+\n+Here are an example for IXIA:\n+\n+.. code-block:: console\n+\n+ [IXIA]\n+ ixia_version=9.00\n+ ixia_ip=192.168.2.1\n+ ixia_ports=\n+ card=3,port=1;\n+ card=3,port=2;\n+ ixia_force100g=disable\n+\n+\n+Running the Application\n+-----------------------\n+\n+DTS supports multiple parameters which will select different of working mode of test framework.\n+In the meantime, DTS can work with none parameter, then every parameter will set to its default value:\n+\n+.. code-block:: console\n+\n+ usage: main.py [-h] [--config-file CONFIG_FILE] [--snapshot SNAPSHOT] [--output OUTPUT] [-s]\n+ [-t TEST_CASES] [-d DIR] [-v] [--debug] [--debugcase] [--re_run RE_RUN]\n+ [--commands COMMANDS] [--update-expected]\n+\n+DTS supports the following parameters:\n+\n+* ``-h, --help``\n+\n+ Display a help message and quit.\n+\n+* ``--config-file CONFIG_FILE``\n+\n+ Execution file which contains test suites, DPDK target information and so on.\n+ The default value is `execution.cfg`.\n+\n+* ``--snapshot SNAPSHOT``\n+\n+ Snapshot .tgz file to use as input。\n+ The deault value is `./dep/dpdk.tar.gz`.\n+\n+* ``--output OUTPUT``\n+\n+ Output directory where dts log and result saved.\n+ The default value is `./output`.\n+\n+* ``-s, --skip-setup``\n+\n+ Skip all possible setup steps done on both DUT and tester.\n+\n+* ``-t TEST_CASES, --test-cases TEST_CASES``\n+\n+ Execute only the specific test cases.\n+ The default value is all test cases.\n+\n+* ``-d DIR``\n+\n+ Output directory where dpdk package is extracted.\n+\n+* ``-v, --verbose``\n+\n+ Enable verbose output, all message output on screen.\n+\n+* ``--debug``\n+\n+ Enable debug mode, user can enter debug mode in process with `ctrl+c`\n+ User can do further debug by attached to sessions or call pdb module by interact interface:\n+\n+.. code-block:: console\n+\n+ help(): show help message\n+ list(): list all connected sessions\n+ connect(name): connect to session directly\n+ exit(): exit dts\n+ quit(): quit debug mode and into normal mode\n+ debug(): call python debug module\n+\n+* ``--debugcase``\n+\n+ Enable debug mode with test cases.\n+ DTS will hang and wait for user command before executing each test case:\n+\n+.. code-block:: console\n+\n+ rerun(): rerun current case\n+ ctrl + d: exit current case\n+\n+* ``--re_run RE_RUN``\n+\n+ Times that will re-run when case failed.\n+ The default value is 0, and it must be >=0.\n+\n+* ``--update-expected``\n+\n+ Enable write-back expected value of performance.\n+ It requires test scripts support.\n+\n+Here are examples:\n+\n+.. code-block:: console\n+\n+ ./dts\n+ ./dts -s\n+ ./dts -s -d /home/dpdk\n+ ./dts --debug\n+ ./dts --debug --debugcase\n+ ./dts --output test1\n", "prefixes": [ "RFC", "v1", "24/24" ] }{ "id": 109291, "url": "