cdp: re-enable skipped tests for python3 46/22946/2
authorOle Troan <ot@cisco.com>
Wed, 23 Oct 2019 09:24:23 +0000 (11:24 +0200)
committerAndrew Yourtchenko <ayourtch@gmail.com>
Wed, 23 Oct 2019 12:19:37 +0000 (12:19 +0000)
CDP uses the running sytems host name, which
caused different failures on different systems.
The root cause was an python3 specific error in
checksum calculation.

Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: I205436682d46e7e8cbb8c057c03a76dbbcab4d72

src/plugins/cdp/test/test_cdp.py
test/patches/scapy-2.4/cdp.patch

index c0e5287..27f35c2 100644 (file)
@@ -98,13 +98,9 @@ class TestCDP(VppTestCase):
         self.assert_equal(system[:length], self.device_id[:length],
                           "CDP received invalid device id")
 
-    @unittest.skipIf(sys.version_info[0] > 2,
-                     "not supported in python3/scapy")
     def test_cdp_underflow_tlv(self):
         self.send_bad_packet(3, ".")
 
-    @unittest.skipIf(sys.version_info[0] > 2,
-                     "not supported in python3/scapy")
     def test_cdp_overflow_tlv(self):
         self.send_bad_packet(8, ".")
 
index 3248915..de16f5d 100644 (file)
@@ -12,7 +12,7 @@ index c8b7f106..7b1ff64d 100644
                      StrLenField("val", "", length_from=lambda x:x.len - 4) ]
  
  
-@@ -178,7 +179,8 @@ class CDPMsgAddr(CDPMsgGeneric):
+@@ -178,5 +179,6 @@ class CDPMsgAddr(CDPMsgGeneric):
  class CDPMsgPortID(CDPMsgGeneric):
      name = "Port ID"
      fields_desc = [ XShortEnumField("type", 0x0003, _cdp_tlv_types),
@@ -20,5 +20,12 @@ index c8b7f106..7b1ff64d 100644
 +                    FieldLenField("len", None, "iface", "!H",
 +                                  adjust=lambda pkt, x: x + 4),
                      StrLenField("iface", "Port 1", length_from=lambda x:x.len - 4) ]
+@@ -319,7 +319,7 @@ class _CDPChecksum:
+         This padding is only used for checksum computation.  The original
+         packet should not be altered."""
+         if len(pkt) % 2:
+-            last_chr = pkt[-1]
++            last_chr = pkt[len(pkt)-1:]
+             if last_chr <= b'\x80':
+                 return pkt[:-1] + b'\x00' + last_chr
+             else: