From: "Tu, Lijuan" <lijuan.tu@intel.com>
To: "Ma, LihongX" <lihongx.ma@intel.com>, "dts@dpdk.org" <dts@dpdk.org>
Cc: "Ma, LihongX" <lihongx.ma@intel.com>
Subject: Re: [dts] [PATCH V1] tests/vm2vm_virtio_pmd: update testcase according to plan
Date: Wed, 7 Aug 2019 03:43:20 +0000 [thread overview]
Message-ID: <8CE3E05A3F976642AAB0F4675D0AD20E0BAFECBF@SHSMSX101.ccr.corp.intel.com> (raw)
In-Reply-To: <1563232866-19164-1-git-send-email-lihongx.ma@intel.com>
Applied, thanks
> -----Original Message-----
> From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of lihong
> Sent: Tuesday, July 16, 2019 7:21 AM
> To: dts@dpdk.org
> Cc: Ma, LihongX <lihongx.ma@intel.com>
> Subject: [dts] [PATCH V1] tests/vm2vm_virtio_pmd: update testcase
> according to plan
>
> Signed-off-by: lihong <lihongx.ma@intel.com>
> ---
> tests/TestSuite_vm2vm_virtio_pmd.py | 153
> ++++++++++++++++++++++++++++++------
> 1 file changed, 128 insertions(+), 25 deletions(-)
>
> diff --git a/tests/TestSuite_vm2vm_virtio_pmd.py
> b/tests/TestSuite_vm2vm_virtio_pmd.py
> index 9a62ac8..ca97d4d 100644
> --- a/tests/TestSuite_vm2vm_virtio_pmd.py
> +++ b/tests/TestSuite_vm2vm_virtio_pmd.py
> @@ -33,12 +33,16 @@
> DPDK Test suite.
>
> Test cases for Vhost-user/Virtio-pmd VM2VM
> +Test cases for vhost/virtio-pmd(0.95/1.0) VM2VM test with 3 rx/tx
> +paths, includes mergeable, normal, vector_rx.
> +About mergeable path check the large packet payload.
> """
> import re
> import time
> import utils
> from virt_common import VM
> from test_case import TestCase
> +from packet import load_pcapfile
>
>
> class TestVM2VMVirtioPMD(TestCase):
> @@ -53,13 +57,14 @@ class TestVM2VMVirtioPMD(TestCase):
> self.coremask = utils.create_mask(self.cores)
> self.memory_channel = self.dut.get_memory_channels()
> self.vm_num = 2
> + self.dump_pcap = "/root/pdump-rx.pcap"
>
> def set_up(self):
> """
> run before each test case.
> """
> self.table_header = ["FrameSize(B)", "Mode",
> - "Throughput(Mpps)", "Path"]
> + "Throughput(Mpps)", "Queue Number", "Path"]
> self.result_table_create(self.table_header)
> self.dut.send_expect("killall -s INT testpmd", "#")
> self.dut.send_expect("killall -s INT qemu-system-x86_64", "#") @@ -
> 68,6 +73,20 @@ class TestVM2VMVirtioPMD(TestCase):
> self.vm_dut = []
> self.vm = []
>
> + def enable_pcap_lib_in_dpdk(self, client_dut):
> + """
> + enable pcap lib in dpdk code and recompile
> + """
> + client_dut.send_expect("sed -i
> 's/CONFIG_RTE_LIBRTE_PMD_PCAP=n$/CONFIG_RTE_LIBRTE_PMD_PCAP=y/'
> config/common_base", "#")
> + client_dut.build_install_dpdk(self.target)
> +
> + def disable_pcap_lib_in_dpdk(self, client_dut):
> + """
> + reset pcap lib in dpdk and recompile
> + """
> + client_dut.send_expect("sed -i
> 's/CONFIG_RTE_LIBRTE_PMD_PCAP=y$/CONFIG_RTE_LIBRTE_PMD_PCAP=n/'
> config/common_base", "#")
> + client_dut.build_install_dpdk(self.target)
> +
> def start_vhost_testpmd(self):
> """
> launch the testpmd on vhost side @@ -84,22 +103,32 @@ class
> TestVM2VMVirtioPMD(TestCase):
> self.vhost.send_expect("set fwd mac", "testpmd> ", 30)
> self.vhost.send_expect("start", "testpmd> ", 30)
>
> - def start_vm_testpmd(self, vm_client, path_mode):
> + def start_vm_testpmd(self, vm_client, path_mode, extern_param=""):
> """
> launch the testpmd in vm
> """
> if path_mode == "mergeable":
> - command = self.dut.target + "/app/testpmd " + \
> - "-c 0x3 -n 4 -- -i --tx-offloads=0x00 " + \
> - "--enable-hw-vlan-strip --txd=1024 --rxd=1024"
> + command = self.dut.target + "/app/testpmd -c 0x3 -n 4 " + \
> + "--file-prefix=virtio -- -i --tx-offloads=0x00 " + \
> + "--enable-hw-vlan-strip --txd=1024 --rxd=1024 %s"
> elif path_mode == "normal":
> - command = self.dut.target + "/app/testpmd " + \
> - "-c 0x3 -n 4 -- -i --tx-offloads=0x00 " + \
> - "--enable-hw-vlan-strip --txd=1024 --rxd=1024"
> + command = self.dut.target + "/app/testpmd -c 0x3 -n 4 " + \
> + "--file-prefix=virtio -- -i --tx-offloads=0x00 " + \
> + "--enable-hw-vlan-strip --txd=1024 --rxd=1024 %s"
> elif path_mode == "vector_rx":
> - command = self.dut.target + "/app/testpmd " + \
> - "-c 0x3 -n 4 -- -i --txd=1024 --rxd=1024"
> - vm_client.send_expect(command, "testpmd> ", 20)
> + command = self.dut.target + "/app/testpmd -c 0x3 -n 4 " + \
> + "--file-prefix=virtio -- -i --txd=1024 --rxd=1024 %s"
> + vm_client.send_expect(command % extern_param, "testpmd> ", 20)
> +
> + def launch_pdump_in_vm(self, vm_client):
> + """
> + bootup pdump in VM
> + """
> + self.vm_dump = vm_client.new_session(suite="pdump")
> + command_line = self.target + "/app/dpdk-pdump " + \
> + "-v --file-prefix=virtio -- " + \
> + "--pdump 'port=0,queue=*,rx-dev=%s,mbuf-size=8000'"
> + self.vm_dump.send_expect(command_line % self.dump_pcap, 'Port')
>
> def start_vms(self, mode=0, mergeable=True):
> """
> @@ -153,6 +182,7 @@ class TestVM2VMVirtioPMD(TestCase):
> results_row = [frame_size]
> results_row.append(case_info)
> results_row.append(Mpps)
> + results_row.append(1)
> results_row.append(path)
> self.result_table_add(results_row)
>
> @@ -170,34 +200,51 @@ class TestVM2VMVirtioPMD(TestCase):
> self.update_table_info(mode, 64, Mpps, path)
> self.result_table_print()
>
> + def check_packet_payload_valid(self, vm_dut):
> + """
> + check the payload is valid
> + """
> + # stop pdump
> + self.vm_dump.send_expect('^c', '# ', 60)
> + # quit testpmd
> + vm_dut.send_expect('quit', '#', 60)
> + time.sleep(2)
> + vm_dut.session.copy_file_from(src="%s" % self.dump_pcap, dst="%s" %
> self.dump_pcap)
> + pkts = load_pcapfile(self.dump_pcap)
> + self.verify(len(pkts) == 10, "The vm0 do not capture all the packets")
> + data = str(pkts[0].pktgen.pkt['Raw'])
> + for i in range(1, 10):
> + value = str(pkts[i].pktgen.pkt['Raw'])
> + self.verify(data == value, "the payload in receive packets
> + has been changed")
> +
> def stop_all_apps(self):
> for i in range(len(self.vm)):
> self.vm_dut[i].send_expect("quit", "#", 20)
> self.vm[i].stop()
> self.vhost.send_expect("quit", "#", 30)
>
> - def test_vhost_vm2vm_virito_pmd_with_mergeable_path(self):
> + def test_vhost_vm2vm_virtio_pmd_with_normal_path(self):
> """
> - vhost-user + virtio-pmd with mergeable path
> + vhost-user + virtio-pmd with normal path
> """
> - path_mode = "mergeable"
> + path_mode = "normal"
> self.start_vhost_testpmd()
> - self.start_vms(mode=0, mergeable=True)
> + self.start_vms(mode=0, mergeable=False)
> self.start_vm_testpmd(self.vm_dut[0], path_mode)
> self.start_vm_testpmd(self.vm_dut[1], path_mode)
> - self.send_and_verify(mode="virtio 0.95", path=path_mode)
> + self.send_and_verify(mode="virtio 0.95 normal path",
> + path=path_mode)
> self.stop_all_apps()
>
> - def test_vhost_vm2vm_virtio_pmd_with_normal_path(self):
> + def test_vhost_vm2vm_virito_10_pmd_with_normal_path(self):
> """
> - vhost-user + virtio-pmd with normal path
> + vhost-user + virtio1.0-pmd with normal path
> """
> path_mode = "normal"
> self.start_vhost_testpmd()
> - self.start_vms(mode=0, mergeable=False)
> + self.start_vms(mode=1, mergeable=False)
> self.start_vm_testpmd(self.vm_dut[0], path_mode)
> self.start_vm_testpmd(self.vm_dut[1], path_mode)
> - self.send_and_verify(mode="virtio 0.95", path=path_mode)
> + self.send_and_verify(mode="virtio 1.0 normal path",
> + path=path_mode)
> self.stop_all_apps()
>
> def test_vhost_vm2vm_virtio_pmd_with_vector_rx_path(self):
> @@ -209,19 +256,75 @@ class TestVM2VMVirtioPMD(TestCase):
> self.start_vms(mode=0, mergeable=False)
> self.start_vm_testpmd(self.vm_dut[0], path_mode)
> self.start_vm_testpmd(self.vm_dut[1], path_mode)
> - self.send_and_verify(mode="virtio 0.95", path=path_mode)
> + self.send_and_verify(mode="virtio 0.95 vector_rx", path=path_mode)
> + self.stop_all_apps()
> +
> + def test_vhost_vm2vm_virtioi10_pmd_with_vector_rx_path(self):
> + """
> + vhost-user + virtio1.0-pmd with vector_rx path
> + """
> + path_mode = "vector_rx"
> + self.start_vhost_testpmd()
> + self.start_vms(mode=1, mergeable=False)
> + self.start_vm_testpmd(self.vm_dut[0], path_mode)
> + self.start_vm_testpmd(self.vm_dut[1], path_mode)
> + self.send_and_verify(mode="virtio 1.0 vector_rx", path=path_mode)
> + self.stop_all_apps()
> +
> + def test_vhost_vm2vm_virito_pmd_with_mergeable_path(self):
> + """
> + vhost-user + virtio-pmd with mergeable path test with payload check
> + """
> + path_mode = "mergeable"
> + extern_param = '--max-pkt-len=9600'
> + self.start_vhost_testpmd()
> + self.start_vms(mode=0, mergeable=True)
> + # enable pcap in VM0
> + self.enable_pcap_lib_in_dpdk(self.vm_dut[0])
> + # git the vm enough huge to run pdump
> + self.vm_dut[0].set_huge_pages(2048)
> + # start testpmd and pdump in VM0
> + self.start_vm_testpmd(self.vm_dut[0], path_mode, extern_param)
> + self.vm_dut[0].send_expect('set fwd rxonly', 'testpmd> ', 30)
> + self.vm_dut[0].send_expect('start', 'testpmd> ', 30)
> + self.launch_pdump_in_vm(self.vm_dut[0])
> + # start testpmd in VM1 and start to send packet
> + self.start_vm_testpmd(self.vm_dut[1], path_mode, extern_param)
> + self.vm_dut[1].send_expect('set txpkts 2000,2000,2000,2000', 'testpmd>
> ', 30)
> + self.vm_dut[1].send_expect('set burst 1', 'testpmd> ', 30)
> + self.vm_dut[1].send_expect('start tx_first 10', 'testpmd> ', 30)
> + # check the packet in vm0
> + self.check_packet_payload_valid(self.vm_dut[0])
> + # reset the evn in vm
> + self.disable_pcap_lib_in_dpdk(self.vm_dut[0])
> self.stop_all_apps()
>
> def test_vhost_vm2vm_virito_10_pmd_with_mergeable_path(self):
> """
> - vhost-user + virtio1.0-pmd with mergeable path
> + vhost-user + virtio1.0-pmd with mergeable path test with
> + payload check
> """
> path_mode = "mergeable"
> + extern_param = '--max-pkt-len=9600'
> self.start_vhost_testpmd()
> self.start_vms(mode=1, mergeable=True)
> - self.start_vm_testpmd(self.vm_dut[0], path_mode)
> - self.start_vm_testpmd(self.vm_dut[1], path_mode)
> - self.send_and_verify(mode="virtio 1.0", path=path_mode)
> + # enable pcap in VM0
> + self.enable_pcap_lib_in_dpdk(self.vm_dut[0])
> + # git the vm enough huge to run pdump
> + self.vm_dut[0].set_huge_pages(2048)
> + # start testpmd and pdump in VM0
> + self.start_vm_testpmd(self.vm_dut[0], path_mode, extern_param)
> + self.vm_dut[0].send_expect('set fwd rxonly', 'testpmd> ', 30)
> + self.vm_dut[0].send_expect('start', 'testpmd> ', 30)
> + self.launch_pdump_in_vm(self.vm_dut[0])
> + # start testpmd in VM1 and start to send packet
> + self.start_vm_testpmd(self.vm_dut[1], path_mode, extern_param)
> + self.vm_dut[1].send_expect('set txpkts 2000,2000,2000,2000', 'testpmd>
> ', 30)
> + self.vm_dut[1].send_expect('set burst 1', 'testpmd> ', 30)
> + self.vm_dut[1].send_expect('start tx_first 10', 'testpmd> ', 30)
> + # check the packet in vm0
> + self.check_packet_payload_valid(self.vm_dut[0])
> + # reset the evn in vm
> + self.disable_pcap_lib_in_dpdk(self.vm_dut[0])
> self.stop_all_apps()
>
> def tear_down(self):
> --
> 2.7.4
prev parent reply other threads:[~2019-08-07 3:43 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-15 23:21 lihong
2019-08-07 3:43 ` Tu, Lijuan [this message]
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=8CE3E05A3F976642AAB0F4675D0AD20E0BAFECBF@SHSMSX101.ccr.corp.intel.com \
--to=lijuan.tu@intel.com \
--cc=dts@dpdk.org \
--cc=lihongx.ma@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).