test suite reviews and discussions
 help / color / mirror / Atom feed
From: "Tu, Lijuan" <lijuan.tu@intel.com>
To: "Xu, HailinX" <hailinx.xu@intel.com>, "dts@dpdk.org" <dts@dpdk.org>
Cc: "Xu, HailinX" <hailinx.xu@intel.com>
Subject: Re: [dts] [PATCH v1] tests/large_vf:support cvl 25G
Date: Tue, 19 Jan 2021 06:32:44 +0000	[thread overview]
Message-ID: <38d21c773c8b4ae297f49dcb300d99f5@intel.com> (raw)
In-Reply-To: <1610593720-19326-1-git-send-email-hailinx.xu@intel.com>

It's great to see get max vf numbers from system api, not use hard code.
Could you please update notes too?

> -----Original Message-----
> From: dts <dts-bounces@dpdk.org> On Behalf Of Xu Hailin
> Sent: 2021年1月14日 11:09
> To: dts@dpdk.org
> Cc: Xu, HailinX <hailinx.xu@intel.com>
> Subject: [dts] [PATCH v1] tests/large_vf:support cvl 25G
> 
> From: Hailin Xu <hailinx.xu@intel.com>
> 
> Add the judgment condition of cvl25g network card, because 25g is different
> from 100g.
>   1. The max number of VFS is different
>   2. The number of VFS that can use 256 queues is different
>   3. fix hard code
> 
> Signed-off-by: Hailin Xu <hailinx.xu@intel.com>
> ---
>  tests/TestSuite_large_vf.py | 120 ++++++++++++++++++++++--------------
>  1 file changed, 73 insertions(+), 47 deletions(-)
> 
> diff --git a/tests/TestSuite_large_vf.py b/tests/TestSuite_large_vf.py index
> 77c9fc62..0cba1cdd 100755
> --- a/tests/TestSuite_large_vf.py
> +++ b/tests/TestSuite_large_vf.py
> @@ -172,19 +172,18 @@ multi_fdir_among = {
>      "count": 1000
>  }
> 
> -more_than_4_queues_128_vfs = {
> -    "name": "test_more_than_4_queues_128_vfs",
> +more_than_4_queues_max_vfs = {
> +    "name": "test_more_than_4_queues_max_vfs",
>      "param": ["--txq=8 --rxq=8", "--txq=4 --rxq=4"],
>      "check_param": "configure queues failed"
>  }
> 
> -more_than_128_vfs_4_queues = {
> -    "name": "test_more_than_128_vfs_4_queues",
> -    "vf_num": [128, 129],
> +more_than_max_vfs_4_queues = {
> +    "name": "test_more_than_max_vfs_4_queues",
>      "check_param": "-bash: echo: write error: Numerical result out of range"
>  }
> 
> -max_vfs_4_queues_128 = [multi_fdir_among,
> more_than_4_queues_128_vfs, more_than_128_vfs_4_queues]
> +max_vfs_4_queues_128 = [multi_fdir_among,
> more_than_4_queues_max_vfs,
> +more_than_max_vfs_4_queues]
> 
> 
>  class TestLargeVf(TestCase):
> @@ -203,6 +202,7 @@ class TestLargeVf(TestCase):
>          self.used_dut_port = self.dut_ports[0]
>          self.pf0_intf = self.dut.ports_info[self.dut_ports[0]]['intf']
>          self.pf0_pci = self.dut.ports_info[self.dut_ports[0]]['pci']
> +        self.max_vf_num = int(self.dut.send_expect('cat
> + /sys/bus/pci/devices/%s/sriov_totalvfs' % self.pf0_pci, '#'))
>          self.pf0_mac = self.dut.get_mac_address(0)
> 
>          self.vf_flag = False
> @@ -213,6 +213,9 @@ class TestLargeVf(TestCase):
>          self.pkt = Packet()
>          self.pmd_output = PmdOutput(self.dut)
> 
> +        self.app_path = self.dut.apps_name["test-pmd"]
> +        self.vf_num = 7 if self.max_vf_num > 128 else 3
> +
>      def set_up(self):
>          """
>          Run before each test case.
> @@ -241,11 +244,20 @@ class TestLargeVf(TestCase):
>              self.dut.destroy_sriov_vfs_by_port(self.used_dut_port)
>              self.vf_flag = False
> 
> -    def launch_testpmd(self, param, total=False):
> +    def launch_testpmd(self, param, total=False, retry_times=3):
>          if total:
>              param = param + " --total-num-mbufs=500000"
> -        self.pmd_output.start_testpmd("all", param=param,
> -                                      ports=[self.sriov_vfs_port[0].pci],
> socket=self.ports_socket)
> +        while retry_times:
> +            try:
> +                self.pmd_output.start_testpmd("all", param=param,
> +                                            ports=[self.sriov_vfs_port[0].pci],
> socket=self.ports_socket)
> +                break
> +            except Exception as e:
> +                self.logger.info('start testpmd occurred exception: {}'.format(e))
> +            retry_times = retry_times - 1
> +            time.sleep(1)
> +            self.logger.info('try start testpmd the {}
> + times'.format(retry_times))
> +
> 
>      def config_testpmd(self):
>          self.pmd_output.execute_cmd("set verbose 1") @@ -289,55 +301,64
> @@ class TestLargeVf(TestCase):
>                          self.create_fdir_rule(vectors[0]["rule"])
>                          self.check_match_mismatch_pkts(vectors[0])
>                  elif subcase_name == "test_pf_large_vf_fdir_coexist":
> -                    pmdout = PmdOutput(self.dut, self.session_list[0])
> -                    self.create_pf_rule(pmdout, self.pf0_intf, tv["param"][0],
> tv["param"][1])
> -                    self.send_pkts_pf_check(pmdout, self.pf0_intf, self.pf0_mac,
> tv["param"][0], tv["check_param"], tv["count"])
> +                    self.create_pf_rule(self.pmdout_list[0], self.pf0_intf,
> tv["param"][0], tv["param"][1])
> +                    self.send_pkts_pf_check(self.pmdout_list[0],
> + self.pf0_intf, self.pf0_mac, tv["param"][0], tv["check_param"],
> + tv["count"])
>                      self.create_fdir_rule(vectors[0]["rule"])
>                      self.check_match_mismatch_pkts(vectors[0])
> -                    self.destroy_pf_rule(pmdout, self.pf0_intf)
> +                    self.destroy_pf_rule(self.pmdout_list[0],
> + self.pf0_intf)
>                  elif subcase_name == "test_exceed_256_queues":
>                      self.pmd_output.execute_cmd("quit", "#")
> -                    eal_param = "-w {} --file-prefix=port0vf0 -- -i
> ".format(self.sriov_vfs_port[0].pci)
> -                    cmd = "x86_64-native-linuxapp-gcc/app/dpdk-testpmd  -l 1,2,3,4
> -n 4 " + eal_param + tv["param"][0]
> +                    eal_param = self.dut.create_eal_parameters(prefix='port0vf0',
> ports=[self.sriov_vfs_port[0].pci])
> +                    cmd = "{} ".format(self.app_path) + eal_param + "--
> + -i " + tv["param"][0]
>                      out = self.pmd_output.execute_cmd(cmd, "# ")
>                      self.verify(tv["check_param"] in out, "fail: testpmd start
> successfully")
> -                    self.pmd_output.execute_cmd("quit", "#")
>                      self.launch_testpmd(tv["param"][1])
>                      self.check_rxqtxq_number(512, tv["check_param"])
>                  elif subcase_name == "test_more_than_3_vfs_256_queues":
>                      self.pmd_output.execute_cmd("quit", "#")
> -                    self.destroy_iavf()
> -                    self.create_iavf(4)
> -                    # start 4 testpmd uss 256 queues

Spelling error.

> -                    for i in range(4):
> -                        if i < 3:
> -                            eal_param = "-w {} --file-prefix=port0vf{} -- -i
> ".format(self.sriov_vfs_port[i].pci, i)
> -                            cmd = "x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l
> 1,2,3,4 -n 4 " + eal_param + tv["param"]
> -                            self.session_list[i].send_expect(cmd, "testpmd> ")
> -                        else:
> -                            # start fourth testpmd failed
> -                            eal_param = "-w {} --file-prefix=port0vf3 -- -i
> ".format(self.sriov_vfs_port[3].pci)
> -                            cmd = "x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l
> 1,2,3,4 -n 4 " + eal_param + tv[
> -                                "param"]
> -                            out = self.dut.send_command(cmd)
> +                    # start testpmd uss 256 queues
> +                    for i in range(self.vf_num + 1):
> +                        if self.max_vf_num == 64:
> +                            self.pmdout_list[0].start_testpmd(param=tv["param"],
> ports=[self.sriov_vfs_port[0].pci], prefix='port0vf0')
> +                            eal_param =
> self.dut.create_eal_parameters(fixed_prefix=True,
> ports=[self.sriov_vfs_port[1].pci])
> +                            cmd = "{} ".format(self.app_path) + eal_param + "-- -i " +
> tv["param"]
> +                            out = self.pmd_output.execute_cmd(cmd, "#")
>                              self.verify(tv["check_param"] in out, "fail: testpmd start
> successfully")
> -                            # quit all testpmd
> -                            self.session_list[0].send_expect("quit", "# ")
> -                            self.session_list[1].send_expect("quit", "# ")
> -                            self.session_list[2].send_expect("quit", "# ")
> +                            self.pmdout_list[0].execute_cmd("quit", "# ")
> +                            break
> +                        else:
> +                            if i < self.vf_num:
> +                                self.pmdout_list[i].start_testpmd(param=tv["param"],
> ports=[self.sriov_vfs_port[i].pci],
> +                                                                  prefix='port0vf{}'.format(i))
> +                            else:
> +                                # start fourth testpmd failed
> +                                eal_param =
> self.dut.create_eal_parameters(fixed_prefix=True,
> ports=[self.sriov_vfs_port[-1].pci])
> +                                cmd = "{} ".format(self.app_path) + eal_param + "-- -i " +
> tv["param"]
> +                                out = self.pmd_output.execute_cmd(cmd, "#")
> +                                self.verify(tv["check_param"] in out, "fail: testpmd start
> successfully")
> +                                # quit all testpmd
> +                                self.pmdout_list[0].execute_cmd("quit", "# ")
> +                                self.pmdout_list[1].execute_cmd("quit", "# ")
> +                                self.pmdout_list[2].execute_cmd("quit", "# ")
> +                                if self.vf_num > 3:
> +                                    self.pmdout_list[3].execute_cmd("quit", "# ")
> +                                    self.pmdout_list[4].execute_cmd("quit", "# ")
> +                                    self.pmdout_list[5].execute_cmd("quit", "# ")
> +
> + self.pmdout_list[6].execute_cmd("quit", "# ")
> +
>                  # case 2: 128_vfs_4_queues

	128_vfs_4_queues should be updated too.	

>                  elif subcase_name == "test_multi_fdir_among":
>                      self.create_fdir_rule(tv["rule"])
>                      self.check_match_mismatch_pkts(tv)
> -                elif subcase_name == "test_more_than_128_vfs_4_queues":
> +                elif subcase_name == "test_more_than_max_vfs_4_queues":
>                      self.pmd_output.execute_cmd("quit", "#")
>                      out = self.dut.send_expect("echo {} >
> /sys/bus/pci/devices/{}/sriov_numvfs".format(
> -                        tv["vf_num"][0], self.pf0_pci), "# ")
> -                    self.verify(tv["check_param"] not in out, "fail: create vfs
> successfully")
> +                        self.max_vf_num, self.pf0_pci), "# ")
> +                    self.verify(tv["check_param"] not in out, "fail:
> + create vfs failed")
>                      out = self.dut.send_expect("echo {} >
> /sys/bus/pci/devices/{}/sriov_numvfs".format(
> -                        tv["vf_num"][1], self.pf0_pci), "# ")
> +                        self.max_vf_num + 1, self.pf0_pci), "# ")
>                      self.verify(tv["check_param"] in out, "fail: create vfs successfully")
> -                elif subcase_name == "test_more_than_4_queues_128_vfs":
> +                elif subcase_name == "test_more_than_4_queues_max_vfs":
>                      self.pmd_output.execute_cmd("quit", "# ")
>                      out = self.pmd_output.start_testpmd("all",
> param=tv["param"][0],
>                                        ports=[self.sriov_vfs_port[0].pci],
> socket=self.ports_socket) @@ -407,6 +428,7 @@ class TestLargeVf(TestCase):
>              packet =
> "Ether(dst='{}')/IP(src=RandIP(),dst='192.168.0.{}')/UDP(sport=22,dport=23)/Ra
> w('x'*80)".format(pf_mac, ip)
>              self.send_packets(packet, 1)
>              ip += 1
> +        time.sleep(1)
>          out = pmdout.execute_cmd("ethtool -S %s" % pf_intf, "# ")
>          for queue in range(check_param[0], check_param[1]+1):
>              packet_str = "rx_queue_%d_packets: (\d+)" % queue @@ -503,18
> +525,21 @@ class TestLargeVf(TestCase):
>              self.check_txonly_pkts(rxtx_num)
> 
>      def test_3_vfs_256_queues(self):
> -        self.session_list = []
> -        for i in range(3):
> -            name = self.dut.new_session()
> -            self.session_list.append(name)
> -        self.create_iavf(3)
> +        self.pmdout_list = []
> +        session_list = []
> +        for i in range(self.vf_num):
> +            session = self.dut.new_session()
> +            session_list.append(session)
> +            pmdout = PmdOutput(self.dut, session)
> +            self.pmdout_list.append(pmdout)
> +        self.create_iavf(self.vf_num + 1)
>          self.launch_testpmd("--rxq=256 --txq=256", total=True)
>          self.config_testpmd()
>          self.rte_flow_process(max_vfs_256_queues_3)
> -        self.dut.close_session(self.session_list)
> +        self.dut.close_session(session_list)
> 
> -    def test_128_vfs_4_queues(self):
> -        self.create_iavf(128)
> +    def test_max_vfs_4_queues(self):
> +        self.create_iavf(self.max_vf_num)
>          self.launch_testpmd("--rxq=4 --txq=4")
>          self.config_testpmd()
>          self.rte_flow_process(max_vfs_4_queues_128)
> @@ -524,6 +549,7 @@ class TestLargeVf(TestCase):
>          Run after each test case.
>          """
>          self.pmd_output.execute_cmd("quit", "#")
> +        self.dut.kill_all()
>          self.destroy_iavf()
> 
> 
> --
> 2.17.1


  parent reply	other threads:[~2021-01-19  6:32 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-14  3:08 Xu Hailin
2021-01-14  5:21 ` Zhao, HaiyangX
2021-01-19  6:32 ` Tu, Lijuan [this message]
2021-01-28  7:50 Hailin Xu
2021-01-28  8:13 Hailin Xu
2021-01-28  8:53 ` Xu, HailinX
2021-02-02  8:54 ` 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=38d21c773c8b4ae297f49dcb300d99f5@intel.com \
    --to=lijuan.tu@intel.com \
    --cc=dts@dpdk.org \
    --cc=hailinx.xu@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).