test suite reviews and discussions
 help / color / mirror / Atom feed
From: Song Jiale <songx.jiale@intel.com>
To: dts@dpdk.org
Cc: Song Jiale <songx.jiale@intel.com>, Jin Ling <jin.ling@intel.com>
Subject: [dts] [PATCH V2 2/2] test_plans/multiprocess_iavf: add 2 cases
Date: Tue, 27 Dec 2022 17:44:20 +0000	[thread overview]
Message-ID: <20221227174420.513616-2-songx.jiale@intel.com> (raw)
In-Reply-To: <20221227174420.513616-1-songx.jiale@intel.com>

in DPDK multiprocess, all operations done by the secondary process on the hardware are invalid.
so action 'port stop' and 'port reset' only work in primary process. 
add 2 cases to test it.

Signed-off-by: Jin Ling <jin.ling@intel.com>
---
 test_plans/multiprocess_iavf_test_plan.rst | 142 ++++++++++++++++++++-
 1 file changed, 141 insertions(+), 1 deletion(-)

diff --git a/test_plans/multiprocess_iavf_test_plan.rst b/test_plans/multiprocess_iavf_test_plan.rst
index 2f5ae54a..f28f2042 100644
--- a/test_plans/multiprocess_iavf_test_plan.rst
+++ b/test_plans/multiprocess_iavf_test_plan.rst
@@ -47,6 +47,9 @@ twice - once as a primary instance, and once as a secondary instance. Messages
 are sent from primary to secondary and vice versa, demonstrating the processes
 are sharing memory and can communicate using rte_ring structures.
 
+In DPDK multprocess, all operations done by the secondary process on the hardware are invalid
+So action `port stop` and `port reset` only work in primary process.
+
 Prerequisites
 -------------
 
@@ -54,9 +57,11 @@ If using vfio the kernel must be >= 3.6+ and VT-d must be enabled in bios.When
 using vfio, use the following commands to load the vfio driver and bind it
 to the device under test::
 
+   echo 1 > /sys/bus/pci/devices/0000:17:00.0/sriov_numvfs
+   ip link set ens9 vf0 mac 00:11:22:33:44:55
    modprobe vfio
    modprobe vfio-pci
-   usertools/dpdk-devbind.py --bind=vfio-pci device_bus_id
+   usertools/dpdk-devbind.py --bind=vfio-pci {vf_pci}
 
 Assuming that a DPDK build has been set up and the multi-process sample
 applications have been built.
@@ -948,3 +953,138 @@ Test Case: test_multiprocess_negative_exceed_process_num
     the first and second processes should be launched successfully
     the third process should be launched failed and output should contain the following string:
     'multi-process option proc-id(2) should be less than num-procs(2)'
+
+Test Case: test_multiprocess_port_stop
+======================================
+Subcase 1: primary_port_stop
+----------------------------
+test steps
+~~~~~~~~~~
+
+1. Launch the app ``testpmd``, start 2 process with the following arguments::
+
+   ./dpdk-testpmd -l 1,2 --proc-type=auto -a 0000:17:01.0 --log-level=ice,7 -- -i --rxq=8 --txq=8  --num-procs=2 --proc-id=0
+   ./dpdk-testpmd -l 3,4 --proc-type=auto -a 0000:17:01.0 --log-level=ice,7 -- -i --rxq=8 --txq=8  --num-procs=2 --proc-id=1
+
+2. stop port  in secondary process and start fwd in primary::
+
+    secondary process:
+      testpmd> port stop 0
+
+    primary process:
+      testpmd> set fwd rxonly
+      testpmd> set verbose 1
+      testpmd> start
+
+3. send 1 packet from scapy::
+
+   >>> sendp([Ether(dst="00:11:22:33:44:55", src="52:00:00:00:00:00")/IP()/Raw(load="P"*20)], iface="ens6")
+
+expected result
+~~~~~~~~~~~~~~~
+
+Check that one packet was received in primary process::
+
+    primary process:
+      testpmd> stop
+
+      ---------------------- Forward statistics for port 0  ----------------------
+        RX-packets: 1              RX-dropped: 0             RX-total: 1
+        TX-packets: 0              TX-dropped: 0             TX-total: 0
+      ----------------------------------------------------------------------------
+
+Subcase 2:secondary_port_stop
+------------------------------
+test steps
+~~~~~~~~~~
+
+1. Launch the app ``testpmd``, start 2 process with the following arguments::
+
+   ./dpdk-testpmd -l 1,2 --proc-type=auto -a 0000:17:01.0 --log-level=ice,7 -- -i --rxq=8 --txq=8  --num-procs=2 --proc-id=0
+   ./dpdk-testpmd -l 3,4 --proc-type=auto -a 0000:17:01.0 --log-level=ice,7 -- -i --rxq=8 --txq=8  --num-procs=2 --proc-id=1
+
+2. stop port in primary process and start fwd in secondary::
+
+    primary process:
+      testpmd> port stop 0
+
+    secondary process:
+      testpmd> set fwd rxonly
+      testpmd> set verbose 1
+      testpmd> start
+
+3. send 1 packet from scapy::
+
+   >>> sendp([Ether(dst="00:11:22:33:44:55", src="52:00:00:00:00:00")/IP()/Raw(load="P"*20)], iface="ens6")
+
+expected result
+~~~~~~~~~~~~~~~
+
+   Check that no packet was received.
+
+   secondary process::
+
+    testpmd> stop
+    Telling cores to stop...
+    Waiting for lcores to finish...
+
+    ---------------------- Forward statistics for port 0  ----------------------
+    RX-packets: 0              RX-dropped: 1             RX-total: 1
+    TX-packets: 0              TX-dropped: 0             TX-total: 0
+    ----------------------------------------------------------------------------
+
+
+TestCase: test_multiprocess_vf_reset
+====================================
+Subcase 1: primary_port_reset
+-----------------------------
+test steps
+~~~~~~~~~~
+
+1. Launch the app ``testpmd``, start 2 process with rxq/txq set as 8 (proc_id:0~1, queue id:0~7) with the following arguments::
+
+    ./dpdk-testpmd -l 1,2 --proc-type=auto -a 0000:17:01.0 --log-level=ice,7 -- -i --rxq=8 --txq=8 --num-procs=2 --proc-id=0
+    ./dpdk-testpmd -l 3,4 --proc-type=auto -a 0000:17:01.0 --log-level=ice,7 -- -i --rxq=8 --txq=8 --num-procs=2 --proc-id=1
+
+
+2. reset port in primary when secondary is running::
+
+    primary process:
+      testpmd> port stop 0
+      testpmd> port reset 0
+
+
+expected result
+~~~~~~~~~~~~~~~
+
+secondary process & primary process::
+
+     testpmd>show port info 0
+
+   Check that link status of port 0 is `down`
+
+
+Subcase 2: secondary_port_reset
+-------------------------------
+test steps
+~~~~~~~~~~
+
+1. Launch the app ``testpmd``, start 2 process with rxq/txq set as 8 (proc_id:0~1, queue id:0~7) with the following arguments::
+
+    ./dpdk-testpmd -l 1,2 --proc-type=auto -a 0000:17:01.0 --log-level=ice,7 -- -i --rxq=8 --txq=8 --num-procs=2 --proc-id=0
+    ./dpdk-testpmd -l 3,4 --proc-type=auto -a 0000:17:01.0 --log-level=ice,7 -- -i --rxq=8 --txq=8 --num-procs=2 --proc-id=1
+
+2. reset port in secondary when primary is running::
+
+    secondary process:
+      testpmd> port stop 0
+      testpmd> port reset 0
+
+expected result
+~~~~~~~~~~~~~~~
+
+primary process & secondary process::
+
+    testpmd> show port info 0
+
+   Check that link status of port 0 is `up`
\ No newline at end of file
-- 
2.25.1


  reply	other threads:[~2022-12-27  9:46 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-27 17:44 [dts] [PATCH V2 1/2] tests/multiprocess_iavf: add new cases according to testplan Song Jiale
2022-12-27 17:44 ` Song Jiale [this message]
2022-12-28  3:28   ` [dts] [PATCH V2 2/2] test_plans/multiprocess_iavf: add 2 cases Ling, Jin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221227174420.513616-2-songx.jiale@intel.com \
    --to=songx.jiale@intel.com \
    --cc=dts@dpdk.org \
    --cc=jin.ling@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).