[v2,2/2] test_plans/multiprocess: add 2 cases
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_test_plan.rst | 138 ++++++++++++++++++++++++++
1 file changed, 138 insertions(+)
@@ -17,6 +17,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
-------------
@@ -969,3 +972,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)'
+
+TestCase : test_multiprocess_port_stop
+======================================
+Subcase 1: secondary_port_stop
+------------------------------
+test steps
+~~~~~~~~~~
+
+1. Launch the app ``testpmd``, start primary process and secondary process with the following arguments::
+
+ ./dpdk-testpmd -l 1,2 --proc-type=auto -a 0000:17:00.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:00.0 --log-level=ice,7 -- -i --rxq=8 --txq=8 --num-procs=2 --proc-id=1
+
+2. stop fwd in secondary process and start fwd in primary process::
+
+ 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="B4:96:91:BB:64:54", src="52:00:00:00:00:00")/IP()/Raw(load="P"*20)], iface="ens6")
+
+expected result
+~~~~~~~~~~~~~~~
+
+Check that one packet was received::
+
+ primary process:
+ testpmd> port 0/queue 0: received 1 packets
+
+ 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: 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:00.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:00.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="B4:96:91:BB:64:54", 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: 0 RX-total: 0
+ TX-packets: 0 TX-dropped: 0 TX-total: 0
+ ----------------------------------------------------------------------------
+
+TestCase: test_multiprocess_secondary_port_reset
+================================================
+Subcase 1: primary_port_reset
+------------------------------
+test steps
+~~~~~~~~~~
+
+1. Launch the app ``testpmd``, start 2 process with the following argumentss::
+
+ ./dpdk-testpmd -l 1,2 --proc-type=auto -a 0000:17:00.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:00.0 --log-level=ice,7 -- -i --rxq=8 --txq=8 --num-procs=2 --proc-id=1
+
+
+2. reset port in primary::
+
+ 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 the following arguments::
+
+ ./dpdk-testpmd -l 1,2 --proc-type=auto -a 0000:17:00.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:00.0 --log-level=ice,7 -- -i --rxq=8 --txq=8 --num-procs=2 --proc-id=1
+
+2. reset port in secondary::
+
+ 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