From: "Lu, Nannan" <nannan.lu@intel.com>
To: "Zeng, XiaoxiaoX" <xiaoxiaox.zeng@intel.com>,
"dts@dpdk.org" <dts@dpdk.org>
Cc: "Zeng, XiaoxiaoX" <xiaoxiaox.zeng@intel.com>
Subject: Re: [dts] [PATCH V1]tests/cvl_switch_filter:optimization_cvl_switch_filter
Date: Mon, 8 Jun 2020 03:00:45 +0000 [thread overview]
Message-ID: <69fa936677e34758a218eafa6c9321ff@intel.com> (raw)
In-Reply-To: <20200605144711.10375-1-xiaoxiaox.zeng@intel.com>
Comments in line.
> -----Original Message-----
> From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of Zeng Xiaoxiao
> Sent: Friday, June 5, 2020 10:47 PM
> To: dts@dpdk.org
> Cc: Zeng, XiaoxiaoX <xiaoxiaox.zeng@intel.com>
> Subject: [dts] [PATCH V1]tests/cvl_switch_filter:optimization_cvl_switch_filter
>
> *.Avoid that with different dpdk code, packet default queue same as queue that
> rule set, realize dynamic set rule in testpmd.
>
> Signed-off-by: Zeng Xiaoxiao <xiaoxiaox.zeng@intel.com>
> ---
> tests/TestSuite_cvl_switch_filter.py | 68 +++++++++++++++++++++++++++-
> 1 file changed, 67 insertions(+), 1 deletion(-)
>
> diff --git a/tests/TestSuite_cvl_switch_filter.py
> b/tests/TestSuite_cvl_switch_filter.py
> index ffd9af4..9731c37 100644
> --- a/tests/TestSuite_cvl_switch_filter.py
> +++ b/tests/TestSuite_cvl_switch_filter.py
> @@ -34,6 +34,7 @@ import json
> import time
> import re
> import copy
> +import random
>
> from test_case import TestCase
> from pmd_output import PmdOutput
> @@ -2571,6 +2572,35 @@ class SwitchFilterTest(TestCase):
> result_flag, log_msg = dic["check_func"]["func"](out,
> dic["check_func"]["param"], dic["expect_results"])
> return result_flag, log_msg
>
> + def send_packet_get_queue(self, dic):
> + """
> + general packets processing workflow.
> + """
> + self.dut.send_expect("start", "testpmd> ")
> + # send packets
> + for per_packet in dic["scapy_str"]:
> + pkt = Packet(pkt_str=per_packet)
> + pkt.send_pkt(self.tester, tx_port=self.__tx_iface, count=1)
> + out = self.dut.send_expect("stop", "testpmd> ")
> + p = re.compile(r"Forward Stats for RX Port= \d+/Queue=(\s?\d+)")
> + res = p.findall(out)
> + default_queue = [int(i) for i in res]
> + return default_queue
> +
> + def get_available_queue_num(self, default_queue):
> + """
> + general packets processing workflow.
> + """
> + queue_list = [1, 2, 3, 4, 5, 6]
> + for q in default_queue:
> + if q in queue_list:
> + queue_list.remove(q)
> + if (q - 1) in queue_list:
> + queue_list.remove(q - 1)
> +
> + set_queue = random.choice(queue_list)
> + return int(set_queue)
> +
Need a more flexible way to get available queues, need to support queue number 4, 8, etc.
> def save_results(self, pattern_name, flag, result_flag, log_msg,
> overall_result):
> """
> save results to dictionary: test_results.
> @@ -2598,10 +2628,46 @@ class SwitchFilterTest(TestCase):
> overall_result = True
> test_results.clear()
> for tv in test_vectors:
> + # get packet default_queue number
> + mismatched_dic = tv["mismatched"]
> + default_queue = self.send_packet_get_queue(mismatched_dic)
> +
> + # check if default_queue same with expect_queue
> + expect_queue =
> tv["mismatched"]["check_func"]["param"]["expect_queues"]
> + if expect_queue != "null":
> + if isinstance(expect_queue, int):
> + eq_list = []
> + eq_list.append(expect_queue)
> + elif isinstance(expect_queue, list):
> + eq_list = expect_queue
> + recover_flag = list(set(eq_list) & set(default_queue))
> + else:
> + recover_flag = None
> +
> + # if default_queue has same one with expect_queue, recover rule
> + if recover_flag:
> + # exclude defult_queue number and get set_queue
> + set_queue_num = self.get_available_queue_num(default_queue)
> + # recover rule command and check queue
> + if isinstance(expect_queue, int):
> + rule_command = tv["rte_flow_pattern"].replace("/ end actions
> queue index %s" % str(expect_queue),
> + "/ end actions queue index %s" %
> str(set_queue_num))
> + tv["matched"]["check_func"]["param"]["expect_queues"] =
> set_queue_num
> + tv["mismatched"]["check_func"]["param"]["expect_queues"] =
> set_queue_num
> + elif isinstance(expect_queue, list):
> + q = [str(i) for i in expect_queue]
> + expect_queue_str = " ".join(q)
> + rule_command = tv["rte_flow_pattern"].replace("/ end actions rss
> queues %s" % expect_queue_str,
> + "/ end actions rss queues %s" %
> (str(set_queue_num) + " " + str(set_queue_num + 1)))
Not only need to support 2 queues, but also need to be able to support more queue numbers in rule.
> + tv["matched"]["check_func"]["param"]["expect_queues"] =
> [set_queue_num, set_queue_num + 1]
> + tv["mismatched"]["check_func"]["param"]["expect_queues"] =
> [set_queue_num, set_queue_num + 1]
> + else:
> + rule_command = tv["rte_flow_pattern"]
> +
> pattern_name = tv["name"]
> test_results[pattern_name] = OrderedDict()
>
> - out = self.dut.send_expect(tv["rte_flow_pattern"], "testpmd> ", 15)
> #create a rule
> + out = self.dut.send_expect(rule_command, "testpmd> ", 15)
> + #create a rule
> #get the rule number
> rule_num = self.get_rule_number(out)
>
> --
> 2.17.1
prev parent reply other threads:[~2020-06-08 3:00 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-05 14:47 Zeng Xiaoxiao
2020-06-05 6:39 ` Zeng, XiaoxiaoX
2020-06-08 3:00 ` Lu, Nannan [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=69fa936677e34758a218eafa6c9321ff@intel.com \
--to=nannan.lu@intel.com \
--cc=dts@dpdk.org \
--cc=xiaoxiaox.zeng@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).