Tests: Refactor payload_to_info() 81/18081/5
authorPaul Vinciguerra <pvinci@vinciconsulting.com>
Wed, 6 Mar 2019 19:58:06 +0000 (11:58 -0800)
committerOle Trøan <otroan@employees.org>
Thu, 7 Mar 2019 22:29:44 +0000 (22:29 +0000)
All callers of payload_to_info were required to wrap payload with str().
Refactor to call scapy's payload.load for raw payloads or specify the
specific fieldname.

Change-Id: I1c80599d4df8dc129dbb8274733afaad406d5bcf
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
22 files changed:
test/doc/overview.rst
test/framework.py
test/test_acl_plugin.py
test/test_classifier.py
test/test_classifier_ip6.py
test/test_classify_l2_acl.py
test/test_ip4.py
test/test_ip4_irb.py
test/test_ip4_vrf_multi_instance.py
test/test_ip6.py
test/test_ip6_vrf_multi_instance.py
test/test_ip_ecmp.py
test/test_l2_fib.py
test/test_l2bd.py
test/test_l2bd_multi_instance.py
test/test_l2xc.py
test/test_l2xc_multi_instance.py
test/test_lb.py
test/test_reassembly.py
test/test_srv6.py
test/test_srv6_ad.py
test/test_srv6_as.py

index 26d365b..2ef9426 100644 (file)
@@ -386,7 +386,7 @@ basic IPv4 forwarding.
                      ip = packet[IP]
                      udp = packet[UDP]
                      # convert the payload to packet info object
-                     payload_info = self.payload_to_info(str(packet[Raw]))
+                     payload_info = self.payload_to_info(packet[Raw])
                      # make sure the indexes match
                      self.assert_equal(payload_info.src, src_if.sw_if_index,
                                        "source sw_if_index")
index dc7d610..778832f 100644 (file)
@@ -746,16 +746,18 @@ class VppTestCase(unittest.TestCase):
                                    info.ip, info.proto)
 
     @staticmethod
-    def payload_to_info(payload):
+    def payload_to_info(payload, payload_field='load'):
         """
         Convert packet payload to _PacketInfo object
 
         :param payload: packet payload
-
+        :type:  <class 'scapy.packet.Raw'>
+        :param: payload_field: packet fieldname of payload "load" for
+                <class 'scapy.packet.Raw'>
         :returns: _PacketInfo object containing de-serialized data from payload
 
         """
-        numbers = payload.split()
+        numbers = getattr(payload, payload_field).split()
         info = _PacketInfo()
         info.index = int(numbers[0])
         info.src = int(numbers[1])
index ccf495c..fa92513 100644 (file)
@@ -380,10 +380,10 @@ class TestACLplugin(VppTestCase):
                 # Raw data for ICMPv6 are stored in ICMPv6EchoRequest.data
                 if traffic_type == self.ICMP and ip_type == self.IPV6:
                     payload_info = self.payload_to_info(
-                        packet[ICMPv6EchoRequest].data)
+                        packet[ICMPv6EchoRequest], 'data')
                     payload = packet[ICMPv6EchoRequest]
                 else:
-                    payload_info = self.payload_to_info(str(packet[Raw]))
+                    payload_info = self.payload_to_info(packet[Raw])
                     payload = packet[self.proto_map[payload_info.proto]]
             except:
                 self.logger.error(ppp("Unexpected or invalid packet "
index c0b8546..f62a76d 100644 (file)
@@ -141,7 +141,7 @@ class TestClassifier(VppTestCase):
             try:
                 ip_received = packet[IP]
                 proto_received = packet[proto_l]
-                payload_info = self.payload_to_info(str(packet[Raw]))
+                payload_info = self.payload_to_info(packet[Raw])
                 packet_index = payload_info.index
                 self.assertEqual(payload_info.dst, dst_sw_if_index)
                 self.logger.debug(
index 30ad48c..2b9b142 100644 (file)
@@ -126,7 +126,7 @@ class TestClassifier(VppTestCase):
             try:
                 ip6_received = packet[IPv6]
                 proto_received = packet[proto_l]
-                payload_info = self.payload_to_info(str(packet[Raw]))
+                payload_info = self.payload_to_info(packet[Raw])
                 packet_index = payload_info.index
                 self.assertEqual(payload_info.dst, dst_sw_if_index)
                 self.logger.debug(
index 0795907..a729929 100644 (file)
@@ -396,7 +396,7 @@ class TestClassifyAcl(VppTestCase):
                         packet[ICMPv6EchoRequest].data)
                     payload = packet[ICMPv6EchoRequest]
                 else:
-                    payload_info = self.payload_to_info(str(packet[Raw]))
+                    payload_info = self.payload_to_info(packet[Raw])
                     payload = packet[self.proto_map[payload_info.proto]]
             except:
                 self.logger.error(ppp("Unexpected or invalid packet "
index b6553db..492e96a 100644 (file)
@@ -168,7 +168,7 @@ class TestIPv4(VppTestCase):
             try:
                 ip = packet[IP]
                 udp = packet[UDP]
-                payload_info = self.payload_to_info(str(packet[Raw]))
+                payload_info = self.payload_to_info(packet[Raw])
                 packet_index = payload_info.index
                 self.assertEqual(payload_info.dst, dst_sw_if_index)
                 self.logger.debug(
@@ -351,8 +351,8 @@ class TestIPv4FibCrud(VppTestCase):
 
     def _find_ip_match(self, find_in, pkt):
         for p in find_in:
-            if self.payload_to_info(str(p[Raw])) == \
-                    self.payload_to_info(str(pkt[Raw])):
+            if self.payload_to_info(p[Raw]) == \
+                    self.payload_to_info(pkt[Raw]):
                 if p[IP].src != pkt[IP].src:
                     break
                 if p[IP].dst != pkt[IP].dst:
index 8c3830c..9b762aa 100644 (file)
@@ -152,7 +152,7 @@ class TestIpIrb(VppTestCase):
         for packet in capture:
             ip = packet[IP]
             udp = packet[IP][UDP]
-            payload_info = self.payload_to_info(str(packet[IP][UDP][Raw]))
+            payload_info = self.payload_to_info(packet[IP][UDP][Raw])
 
             self.assertEqual(payload_info.dst, dst_ip_sw_if_index)
 
@@ -188,7 +188,7 @@ class TestIpIrb(VppTestCase):
         for packet in capture:
             ip = packet[IP]
             udp = packet[IP][UDP]
-            payload_info = self.payload_to_info(str(packet[IP][UDP][Raw]))
+            payload_info = self.payload_to_info(packet[IP][UDP][Raw])
             packet_index = payload_info.index
 
             self.assertEqual(payload_info.dst, dst_ip_sw_if_index)
index 76a32ad..71532ad 100644 (file)
@@ -296,7 +296,7 @@ class TestIp4VrfMultiInst(VppTestCase):
             try:
                 ip = packet[IP]
                 udp = packet[UDP]
-                payload_info = self.payload_to_info(str(packet[Raw]))
+                payload_info = self.payload_to_info(packet[Raw])
                 packet_index = payload_info.index
                 self.assertEqual(payload_info.dst, dst_sw_if_index)
                 self.logger.debug("Got packet on port %s: src=%u (id=%u)" %
index 111a71e..1d52edb 100644 (file)
@@ -318,7 +318,7 @@ class TestIPv6(TestIPv6ND):
             try:
                 ip = packet[IPv6]
                 udp = packet[inet6.UDP]
-                payload_info = self.payload_to_info(str(packet[Raw]))
+                payload_info = self.payload_to_info(packet[Raw])
                 packet_index = payload_info.index
                 self.assertEqual(payload_info.dst, dst_sw_if_index)
                 self.logger.debug(
index 7284e2e..4b4a9e4 100644 (file)
@@ -309,7 +309,7 @@ class TestIP6VrfMultiInst(VppTestCase):
             try:
                 ip = packet[IPv6]
                 udp = packet[UDP]
-                payload_info = self.payload_to_info(str(packet[Raw]))
+                payload_info = self.payload_to_info(packet[Raw])
                 packet_index = payload_info.index
                 self.assertEqual(payload_info.dst, dst_sw_if_index)
                 self.logger.debug("Got packet on port %s: src=%u (id=%u)" %
index 17b0a6c..5abaea4 100644 (file)
@@ -138,7 +138,7 @@ class TestECMP(VppTestCase):
         for packet in capture:
             try:
                 ip_received = packet[ip_l]
-                payload_info = self.payload_to_info(str(packet[Raw]))
+                payload_info = self.payload_to_info(packet[Raw])
                 packet_index = payload_info.index
                 ip_sent = self._packet_infos[packet_index].data[ip_l]
                 self.logger.debug("Got packet on port %s: src=%u (id=%u)" %
index ac70c8a..58dc37e 100644 (file)
@@ -299,7 +299,7 @@ class TestL2fib(VppTestCase):
             last_info[i.sw_if_index] = None
         dst_sw_if_index = pg_if.sw_if_index
         for packet in capture:
-            payload_info = self.payload_to_info(str(packet[Raw]))
+            payload_info = self.payload_to_info(packet[Raw])
             try:
                 ip = packet[IP]
                 udp = packet[UDP]
index 30708a4..db831f3 100644 (file)
@@ -184,7 +184,7 @@ class TestL2bd(VppTestCase):
             last_info[i.sw_if_index] = None
         dst_sw_if_index = pg_if.sw_if_index
         for packet in capture:
-            payload_info = self.payload_to_info(str(packet[Raw]))
+            payload_info = self.payload_to_info(packet[Raw])
             src_sw_if_index = payload_info.src
             src_if = None
             for ifc in self.pg_interfaces:
index 1896714..ac3662f 100644 (file)
@@ -263,7 +263,7 @@ class TestL2bdMultiInst(VppTestCase):
             try:
                 ip = packet[IP]
                 udp = packet[UDP]
-                info = self.payload_to_info(str(packet[Raw]))
+                info = self.payload_to_info(packet[Raw])
                 self.assertEqual(info.dst, dst)
                 self.logger.debug("Got packet on port %s: src=%u (id=%u)" %
                                   (dst_if.name, info.src, info.index))
index 2ec4af9..8be93e4 100644 (file)
@@ -147,7 +147,7 @@ class TestL2xc(VppTestCase):
             try:
                 ip = packet[IP]
                 udp = packet[UDP]
-                payload_info = self.payload_to_info(str(packet[Raw]))
+                payload_info = self.payload_to_info(packet[Raw])
                 packet_index = payload_info.index
                 self.assertEqual(payload_info.dst, dst_sw_if_index)
                 self.logger.debug("Got packet on port %s: src=%u (id=%u)" %
index bb26f95..6192bd1 100644 (file)
@@ -235,7 +235,7 @@ class TestL2xcMultiInst(VppTestCase):
             last_info[i.sw_if_index] = None
         dst_sw_if_index = pg_if.sw_if_index
         for packet in capture:
-            payload_info = self.payload_to_info(str(packet[Raw]))
+            payload_info = self.payload_to_info(packet[Raw])
             try:
                 ip = packet[IP]
                 udp = packet[UDP]
index 45dab79..86e7cb4 100644 (file)
@@ -94,7 +94,7 @@ class TestLB(VppTestCase):
         self.assertEqual(gre.flags, 0)
         self.assertEqual(gre.version, 0)
         inner = IPver(str(gre.payload))
-        payload_info = self.payload_to_info(str(inner[Raw]))
+        payload_info = self.payload_to_info(inner[Raw])
         self.info = self.packet_infos[payload_info.index]
         self.assertEqual(payload_info.src, self.pg0.sw_if_index)
         self.assertEqual(str(inner), str(self.info.data[IPver]))
index aee67b1..8004f36 100644 (file)
@@ -52,7 +52,7 @@ class TestIPReassemblyMixin(object):
                 self.logger.debug(ppp("Got packet:", packet))
                 ip = packet[scapy_ip_family]
                 udp = packet[UDP]
-                payload_info = self.payload_to_info(str(packet[Raw]))
+                payload_info = self.payload_to_info(packet[Raw])
                 packet_index = payload_info.index
                 self.assertTrue(
                     packet_index not in dropped_packet_indexes,
@@ -899,7 +899,7 @@ class TestIPv4ReassemblyLocalNode(VppTestCase):
                 self.logger.debug(ppp("Got packet:", packet))
                 ip = packet[IP]
                 icmp = packet[ICMP]
-                payload_info = self.payload_to_info(str(packet[Raw]))
+                payload_info = self.payload_to_info(packet[Raw])
                 packet_index = payload_info.index
                 if packet_index in seen:
                     raise Exception(ppp("Duplicate packet received", packet))
@@ -997,7 +997,7 @@ class TestFIFReassembly(VppTestCase):
                 self.logger.debug(ppp("Got packet:", packet))
                 ip = packet[ip_class]
                 udp = packet[UDP]
-                payload_info = self.payload_to_info(str(packet[Raw]))
+                payload_info = self.payload_to_info(packet[Raw])
                 packet_index = payload_info.index
                 self.assertTrue(
                     packet_index not in dropped_packet_indexes,
index 890e7ff..2ea9da7 100644 (file)
@@ -2080,7 +2080,7 @@ class TestSRv6(VppTestCase):
         # but packet[Raw] gives the complete payload
         # (incl L2 header) for the T.Encaps L2 case
         try:
-            payload_info = self.payload_to_info(str(packet[Raw]))
+            payload_info = self.payload_to_info(packet[Raw])
 
         except:
             # remote L2 header from packet[Raw]:
index 6dafa9f..728ecd8 100644 (file)
@@ -729,14 +729,14 @@ class TestSRv6(VppTestCase):
         # but packet[Raw] gives the complete payload
         # (incl L2 header) for the T.Encaps L2 case
         try:
-            payload_info = self.payload_to_info(str(packet[Raw]))
+            payload_info = self.payload_to_info(packet[Raw])
 
         except:
             # remote L2 header from packet[Raw]:
             # take packet[Raw], convert it to an Ether layer
             # and then extract Raw from it
             payload_info = self.payload_to_info(
-                str(Ether(str(packet[Raw]))[Raw]))
+                Ether(str(packet[Raw]))[Raw])
 
         return payload_info
 
index 64ff957..1ff7906 100755 (executable)
@@ -810,14 +810,14 @@ class TestSRv6(VppTestCase):
         # but packet[Raw] gives the complete payload
         # (incl L2 header) for the T.Encaps L2 case
         try:
-            payload_info = self.payload_to_info(str(packet[Raw]))
+            payload_info = self.payload_to_info(packet[Raw])
 
         except:
             # remote L2 header from packet[Raw]:
             # take packet[Raw], convert it to an Ether layer
             # and then extract Raw from it
             payload_info = self.payload_to_info(
-                str(Ether(str(packet[Raw]))[Raw]))
+                Ether(str(packet[Raw]))[Raw])
 
         return payload_info