[dts] [PATCH v3 09/27] tests: checksum_offload - fixes

Angela Czubak aczubak at caviumnetworks.com
Wed Apr 19 14:22:02 CEST 2017


Sniffing packets with scapy seems to fail, switched to tcpdump.
Taken into account capabilities of Cavium nics, created
framework/test_capabilities.py to contain information useful when
skipping not applicable parts of tests.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls   | Bin 19968 -> 19968 bytes
 framework/test_capabilities.py      |   9 +++++++++
 tests/TestSuite_checksum_offload.py |  38 +++++++++++++++++-------------------
 3 files changed, 27 insertions(+), 20 deletions(-)
 create mode 100644 framework/test_capabilities.py

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index 0345762f0c894145ac84f35bb41467462f443c6c..5811198e687c2a63cf326b7ca378849b0a3e2038 100644
GIT binary patch
delta 429
zcmZpe!`Lu~aYH+onyD}Y5U?=>XQZZ<7`8I-F;rV1i5P)IByA?I<(j~LnU{}=fuUft
z3pY0_W94K=UhB!-0{X1+i3Y|dlXnS7Ge&~ML^6x=^9u6wQgo6N%Q8!IA<_zh3XB1h
z9R(es%9{i=7|kcI7Sw?7H(wU~#A+_iz)(~XpPZ4JoLvmmSeBTRnG&CtlbBu%ltD5L
zX0m~Sp`ii;!{h`Bg~>0(pD`9}J};5Q$e6s at N~&Cmm4iuuA!+g=o7uL18MqjdfS%%K
z$O4iO9wU&)4(BledD(CtGqT)d6We5ESD>5&5W|2hPz7@`n8(PF41^2}n|ImnXJpKo
zTxIVHBoEkYGUiTxWiQQ`H<`@=B;o at mCjrU)%{Ls{m^Qf_VdgajYIFeNhHNE$iOCn;
b<=Hk{&HkyfYV$XDCT6DDwwr%>u`vSxrIT*u

delta 303
zcmZpe!`Lu~aYH+o+FKz8AYfw%&PYuyF>GbvW4LLKBw_>-DYu at ymTLlgH!mj>14G_s
z7jAA=#*)d7yw;Pu1 at tHH7m#KQ0rSKJ`6p`$DlmG3cx=guWtpY9lP3ylFd9wH6IOx>
zY<@2IiFGrt1Scb7-ez&hEJntp$r1LAo0+A*DNg3K?U{VvHcA=f0tXNQ1+onM49o%y
zK<gP883cfkiD`3;-F`;KtjRJCuKZa*@xKgQV0m!{o5>qwr5Up)p8=9NlUF#n0#&^O
zlO~R?jJcbu9NU;CPw-f@$>j($uQ5=o0}wOZVmrh>`J%f#Tg9}vS&Noz{^ria%=FV{
J^Di$pW&p}<P%8ic

diff --git a/framework/test_capabilities.py b/framework/test_capabilities.py
new file mode 100644
index 0000000..2ad3fae
--- /dev/null
+++ b/framework/test_capabilities.py
@@ -0,0 +1,9 @@
+#this structure will be used to determine which parts of tests should be skipped
+"""
+Dict used to skip parts of tests if NIC is known not to support them
+"""
+DRIVER_TEST_LACK_CAPA = {
+	'sctp_tx_offload' : ['thunder-nicvf', 'fm10k']
+}
+
+
diff --git a/tests/TestSuite_checksum_offload.py b/tests/TestSuite_checksum_offload.py
index 9b9015d..54e5001 100644
--- a/tests/TestSuite_checksum_offload.py
+++ b/tests/TestSuite_checksum_offload.py
@@ -43,7 +43,8 @@ import utils
 
 from test_case import TestCase
 from pmd_output import PmdOutput
-
+from packet import Packet, sniff_packets, load_sniff_packets, strip_pktload
+from test_capabilities import DRIVER_TEST_LACK_CAPA
 
 class TestChecksumOffload(TestCase):
 
@@ -169,21 +170,16 @@ class TestChecksumOffload(TestCase):
 
         self.tester.send_expect("exit()", "#")
 
-        self.tester.scapy_background()
-        self.tester.scapy_append('p = sniff(filter="ether src %s", iface="%s", count=%d)' % (sniff_src, rx_interface, len(packets_sent)))
-        self.tester.scapy_append('nr_packets=len(p)')
-        self.tester.scapy_append('reslist = [p[i].sprintf("%IP.chksum%;%TCP.chksum%;%UDP.chksum%;%SCTP.chksum%") for i in range(nr_packets)]')
-        self.tester.scapy_append('import string')
-        self.tester.scapy_append('RESULT = string.join(reslist, ",")')
-
-        # Send packet.
-        self.tester.scapy_foreground()
+        inst = sniff_packets(intf=rx_interface, count=len(packets_sent), filters=[{'layer':'ether', 'config':{'src': sniff_src}}])
 
         for packet_type in packets_sent.keys():
             self.tester.scapy_append('sendp([%s], iface="%s")' % (packets_sent[packet_type], tx_interface))
 
         self.tester.scapy_execute()
-        out = self.tester.scapy_get_result()
+	p = load_sniff_packets(inst)
+	nr_packets=len(p)
+	reslist = [p[i].pktgen.pkt.sprintf("%IP.chksum%;%TCP.chksum%;%UDP.chksum%;%SCTP.chksum%") for i in range(nr_packets)]
+	out = string.join(reslist, ",")
         packets_received = out.split(',')
         self.verify(len(packets_sent) == len(packets_received), "Unexpected Packets Drop")
 
@@ -223,7 +219,7 @@ class TestChecksumOffload(TestCase):
 
         pktsChkErr = {'IP/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IP(chksum=0x0)/UDP(chksum=0xf)/("X"*46)' % mac,
                       'IP/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IP(chksum=0x0)/TCP(chksum=0xf)/("X"*46)' % mac,
-                      'IP/SCTP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IP(chksum=0x0)/SCTP(chksum=0xf)/("X"*48)' % mac,
+		      'IP/SCTP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IP(chksum=0x0)/SCTP(chksum=0xf)/("X"*48)' % mac,
                       'IPv6/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IPv6(src="::1")/UDP(chksum=0xf)/("X"*46)' % mac,
                       'IPv6/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IPv6(src="::1")/TCP(chksum=0xf)/("X"*46)' % mac}
 
@@ -233,7 +229,7 @@ class TestChecksumOffload(TestCase):
                 'IPv6/UDP': 'Ether(dst="02:00:00:00:00:00", src="%s")/Dot1Q(vlan=1)/IPv6(src="::1")/UDP()/("X"*46)' % mac,
                 'IPv6/TCP': 'Ether(dst="02:00:00:00:00:00", src="%s")/Dot1Q(vlan=1)/IPv6(src="::1")/TCP()/("X"*46)' % mac}
 
-        if self.kdriver == "fm10k":
+        if self.kdriver in DRIVER_TEST_LACK_CAPA['sctp_tx_offload']:
             del pktsChkErr['IP/SCTP']
             del pkts['IP/SCTP']
 
@@ -258,11 +254,8 @@ class TestChecksumOffload(TestCase):
                     'IPv6/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6(src="::1")/TCP()/("X"*46)' % mac}
 
         result = dict()
-        if self.kdriver == "fm10k":
-            del pkts['IP/SCTP']
-            del pkts_ref['IP/SCTP']
-
-        self.checksum_enablehw(self.dut_ports[0])
+        
+	self.checksum_enablehw(self.dut_ports[0])
 
         # get the packet checksum value
         result = self.get_chksum_values(pkts_ref)
@@ -281,6 +274,11 @@ class TestChecksumOffload(TestCase):
                     'IPv6/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6(src="::1")/UDP(chksum=0xf)/("X"*46)' % mac,
                     'IPv6/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6(src="::1")/TCP(chksum=0xf)/("X"*46)' % mac}
 
+	if self.kdriver in DRIVER_TEST_LACK_CAPA['sctp_tx_offload']:
+            del pkts_good['IP/SCTP']
+            del pkts_bad['IP/SCTP']
+            del pkts_ref['IP/SCTP']
+
         # send the packet checksum value same with the expected value
         self.checksum_valid_flags(pkts_good, 1)
         # send the packet checksum value different from the expected value
@@ -307,7 +305,7 @@ class TestChecksumOffload(TestCase):
                     'IPv6/UDP': 'Ether(dst="02:00:00:00:00:00", src="%s")/IPv6(src="::1")/UDP()/("X"*46)' % mac,
                     'IPv6/TCP': 'Ether(dst="02:00:00:00:00:00", src="%s")/IPv6(src="::1")/TCP()/("X"*46)' % mac}
 
-        if self.kdriver == "fm10k":
+        if self.kdriver in DRIVER_TEST_LACK_CAPA['sctp_tx_offload']:
             del pkts['IP/SCTP']
             del pkts_ref['IP/SCTP']
 
@@ -396,7 +394,7 @@ class TestChecksumOffload(TestCase):
                 'IPv6/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6()/UDP()/("X"* (lambda x: x - 66 if x > 66 else 0)(%d))',
                 'IPv6/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6()/TCP()/("X"* (lambda x: x - 78 if x > 78 else 0)(%d))'}
 
-        if self.kdriver == "fm10k":
+        if self.kdriver in DRIVER_TEST_LACK_CAPA['sctp_tx_offload']:
             del pkts['IP/SCTP']
 
         lcore = "1S/2C/1T"
-- 
2.7.4



More information about the dts mailing list