[dts] [PATCH] tests: changed TestSuite_rss_to_rte_flow.py
Peng Yuan
yuan.peng at intel.com
Tue Oct 23 10:47:59 CEST 2018
Added 'none' and 'all' to rss types in action list.
Added 'key' and 'key_len' to rss items in action list.
Signed-off-by: Peng Yuan <yuan.peng at intel.com>
diff --git a/tests/TestSuite_rss_to_rte_flow.py b/tests/TestSuite_rss_to_rte_flow.py
index 2b2ac48..096daea 100644
--- a/tests/TestSuite_rss_to_rte_flow.py
+++ b/tests/TestSuite_rss_to_rte_flow.py
@@ -119,25 +119,34 @@ class TestRSS_to_Rteflow(TestCase):
self.verify(queue in rss_queue, "the packet doesn't enter the expected RSS queue.")
return queue
- def send_packet(self, itf):
+ def send_packet(self, ptype, itf):
"""
Sends packets.
"""
self.tester.scapy_foreground()
time.sleep(2)
- for i in range(64):
- packet = r'sendp([Ether(dst="%s", src=get_if_hwaddr("%s"))/IP(src="192.168.0.%d", dst="192.168.0.%d")/UDP(dport=%d, sport=%d)], iface="%s")' % (
- self.pf_mac, itf, i + 1, i + 2, i + 21, i + 22, itf)
+ for i in range(128):
+ if ptype == "ipv4-udp":
+ packet = r'sendp([Ether(dst="%s", src=get_if_hwaddr("%s"))/IP(src="192.168.0.%d", dst="192.168.0.%d")/UDP(dport=%d, sport=%d)], iface="%s")' % (
+ self.pf_mac, itf, i + 1, i + 2, i + 21, i + 22, itf)
+ elif ptype == "ipv4-other":
+ packet = r'sendp([Ether(dst="%s", src=get_if_hwaddr("%s"))/IP(src="192.168.0.%d", dst="192.168.0.%d")], iface="%s")' % (
+ self.pf_mac, itf, i + 1, i + 2, itf)
self.tester.scapy_append(packet)
self.tester.scapy_execute()
time.sleep(2)
- def check_packet_queue(self, out):
+ def check_packet_queue(self, queue, out):
"""
get the queue which packet enter.
"""
- self.verify("Queue= 0" in out and "Queue= 1" in out and "Queue= 2" in out and "Queue= 3" in out,
- "there is some queues doesn't work")
+ time.sleep(2)
+ if queue == "all":
+ self.verify("Queue= 0" in out and "Queue= 1" in out and "Queue= 2" in out and "Queue= 3" in out,
+ "There is some queues doesn't work.")
+ elif queue == "0":
+ self.verify("Queue= 0" in out and "Queue= 1" not in out and "Queue= 2" not in out and "Queue= 3" not in out,
+ "RSS is enabled.")
lines = out.split("\r\n")
reta_line = {}
queue_flag = 0
@@ -160,11 +169,11 @@ class TestRSS_to_Rteflow(TestCase):
m = scanner.search(line)
packet_rec = m.group(1)
- self.verify(packet_sumnum == int(packet_rec) == 64, "There are some packets lost.")
+ self.verify(packet_sumnum == int(packet_rec) == 128, "There are some packets lost.")
- def test_enable_rss_rule(self):
+ def test_disable_enable_rss(self):
"""
- Enable RSS.
+ Disable and enable RSS.
"""
self.pmdout.start_testpmd("%s" % self.cores, "--rxq=4 --txq=4 --port-topology=chained")
self.dut.send_expect("set fwd rxonly", "testpmd> ", 120)
@@ -172,14 +181,91 @@ class TestRSS_to_Rteflow(TestCase):
self.dut.send_expect("start", "testpmd> ", 120)
time.sleep(2)
- # Create a rss queue rule
+ # Show port default RSS fuctions
+ if (self.nic in ["fortville_eagle", "fortville_spirit",
+ "fortville_spirit_single", "fortpark_TLV"]):
+ self.dut.send_expect(
+ "show port 0 rss-hash", "ipv4-frag ipv4-other ipv6-frag ipv6-other ip")
+ else:
+ self.dut.send_expect(
+ "show port 0 rss-hash", "ipv4 ipv6 ipv6-ex ip")
+ self.send_packet("ipv4-other", self.tester_itf)
+ out = self.dut.send_expect("stop", "testpmd> ", 120)
+ self.check_packet_queue("all", out)
+ self.dut.send_expect("start", "testpmd> ", 120)
+
+ # Disable RSS hash function
self.dut.send_expect(
- "flow create 0 ingress pattern end actions rss types ipv4-udp end / end", "created")
+ "flow create 0 ingress pattern end actions rss types none end / end", "created")
+ self.dut.send_expect(
+ "show port 0 rss-hash", "RSS disabled")
# send the packets and verify the results
- self.send_packet(self.tester_itf)
+ self.send_packet("ipv4-other", self.tester_itf)
out = self.dut.send_expect("stop", "testpmd> ", 120)
+ self.check_packet_queue("0", out)
+ self.dut.send_expect("start", "testpmd> ", 120)
+
+ # Enable RSS hash function all
+ self.dut.send_expect(
+ "flow create 0 ingress pattern end actions rss types all end / end", "created")
+ if (self.nic in ["fortville_eagle", "fortville_spirit",
+ "fortville_spirit_single", "fortpark_TLV"]):
+ self.dut.send_expect(
+ "show port 0 rss-hash", "all ipv4-frag ipv4-tcp ipv4-udp ipv4-sctp ipv4-other ipv6-frag ipv6-tcp ipv6-udp ipv6-sctp ipv6-other l2-payload ip udp tcp sctp")
+ else:
+ self.dut.send_expect(
+ "show port 0 rss-hash", "all ipv4 ipv4-tcp ipv4-udp ipv6 ipv6-tcp ipv6-udp ipv6-ex ipv6-tcp-ex ipv6-udp-ex ip udp tcp")
+ # send the packets and verify the results
+ self.send_packet("ipv4-other", self.tester_itf)
+ out = self.dut.send_expect("stop", "testpmd> ", 120)
+ self.check_packet_queue("all", out)
+
+ def test_enable_ipv4_udp_rss(self):
+ """
+ Enable IPv4-UDP RSS.
+ """
+ self.pmdout.start_testpmd("%s" % self.cores, "--rxq=4 --txq=4 --port-topology=chained")
+ self.dut.send_expect("set fwd rxonly", "testpmd> ", 120)
+ self.dut.send_expect("set verbose 1", "testpmd> ", 120)
+ self.dut.send_expect("start", "testpmd> ", 120)
time.sleep(2)
- self.check_packet_queue(out)
+
+ # Show port default RSS fuctions
+ if (self.nic in ["fortville_eagle", "fortville_spirit",
+ "fortville_spirit_single", "fortpark_TLV"]):
+ self.dut.send_expect(
+ "show port 0 rss-hash", "ipv4-frag ipv4-other ipv6-frag ipv6-other ip")
+ else:
+ self.dut.send_expect(
+ "show port 0 rss-hash", "ipv4 ipv6 ipv6-ex ip")
+ self.send_packet("ipv4-other", self.tester_itf)
+ out = self.dut.send_expect("stop", "testpmd> ", 120)
+ self.check_packet_queue("all", out)
+ self.dut.send_expect("start", "testpmd> ", 120)
+
+ self.send_packet("ipv4-udp", self.tester_itf)
+ out = self.dut.send_expect("stop", "testpmd> ", 120)
+ if (self.nic in ["fortville_eagle", "fortville_spirit",
+ "fortville_spirit_single", "fortpark_TLV"]):
+ self.check_packet_queue("0", out)
+ else:
+ self.check_packet_queue("all", out)
+ self.dut.send_expect("start", "testpmd> ", 120)
+
+ # enable ipv4-udp rss function
+ self.dut.send_expect(
+ "flow create 0 ingress pattern end actions rss types ipv4-udp end / end", "created")
+ self.dut.send_expect(
+ "show port 0 rss-hash", "ipv4-udp udp")
+ # send the packets and verify the results
+ self.send_packet("ipv4-other", self.tester_itf)
+ out = self.dut.send_expect("stop", "testpmd> ", 120)
+ self.check_packet_queue("0", out)
+ self.dut.send_expect("start", "testpmd> ", 120)
+
+ self.send_packet("ipv4-udp", self.tester_itf)
+ out = self.dut.send_expect("stop", "testpmd> ", 120)
+ self.check_packet_queue("all", out)
def test_rss_queue_rule(self):
"""
@@ -223,6 +309,8 @@ class TestRSS_to_Rteflow(TestCase):
# There can't be more than one RSS queue rule existing.
self.dut.send_expect(
"flow create 0 ingress pattern end actions rss queues 3 end / end", "error")
+ self.dut.send_expect(
+ "flow create 0 ingress pattern end actions rss types ipv4-udp end queues 3 end / end", "error")
# Flush the rules and create a new RSS queue rule.
self.dut.send_expect("flow flush 0", "testpmd> ")
self.dut.send_expect(
@@ -301,6 +389,70 @@ class TestRSS_to_Rteflow(TestCase):
self.dut.send_expect(
"flow create 0 ingress pattern end actions rss types ipv6-other end queues 3 end / end", "error")
+ def test_set_key_keylen(self):
+ """
+ Set key and key_len.
+ """
+ # Only supported by i40e
+ self.verify(self.nic in ["fortville_eagle", "fortville_spirit",
+ "fortville_spirit_single", "fortpark_TLV"], "NIC Unsupported: " + str(self.nic))
+ pkt1 = "Ether(dst='%s')/IP(src='0.0.0.0',dst='4.0.0.0')/UDP(sport=100, dport=200)/('X'*48)" % self.pf_mac
+ pkt2 = "Ether(dst='%s')/IP(src='0.0.0.0',dst='4.0.0.0')/UDP(sport=100, dport=201)/('X'*48)" % self.pf_mac
+ pkt3 = "Ether(dst='%s')/IP(src='0.0.0.0',dst='4.0.0.0')/UDP(sport=101, dport=201)/('X'*48)" % self.pf_mac
+ pkt4 = "Ether(dst='%s')/IP(src='0.0.0.0',dst='4.0.0.1')/UDP(sport=101, dport=201)/('X'*48)" % self.pf_mac
+ pkt5 = "Ether(dst='%s')/IP(src='0.0.0.1',dst='4.0.0.1')/UDP(sport=101, dport=201)/('X'*48)" % self.pf_mac
+
+ self.pmdout.start_testpmd("%s" % self.cores, "--rxq=4 --txq=4 --port-topology=chained")
+ self.dut.send_expect("set fwd rxonly", "testpmd> ", 120)
+ self.dut.send_expect("set verbose 1", "testpmd> ", 120)
+ self.dut.send_expect("start", "testpmd> ", 120)
+ time.sleep(2)
+
+ # Create a rss rule
+ self.dut.send_expect(
+ "flow create 0 ingress pattern end actions rss types ipv4-udp end / end", "created")
+ out1 = self.dut.send_expect("show port 0 rss-hash key", "testpmd> ", 120)
+ rss_queue = ["1"]
+ self.send_and_check(pkt1, rss_queue)
+ rss_queue = ["3"]
+ self.send_and_check(pkt2, rss_queue)
+ rss_queue = ["3"]
+ self.send_and_check(pkt3, rss_queue)
+ rss_queue = ["1"]
+ self.send_and_check(pkt4, rss_queue)
+ rss_queue = ["2"]
+ self.send_and_check(pkt5, rss_queue)
+
+ # Create a rss key rule
+ self.dut.send_expect(
+ "flow flush 0", "testpmd> ")
+ self.dut.send_expect(
+ "flow create 0 ingress pattern end actions rss types ipv4-udp end key 67108863 / end", "created")
+ out2 = self.dut.send_expect("show port 0 rss-hash key", "testpmd> ", 120)
+ rss_queue = ["3"]
+ self.send_and_check(pkt1, rss_queue)
+ rss_queue = ["3"]
+ self.send_and_check(pkt2, rss_queue)
+ rss_queue = ["0"]
+ self.send_and_check(pkt3, rss_queue)
+ rss_queue = ["1"]
+ self.send_and_check(pkt4, rss_queue)
+ rss_queue = ["0"]
+ self.send_and_check(pkt5, rss_queue)
+
+ self.verify(out1 != out2, "the key setting doesn't take effect.")
+
+ # Create a rss key_len rule
+ self.dut.send_expect(
+ "flow flush 0", "testpmd> ")
+ self.dut.send_expect(
+ "flow create 0 ingress pattern end actions rss types ipv4-udp end key_len 3 / end", "created")
+ # Create a rss key rule
+ self.dut.send_expect(
+ "flow flush 0", "testpmd> ")
+ self.dut.send_expect(
+ "flow create 0 ingress pattern end actions rss types ipv4-udp end key 67108863 key_len 3 / end", "created")
+
def test_disable_rss_in_commandline(self):
"""
Set RSS queue rule while disable RSS in command-line.
@@ -313,6 +465,19 @@ class TestRSS_to_Rteflow(TestCase):
# Create a rss queue rule
self.dut.send_expect(
+ "flow create 0 ingress pattern end actions rss types all end / end", "created")
+ self.send_packet("ipv4-udp", self.tester_itf)
+ out = self.dut.send_expect("stop", "testpmd> ", 120)
+ self.check_packet_queue("all", out)
+ self.dut.send_expect("quit", "# ")
+
+ self.pmdout.start_testpmd("%s" % self.cores, "--rxq=8 --txq=8 --disable-rss --port-topology=chained")
+ self.dut.send_expect("set fwd rxonly", "testpmd> ", 120)
+ self.dut.send_expect("set verbose 1", "testpmd> ", 120)
+ self.dut.send_expect("start", "testpmd> ", 120)
+ time.sleep(2)
+ # Create a rss queue rule
+ self.dut.send_expect(
"flow create 0 ingress pattern end actions rss types ipv6-tcp ipv4-udp sctp ipv6-other end queues 5 6 7 end / end", "created")
# send the packets and verify the results
if (self.nic in ["fortville_eagle", "fortville_spirit",
--
2.5.0
More information about the dts
mailing list