test suite reviews and discussions
 help / color / mirror / Atom feed
From: "Zhu, WenhuiX" <wenhuix.zhu@intel.com>
To: "Zhang, YanX A" <yanx.a.zhang@intel.com>, "dts@dpdk.org" <dts@dpdk.org>
Cc: "Zhang, YanX A" <yanx.a.zhang@intel.com>
Subject: Re: [dts] [PATCH V1] tests/TestSuite_vf_kernel:Optimize validation	results and scripts
Date: Tue, 4 Jun 2019 05:29:41 +0000	[thread overview]
Message-ID: <E08767FB2CE10642B6780736EAC070F604966723@shsmsx102.ccr.corp.intel.com> (raw)
In-Reply-To: <1559625890-133337-1-git-send-email-yanx.a.zhang@intel.com>


Tested-by: Zhu, WenhuiX <wenhuix.zhu@intel.com>

-----Original Message-----
From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of zhang,yan
Sent: Tuesday, June 4, 2019 1:25 PM
To: dts@dpdk.org
Cc: Zhang, YanX A <yanx.a.zhang@intel.com>
Subject: [dts] [PATCH V1] tests/TestSuite_vf_kernel:Optimize validation results and scripts

1.Modify the verification result of the case.
    --Before each case runs, we need to check that the connection state of the corresponding NIC is yes. If no, we need to call the restore_interfaces_linux() method to restore the NIC state to yes, and there is no need to do any other operations.
2.Add code to check NIC status.
    --Sometimes, ifconfig %s up does not take effect due to the case running too fast, and it needs to wait for a certain period of time.
3.Add time.sleep() to enable tcpdump to start normally.
    --Sometimes, the tcpdump command requires a certain open time, otherwise the corresponding packet cannot be fetched.
4.Replace the virtual NIC intf0 to intf1.
    --When all cases run together, it will affect the intf0 NIC required by test_vlan, so replace intf0 to intf1.

Signed-off-by: zhang,yan <yanx.a.zhang@intel.com>
---
 tests/TestSuite_vf_kernel.py | 38 +++++++++++++++++++++---------------
 1 file changed, 22 insertions(+), 16 deletions(-)

diff --git a/tests/TestSuite_vf_kernel.py b/tests/TestSuite_vf_kernel.py index f80c9e9..92b1202 100644
--- a/tests/TestSuite_vf_kernel.py
+++ b/tests/TestSuite_vf_kernel.py
@@ -226,8 +226,16 @@ class TestVfKernel(TestCase):
         """
         for i in range(5):
             # pf up + vf up -> vf up
+            start_time = time.time()
             self.vm0_dut.send_expect("ifconfig %s up" % self.vm0_intf0, "#")
             out = self.vm0_dut.send_expect("ethtool %s" % self.vm0_intf0, "#")
+            while "Link detected: yes" not in out:
+                end_time = time.time()
+                if end_time - start_time >= 3:
+                    break
+                else:
+                    out = self.vm0_dut.send_expect("ethtool %s" % self.vm0_intf0, "#")
+                    time.sleep(1)
             self.verify("Link detected: yes" in out, "Wrong link status")
             time.sleep(3)
 
@@ -391,6 +399,7 @@ class TestVfKernel(TestCase):
     def verify_vm_tcpdump(self, vm_dut, intf, mac, pkt_lens=64, num=1, vlan_id='', param=''):
         vm_dut.send_expect("tcpdump -i %s %s -e ether src %s" %
                            (intf, param, self.tester_mac), "tcpdump", 10)
+        time.sleep(2)
         self.send_packet(mac, pkt_lens, num, vlan_id)
         out = vm_dut.get_session_output(timeout=10)
         vm_dut.send_expect("^C", "#", 10) @@ -417,8 +426,8 @@ class TestVfKernel(TestCase):
         vlan_ids = random.randint(1, 4095)
         self.dut_testpmd.execute_cmd("vlan set filter on 0")
         self.dut_testpmd.execute_cmd("vlan set strip on 0")
-        self.vm0_dut.send_expect("ifconfig %s up" % self.vm0_intf0, "#")
-        vm0_vf0_mac = self.vm0_dut.ports_info[0]['port'].get_mac_addr()
+        self.vm0_dut.send_expect("ifconfig %s up" % self.vm0_intf1, "#")
+        vm0_vf1_mac = self.vm0_dut.ports_info[1]['port'].get_mac_addr()
 
         self.vm0_dut.send_expect("modprobe 8021q", "#")
         out = self.vm0_dut.send_expect("lsmod |grep 8021q", "#") @@ -426,33 +435,33 @@ class TestVfKernel(TestCase):
 
         # Add random vlan id(0~4095) on kernel VF0
         self.vm0_dut.send_expect("vconfig add %s %s" %
-                                 (self.vm0_intf0, vlan_ids), "#")
+                                 (self.vm0_intf1, vlan_ids), "#")
         out = self.vm0_dut.send_expect("ls /proc/net/vlan/ ", "#")
-        self.verify("%s.%s" % (self.vm0_intf0, vlan_ids)
+        self.verify("%s.%s" % (self.vm0_intf1, vlan_ids)
                     in out, "take vlan id failure")
 
         # Send packet from tester to VF MAC with not-matching vlan id, check
         # the packet can't be received at the vlan device
         # fortville nic need add -p parameter to disable promisc mode
         wrong_vlan = vlan_ids % 4095 + 1
-        self.verify(self.verify_vm_tcpdump(self.vm0_dut, self.vm0_intf0, vm0_vf0_mac,
+        self.verify(self.verify_vm_tcpdump(self.vm0_dut, 
+ self.vm0_intf1, vm0_vf1_mac,
                                            vlan_id='%d' % wrong_vlan, param='-p') == False, "received wrong vlan packet")
         # Send packet from tester to VF MAC with matching vlan id, check the packet can be received at the vlan device.
         # check_result = self.verify_vm_tcpdump(self.vm0_dut, self.vm0_intf0, self.vm0_vf0_mac, vlan_id='%d' %vlan_ids)
         check_result = self.verify_vm_tcpdump(
-            self.vm0_dut, self.vm0_intf0, vm0_vf0_mac, vlan_id='%d' % vlan_ids, param='-p')
+            self.vm0_dut, self.vm0_intf1, vm0_vf1_mac, vlan_id='%d' % 
+ vlan_ids, param='-p')
         self.verify(check_result, "can't received vlan_id=%d packet" % vlan_ids)
 
         # Delete configured vlan device
         self.vm0_dut.send_expect("vconfig rem %s.%s" %
-                                 (self.vm0_intf0, vlan_ids), "#")
+                                 (self.vm0_intf1, vlan_ids), "#")
         out = self.vm0_dut.send_expect("ls /proc/net/vlan/ ", "#")
-        self.verify("%s.%s" % (self.vm0_intf0, vlan_ids)
+        self.verify("%s.%s" % (self.vm0_intf1, vlan_ids)
                     not in out, "vlan error")
         # behavior is different between niantic and fortville ,because of kernel
         # driver
-        self.verify(self.verify_vm_tcpdump(self.vm0_dut, self.vm0_intf0,
-                                           vm0_vf0_mac, vlan_id='%d' % vlan_ids, param='-p') == False, "delete vlan error")
+        self.verify(self.verify_vm_tcpdump(self.vm0_dut, self.vm0_intf1,
+                                           vm0_vf1_mac, vlan_id='%d' % 
+ vlan_ids, param='-p') == False, "delete vlan error")
         self.dut_testpmd.execute_cmd("vlan set filter off 0")
 
     def test_packet_statistic(self):
@@ -486,18 +495,15 @@ class TestVfKernel(TestCase):
         for i in range(5):
             # down-up get new mac form pf.
             # because  dpdk pf will give an random mac when dpdk pf restart.
-            session.send_expect("ifconfig %s down" % intf, "#")
-            out = session.send_expect("ifconfig %s up" % intf, "#")
+            out = session.send_expect("ethtool %s" % intf, "#")
             # SIOCSIFFLAGS: Network is down
             # i think the pf link abnormal
-            if "Network is down" in out:
+            if "Link detected: no" in out:
                 print GREEN(out)
                 print GREEN("Try again")
                 session.restore_interfaces_linux()
             else:
-                out = session.send_expect("ethtool %s" % intf, "#")
-                if "Link detected: yes" in out:
-                    return True
+                return True
             time.sleep(1)
         return False
 
--
2.17.2


  reply	other threads:[~2019-06-04  5:29 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-04  5:24 zhang,yan
2019-06-04  5:29 ` Zhu, WenhuiX [this message]
2019-06-05  5:17 ` Tu, Lijuan

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=E08767FB2CE10642B6780736EAC070F604966723@shsmsx102.ccr.corp.intel.com \
    --to=wenhuix.zhu@intel.com \
    --cc=dts@dpdk.org \
    --cc=yanx.a.zhang@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).