* [dts] [PATCH V1 2/5] tests/ice_switch_filter: optimize the rte_flow test process
2022-08-15 14:00 [dts] [PATCH V1 1/5] test_plans/ice_switch_filter: change log level Jiale Song
@ 2022-08-15 14:00 ` Jiale Song
2022-09-07 10:26 ` Peng, Yuan
2022-08-15 14:00 ` [dts] [PATCH V1 3/5] test_plans/ice_switch_filter_pppoe: change log level Jiale Song
` (3 subsequent siblings)
4 siblings, 1 reply; 12+ messages in thread
From: Jiale Song @ 2022-08-15 14:00 UTC (permalink / raw)
To: dts; +Cc: Jiale Song
1. synchronize test plans, lower log level.
2. optimization scripts, remove the method of reload ice.
3. optimize the rte_flow test process that the action is switch to queue.
Signed-off-by: Jiale Song <songx.jiale@intel.com>
---
tests/TestSuite_ice_switch_filter.py | 24 +++++++++++++-----------
1 file changed, 13 insertions(+), 11 deletions(-)
diff --git a/tests/TestSuite_ice_switch_filter.py b/tests/TestSuite_ice_switch_filter.py
index 76bd630f..f5f8ec1f 100644
--- a/tests/TestSuite_ice_switch_filter.py
+++ b/tests/TestSuite_ice_switch_filter.py
@@ -4279,16 +4279,14 @@ class ICESwitchFilterTest(TestCase):
self.generate_file_with_fdir_rules()
self.path = self.dut.apps_name["test-pmd"]
-
- def reload_ice(self):
- self.dut.send_expect("rmmod ice", "# ", 15)
- self.dut.send_expect("modprobe ice", "# ", 15)
+ self.rxq = 16
+ self.rxq_param = "--rxq={0} --txq={0}".format(self.rxq)
def set_up(self):
"""
Run before each test case.
"""
- self.reload_ice()
+ pass
def generate_file_with_fdir_rules(self):
"""
@@ -4327,9 +4325,8 @@ class ICESwitchFilterTest(TestCase):
# Prepare testpmd EAL and parameters
all_eal_param = self.dut.create_eal_parameters(cores="1S/4C/1T", ports=[0])
command = (
- self.path + all_eal_param + ' --log-level="ice,8" -- -i --rxq=16 --txq=16 '
+ self.path + all_eal_param + ' --log-level="ice,7" -- -i %s' % self.rxq_param
)
- # command = "./%s/app/testpmd %s --log-level=\"ice,8\" -- -i %s" % (self.dut.target, all_eal_param, "--rxq=16 --txq=16")
return command
def create_testpmd_command_pipeline_mode(self):
@@ -4341,7 +4338,7 @@ class ICESwitchFilterTest(TestCase):
cores="1S/4C/1T", ports=[0], port_options={0: "pipeline-mode-support=1"}
)
command = (
- self.path + all_eal_param + ' --log-level="ice,8" -- -i --rxq=16 --txq=16'
+ self.path + all_eal_param + ' --log-level="ice,7" -- -i %s' % self.rxq_param
)
return command
@@ -4370,13 +4367,15 @@ class ICESwitchFilterTest(TestCase):
"""
# Specify the port to use
dic["check_func"]["param"]["expect_port"] = port
+ dic["check_func"]["param"]["rxq"] = self.rxq
+ self.pmd.wait_link_status_up(port)
self.dut.send_expect("start", "testpmd> ", 15)
- time.sleep(2)
# send packets
self.pkt.update_pkt(dic["scapy_str"])
self.pkt.send_pkt(self.tester, tx_port=self.__tx_iface, count=1, timeout=370)
- time.sleep(3)
- out = self.dut.send_expect("stop", "testpmd> ", 15)
+ out1 = self.pmd.get_output(timeout=1)
+ out2 = self.pmd.execute_cmd("stop")
+ out = out1 + out2
result_flag, log_msg = dic["check_func"]["func"](
out, dic["check_func"]["param"], dic["expect_results"]
)
@@ -4701,6 +4700,9 @@ class ICESwitchFilterTest(TestCase):
count = 1
for tv in test_vectors:
pattern_name = tv["name"]
+ self.logger.info(
+ GREEN("{0} case_name:{1} {0}".format("*" * 20, pattern_name))
+ )
test_results[pattern_name] = OrderedDict()
# get the queues that packets originally came to
if count == 1:
--
2.25.1
^ permalink raw reply [flat|nested] 12+ messages in thread
* [dts] [PATCH V1 4/5] tests/ice_switch_filter_pppoe: optimize the rte_flow test process
2022-08-15 14:00 [dts] [PATCH V1 1/5] test_plans/ice_switch_filter: change log level Jiale Song
2022-08-15 14:00 ` [dts] [PATCH V1 2/5] tests/ice_switch_filter: optimize the rte_flow test process Jiale Song
2022-08-15 14:00 ` [dts] [PATCH V1 3/5] test_plans/ice_switch_filter_pppoe: change log level Jiale Song
@ 2022-08-15 14:00 ` Jiale Song
2022-09-07 10:26 ` Peng, Yuan
2022-08-15 14:00 ` [dts] [PATCH V1 5/5] tests/rte_flow_common: " Jiale Song
2022-09-07 10:25 ` [dts] [PATCH V1 1/5] test_plans/ice_switch_filter: change log level Peng, Yuan
4 siblings, 1 reply; 12+ messages in thread
From: Jiale Song @ 2022-08-15 14:00 UTC (permalink / raw)
To: dts; +Cc: Jiale Song
1. synchronize test plans, lower log level.
2. optimization scripts, remove the method of reload ice.
3. optimize the rte_flow test process that the action is switch to queue.
Signed-off-by: Jiale Song <songx.jiale@intel.com>
---
tests/TestSuite_ice_switch_filter_pppoe.py | 24 ++++++++++++----------
1 file changed, 13 insertions(+), 11 deletions(-)
diff --git a/tests/TestSuite_ice_switch_filter_pppoe.py b/tests/TestSuite_ice_switch_filter_pppoe.py
index c83195b3..356c79d1 100644
--- a/tests/TestSuite_ice_switch_filter_pppoe.py
+++ b/tests/TestSuite_ice_switch_filter_pppoe.py
@@ -2870,16 +2870,14 @@ class ICESwitchFilterPPPOETest(TestCase):
self.generate_file_with_fdir_rules()
self.path = self.dut.apps_name["test-pmd"]
+ self.rxq = 16
+ self.rxq_param = "--rxq={0} --txq={0}".format(self.rxq)
def set_up(self):
"""
Run before each test case.
"""
- self.reload_ice()
-
- def reload_ice(self):
- self.dut.send_expect("rmmod ice", "# ", 15)
- self.dut.send_expect("modprobe ice", "# ", 15)
+ pass
def generate_file_with_fdir_rules(self):
"""
@@ -2918,9 +2916,8 @@ class ICESwitchFilterPPPOETest(TestCase):
# Prepare testpmd EAL and parameters
all_eal_param = self.dut.create_eal_parameters(cores="1S/4C/1T", ports=[0])
command = (
- self.path + all_eal_param + ' --log-level="ice,8" -- -i --rxq=16 --txq=16 '
+ self.path + all_eal_param + ' --log-level="ice,7" -- -i %s' % self.rxq_param
)
- # command = "./%s/app/testpmd %s --log-level=\"ice,8\" -- -i %s" % (self.dut.target, all_eal_param, "--rxq=16 --txq=16")
return command
def create_testpmd_command_pipeline_mode(self):
@@ -2932,7 +2929,7 @@ class ICESwitchFilterPPPOETest(TestCase):
cores="1S/4C/1T", ports=[0], port_options={0: "pipeline-mode-support=1"}
)
command = (
- self.path + all_eal_param + ' --log-level="ice,8" -- -i --rxq=16 --txq=16'
+ self.path + all_eal_param + ' --log-level="ice,7" -- -i %s' % self.rxq_param
)
return command
@@ -2961,13 +2958,15 @@ class ICESwitchFilterPPPOETest(TestCase):
"""
# Specify the port to use
dic["check_func"]["param"]["expect_port"] = port
+ dic["check_func"]["param"]["rxq"] = self.rxq
+ self.pmd.wait_link_status_up(port)
self.dut.send_expect("start", "testpmd> ", 15)
- time.sleep(2)
# send packets
self.pkt.update_pkt(dic["scapy_str"])
self.pkt.send_pkt(self.tester, tx_port=self.__tx_iface, count=1, timeout=370)
- time.sleep(3)
- out = self.dut.send_expect("stop", "testpmd> ", 15)
+ out1 = self.pmd.get_output(timeout=1)
+ out2 = self.pmd.execute_cmd("stop")
+ out = out1 + out2
result_flag, log_msg = dic["check_func"]["func"](
out, dic["check_func"]["param"], dic["expect_results"]
)
@@ -3292,6 +3291,9 @@ class ICESwitchFilterPPPOETest(TestCase):
count = 1
for tv in test_vectors:
pattern_name = tv["name"]
+ self.logger.info(
+ GREEN("{0} case_name:{1} {0}".format("*" * 20, pattern_name))
+ )
test_results[pattern_name] = OrderedDict()
# get the queues that packets originally came to
if count == 1:
--
2.25.1
^ permalink raw reply [flat|nested] 12+ messages in thread
* [dts] [PATCH V1 5/5] tests/rte_flow_common: optimize the rte_flow test process
2022-08-15 14:00 [dts] [PATCH V1 1/5] test_plans/ice_switch_filter: change log level Jiale Song
` (2 preceding siblings ...)
2022-08-15 14:00 ` [dts] [PATCH V1 4/5] tests/ice_switch_filter_pppoe: optimize the rte_flow test process Jiale Song
@ 2022-08-15 14:00 ` Jiale Song
2022-08-26 6:15 ` Li, WeiyuanX
` (2 more replies)
2022-09-07 10:25 ` [dts] [PATCH V1 1/5] test_plans/ice_switch_filter: change log level Peng, Yuan
4 siblings, 3 replies; 12+ messages in thread
From: Jiale Song @ 2022-08-15 14:00 UTC (permalink / raw)
To: dts; +Cc: Jiale Song
1. add a method to check rss hash.
2. optimize the method of checking queue.
Signed-off-by: Jiale Song <songx.jiale@intel.com>
---
tests/rte_flow_common.py | 150 ++++++++++++++++++---------------------
1 file changed, 69 insertions(+), 81 deletions(-)
diff --git a/tests/rte_flow_common.py b/tests/rte_flow_common.py
index 0ad780d3..87892c13 100644
--- a/tests/rte_flow_common.py
+++ b/tests/rte_flow_common.py
@@ -123,36 +123,20 @@ def check_output_log_queue_region_mismatched(out, func_param, expect_results):
when the action is queue region, check the expect port received the expect
number packets, while the corresponding queues not receive any packets.
"""
- # parse input parameters
- expect_port = func_param["expect_port"]
- expect_queues = func_param["expect_queues"]
+ check_param = dict()
expect_pkts = expect_results["expect_pkts"]
-
- log_msg = ""
- # check expect_port received expect number packets
- pkt_num = get_port_rx_packets_number(out, expect_port)
- if pkt_num != expect_pkts:
- log_msg = (
- "queue region mismatched: port %d receive %d packets, not receive %d packet"
- % (expect_port, pkt_num, expect_pkts)
- )
+ check_param["port_id"] = (
+ func_param["expect_port"] if func_param["expect_port"] else 0
+ )
+ check_param["queue"] = func_param["expect_queues"]
+ try:
+ check_queue(out, expect_pkts, check_param, stats=False)
+ except Exception as ex:
+ log_msg = ex
return False, log_msg
else:
- # check expect queues not received packets
- packet_sumnum = 0
- for queue_id in expect_queues:
- pkt_num = get_queue_rx_packets_number(out, expect_port, queue_id)
- packet_sumnum += pkt_num
-
log_msg = ""
- if packet_sumnum == 0:
- return True, log_msg
- else:
- log_msg = (
- "queue region mismatched: expect queues should receive 0 packets, but it received %d packets"
- % packet_sumnum
- )
- return False, log_msg
+ return True, log_msg
def check_output_log_in_queue_mismatched(out, func_param, expect_results):
@@ -161,32 +145,21 @@ def check_output_log_in_queue_mismatched(out, func_param, expect_results):
number packets, while the corresponding queue not receive any packets.
"""
# parse input parameters
- expect_port = func_param["expect_port"]
- expect_queue = func_param["expect_queues"]
+ check_param = dict()
expect_pkts = expect_results["expect_pkts"]
-
- log_msg = ""
- # check expect_port received expect number packets
- pkt_num = get_port_rx_packets_number(out, expect_port)
- if pkt_num != expect_pkts:
- log_msg = "mismatched: port %d receive %d packets, not receive %d packet" % (
- expect_port,
- pkt_num,
- expect_pkts,
- )
+ check_param["port_id"] = (
+ func_param["expect_port"] if func_param["expect_port"] else 0
+ )
+ check_param["queue"] = func_param["expect_queues"]
+ check_queue(out, expect_pkts, check_param, stats=False)
+ try:
+ check_queue(out, expect_pkts, check_param, stats=False)
+ except Exception as ex:
+ log_msg = ex
return False, log_msg
else:
- # check expect queue not received packets
- pkt_num = get_queue_rx_packets_number(out, expect_port, expect_queue)
log_msg = ""
- if pkt_num == 0:
- return True, log_msg
- else:
- log_msg = (
- "mismatched: expect queue Port= %d/Queue= %d should receive 0 packets, but it received %d packets"
- % (expect_port, expect_queue, pkt_num)
- )
- return False, log_msg
+ return True, log_msg
def check_output_log_drop(out, func_param, expect_results):
@@ -372,47 +345,61 @@ def verify(passed, description):
raise AssertionError(description)
-def check_queue(out, check_param, stats=True):
+def check_rss(out, pkt_num, check_param, stats=True):
+ """
+ check whether the packet directed by rss or not according to the specified parameters
+ :param out: information received by testpmd after sending packets and port statistics
+ :param kwargs: some specified parameters, such as: rxq, stats
+ :return: queue value list
+ usage:
+ check_rss(out, rxq=rxq, stats=stats)
+ """
+ verify(check_param.get("rxq"), "not get rxq")
+ rxq = check_param.get("rxq")
+ p = re.compile("RSS\shash=(\w+)\s-\sRSS\squeue=(\w+)")
+ pkt_info = p.findall(out)
+ verify(len(pkt_info) == pkt_num, "some packets no hash:{}".format(p.pattern))
+ pkt_queue = set([int(i[1], 16) for i in pkt_info])
+ if stats:
+ verify(
+ all([int(i[0], 16) % rxq == int(i[1], 16) for i in pkt_info]),
+ "some pkt not directed by rss.",
+ )
+ print((GREEN("pass: all pkts directed by rss")))
+ else:
+ verify(
+ not any([int(i[0], 16) % rxq == int(i[1], 16) for i in pkt_info]),
+ "some pkt directed by rss, expect not directed by rss",
+ )
+ print((GREEN("pass: no pkt directed by rss")))
+ return pkt_queue
+
+
+def check_queue(out, pkt_num, check_param, stats=True):
port_id = check_param["port_id"] if check_param.get("port_id") is not None else 0
queue = check_param["queue"]
+ queue = queue if isinstance(queue, list) else [queue]
p = re.compile(r"port\s+%s/queue(.+?):\s+received\s+(\d+)\s+packets" % port_id)
res = p.findall(out)
if res:
+ verify(
+ len(res) == pkt_num,
+ "fail: queue num not matched, expect got queue num is %s, got %s"
+ % (pkt_num, len(res)),
+ )
pkt_queue = set([int(i[0]) for i in res])
if stats:
- if isinstance(queue, int):
- verify(
- all(q == queue for q in pkt_queue),
- "fail: queue id not matched, expect queue %s, got %s"
- % (queue, pkt_queue),
- )
- print((GREEN("pass: queue id %s matched" % pkt_queue)))
- elif isinstance(queue, list):
- verify(
- all(q in queue for q in pkt_queue),
- "fail: queue id not matched, expect queue %s, got %s"
- % (queue, pkt_queue),
- )
- print((GREEN("pass: queue id %s matched" % pkt_queue)))
- else:
- raise Exception("wrong queue value, expect int or list")
+ verify(
+ all(q in queue for q in pkt_queue),
+ "fail: queue id not matched, expect queue %s, got %s"
+ % (queue, pkt_queue),
+ )
+ print((GREEN("pass: queue id %s matched" % pkt_queue)))
else:
- if isinstance(queue, int):
- verify(
- not any(q == queue for q in pkt_queue),
- "fail: queue id should not matched, expect queue %s, got %s"
- % (queue, pkt_queue),
- )
- print((GREEN("pass: queue id %s not matched" % pkt_queue)))
- elif isinstance(queue, list):
- verify(
- not any(q in queue for q in pkt_queue),
- "fail: each queue in %s should not in queue %s"
- % (pkt_queue, queue),
- )
+ if not any(q in queue for q in pkt_queue):
print((GREEN("pass: queue id %s not matched" % pkt_queue)))
else:
- raise Exception("wrong action value, expect queue_index or queue_group")
+ check_rss(out, pkt_num, check_param, stats=True)
return pkt_queue
else:
raise Exception("got wrong output, not match pattern %s" % p.pattern)
@@ -484,7 +471,7 @@ def check_mark(out, pkt_num, check_param, stats=True):
else:
verify(not fdir_flag, "output should not include mark id")
if queue is not None:
- check_queue(out, check_param, stats)
+ check_queue(out, pkt_num, check_param, stats)
if rss_flag:
pkt_queue = verify_directed_by_rss(out, rxq, stats=True)
else:
@@ -1687,7 +1674,8 @@ class FdirProcessing(object):
),
)
else:
- check_queue(out, check_param, stats=stats)
+ check_param["rxq"] = self.rxq
+ check_queue(out, expect_pkt, check_param, stats=stats)
def handle_priority_cases(self, vectors):
rule = vectors["rule"]
--
2.25.1
^ permalink raw reply [flat|nested] 12+ messages in thread