diff options
author | Angela Czubak <aczubak@caviumnetworks.com> | 2017-04-19 14:22:02 +0200 |
---|---|---|
committer | Marvin Liu <yong.liu@intel.com> | 2017-04-20 13:23:35 +0800 |
commit | 0b00d565980868a54d574708bef6459c72a4df89 (patch) | |
tree | 4b1b3bcdcbcd89e489b2d6910cc29e5aafbc2475 /tests | |
parent | cb0cae9d3b5abaaa8f8a90f693c0140a233169b7 (diff) |
tests: checksum_offload - fixes
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>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/TestSuite_checksum_offload.py | 38 |
1 files changed, 18 insertions, 20 deletions
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" |