[V2,2/2] test_plans/multiprocess_iavf: add 2 cases
Checks
Commit Message
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(-)
Comments
> -----Original Message-----
> From: Jiale, SongX <songx.jiale@intel.com>
> Sent: 2022年12月28日 1:44
> To: dts@dpdk.org
> Cc: Jiale, SongX <songx.jiale@intel.com>; Ling, Jin <jin.ling@intel.com>
> Subject: [dts] [PATCH V2 2/2] test_plans/multiprocess_iavf: add 2 cases
>
> 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(-)
>
Acked-by: Jin Ling <jin.ling@intel.com>
@@ -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