[dts] [PATCH V1] tests: judge tcpdump version when use flow direction params
Tu, Lijuan
lijuan.tu at intel.com
Wed Jun 12 08:23:47 CEST 2019
Applied, thanks
> -----Original Message-----
> From: dts [mailto:dts-bounces at dpdk.org] On Behalf Of lihong
> Sent: Tuesday, June 11, 2019 7:08 AM
> To: dts at dpdk.org
> Cc: Ma, LihongX <lihongx.ma at intel.com>
> Subject: [dts] [PATCH V1] tests: judge tcpdump version when use flow
> direction params
>
> 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 at 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
More information about the dts
mailing list