test suite reviews and discussions
 help / color / mirror / Atom feed
* [dts] [PATCH V1] tests: judge tcpdump version when use flow direction params
@ 2019-06-10 23:07 lihong
  2019-06-11  6:34 ` Yao, BingX Y
  2019-06-12  6:23 ` Tu, Lijuan
  0 siblings, 2 replies; 3+ messages in thread
From: lihong @ 2019-06-10 23:07 UTC (permalink / raw)
  To: dts; +Cc: lihong

The params of flow direction in tcpdump is varied by tcpdump version.
So add function to get the param base on the version.

Signed-off-by: lihong <lihongx.ma@intel.com>
---
 tests/TestSuite_flow_classify_softnic.py | 27 +++++++++++++++++++++++++--
 tests/TestSuite_ip_pipeline.py           | 27 +++++++++++++++++++++++++--
 2 files changed, 50 insertions(+), 4 deletions(-)

diff --git a/tests/TestSuite_flow_classify_softnic.py b/tests/TestSuite_flow_classify_softnic.py
index 9b339ca..88dcc7e 100644
--- a/tests/TestSuite_flow_classify_softnic.py
+++ b/tests/TestSuite_flow_classify_softnic.py
@@ -120,14 +120,35 @@ class TestFlowClassifySoftnic(TestCase):
         command = "sed -i \'/^table action/a" + cmd + "\' ./drivers/net/softnic/flow_classify_softnic/%s" % filename
         self.dut.send_expect(command, "# ", 20)
 
+    def get_flow_direction_param_of_tcpdump(self):
+        """
+        get flow dirction param depend on tcpdump version
+        """
+        param = ""
+        direct_param = r"(\s+)\[ (\S+) in\|out\|inout \]"
+        out = self.tester.send_expect('tcpdump -h', '# ')
+        for line in out.split('\n'):
+            m = re.match(direct_param, line)
+            if m:
+                opt = re.search("-Q", m.group(2));
+                if opt:
+                    param = "-Q" + " in"
+                else:
+                    opt = re.search("-P", m.group(2));
+                    if opt:
+                        param = "-P" + " in"
+        if len(param) == 0:
+            self.logger.info("tcpdump not support direction choice!!!")
+        return param
+
     def tcpdump_start_sniff(self, interface, filters=""):
         """
         Starts tcpdump in the background to sniff packets that received by interface.
         """
         command = 'rm -f /tmp/tcpdump_{0}.pcap'.format(interface)
         self.tester.send_expect(command, '#')
-        command = 'tcpdump -n -e -Q in -w /tmp/tcpdump_{0}.pcap -i {0} {1} 2>/tmp/tcpdump_{0}.out &'\
-                  .format(interface, filters)
+        command = 'tcpdump -n -e {0} -w /tmp/tcpdump_{1}.pcap -i {1} {2} 2>/tmp/tcpdump_{1}.out &'\
+                  .format(self.param_flow_dir, interface, filters)
         self.tester.send_expect(command, '# ')
 
     def tcpdump_stop_sniff(self):
@@ -373,6 +394,8 @@ class TestFlowClassifySoftnic(TestCase):
         self.tester_itf = self.tester.get_interface(localPort)
         self.copy_config_files_to_dut()
 
+        self.param_flow_dir = self.get_flow_direction_param_of_tcpdump()
+
     def set_up(self):
         """
         Run before each test case.
diff --git a/tests/TestSuite_ip_pipeline.py b/tests/TestSuite_ip_pipeline.py
index 390c69d..f05b5cd 100644
--- a/tests/TestSuite_ip_pipeline.py
+++ b/tests/TestSuite_ip_pipeline.py
@@ -64,14 +64,35 @@ from scapy.sendrecv import sendp
 
 class TestIPPipeline(TestCase):
 
+    def get_flow_direction_param_of_tcpdump(self):
+        """
+        get flow dirction param depend on tcpdump version
+        """
+        param = ""
+        direct_param = r"(\s+)\[ (\S+) in\|out\|inout \]"
+        out = self.tester.send_expect('tcpdump -h', '# ')
+        for line in out.split('\n'):
+            m = re.match(direct_param, line)
+            if m:
+                opt = re.search("-Q", m.group(2));
+                if opt:
+                    param = "-Q" + " in"
+                else:
+                    opt = re.search("-P", m.group(2));
+                    if opt:
+                        param = "-P" + " in"
+        if len(param) == 0:
+            self.logger.info("tcpdump not support direction choice!!!")
+        return param
+
     def tcpdump_start_sniff(self, interface, filters=""):
         """
         Starts tcpdump in the background to sniff packets that received by interface.
         """
         command = 'rm -f /tmp/tcpdump_{0}.pcap'.format(interface)
         self.tester.send_expect(command, '#')
-        command = 'tcpdump -n -e -Q in -w /tmp/tcpdump_{0}.pcap -i {0} {1} 2>/tmp/tcpdump_{0}.out &'\
-                  .format(interface, filters)
+        command = 'tcpdump -n -e {0} -w /tmp/tcpdump_{1}.pcap -i {1} {2} 2>/tmp/tcpdump_{1}.out &'\
+                  .format(self.param_flow_dir, interface, filters)
         self.tester.send_expect(command, '# ')
 
     def tcpdump_stop_sniff(self):
@@ -202,6 +223,8 @@ class TestIPPipeline(TestCase):
         out = self.dut.build_dpdk_apps("./examples/ip_pipeline")
         self.verify("Error" not in out, "Compilation error")
 
+        self.param_flow_dir = self.get_flow_direction_param_of_tcpdump()
+
     def set_up(self):
         """
         Run before each test case.
-- 
2.7.4


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-06-12  6:23 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-10 23:07 [dts] [PATCH V1] tests: judge tcpdump version when use flow direction params lihong
2019-06-11  6:34 ` Yao, BingX Y
2019-06-12  6:23 ` Tu, Lijuan

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).