api: remove clib_mem_init from vppapiclient contructor
[vpp.git] / test / test_bfd.py
index 7d87a92..f66f75a 100644 (file)
@@ -5,6 +5,7 @@ from __future__ import division
 
 import binascii
 import hashlib
+import ipaddress
 import time
 import unittest
 from random import randint, shuffle, getrandbits
@@ -283,8 +284,8 @@ class BFDAPITestCase(VppTestCase):
         self.assertFalse(echo_source.have_usable_ip6)
 
         self.loopback0.config_ip4()
-        unpacked = unpack("!L", self.loopback0.local_ip4n)
-        echo_ip4 = pack("!L", unpacked[0] ^ 1)
+        echo_ip4 = ipaddress.IPv4Address(int(ipaddress.IPv4Address(
+            self.loopback0.local_ip4)) ^ 1).packed
         echo_source = self.vapi.bfd_udp_get_echo_source()
         self.assertTrue(echo_source.is_set)
         self.assertEqual(echo_source.sw_if_index, self.loopback0.sw_if_index)
@@ -293,9 +294,9 @@ class BFDAPITestCase(VppTestCase):
         self.assertFalse(echo_source.have_usable_ip6)
 
         self.loopback0.config_ip6()
-        unpacked = unpack("!LLLL", self.loopback0.local_ip6n)
-        echo_ip6 = pack("!LLLL", unpacked[0], unpacked[1], unpacked[2],
-                        unpacked[3] ^ 1)
+        echo_ip6 = ipaddress.IPv6Address(int(ipaddress.IPv6Address(
+            self.loopback0.local_ip6)) ^ 1).packed
+
         echo_source = self.vapi.bfd_udp_get_echo_source()
         self.assertTrue(echo_source.is_set)
         self.assertEqual(echo_source.sw_if_index, self.loopback0.sw_if_index)
@@ -684,6 +685,10 @@ class BFD4TestCase(VppTestCase):
     vpp_session = None
     test_session = None
 
+    @classmethod
+    def force_solo(cls):
+        return True
+
     @classmethod
     def setUpClass(cls):
         super(BFD4TestCase, cls).setUpClass()
@@ -819,6 +824,16 @@ class BFD4TestCase(VppTestCase):
         e = self.vapi.wait_for_event(1, "bfd_udp_session_details")
         verify_event(self, e, expected_state=BFDState.down)
 
+    def test_peer_discr_reset_sess_down(self):
+        """ peer discriminator reset after session goes down """
+        bfd_session_up(self)
+        detection_time = self.test_session.detect_mult *\
+            self.vpp_session.required_min_rx / USEC_IN_SEC
+        self.sleep(detection_time, "waiting for BFD session time-out")
+        self.test_session.my_discriminator = 0
+        wait_for_bfd_packet(self,
+                            pcap_time_min=time.time() - self.vpp_clock_offset)
+
     def test_large_required_min_rx(self):
         """ large remote required min rx interval """
         bfd_session_up(self)
@@ -1039,6 +1054,8 @@ class BFD4TestCase(VppTestCase):
         self.assertNotIn("P", p.sprintf("%BFD.flags%"),
                          "Poll bit set in BFD packet")
 
+    # returning inconsistent results requiring retries in per-patch tests
+    @unittest.skipUnless(running_extended_tests, "part of extended tests")
     def test_poll_response(self):
         """ test correct response to control frame with poll bit set """
         bfd_session_up(self)
@@ -1480,6 +1497,10 @@ class BFD6TestCase(VppTestCase):
     vpp_session = None
     test_session = None
 
+    @classmethod
+    def force_solo(cls):
+        return True
+
     @classmethod
     def setUpClass(cls):
         super(BFD6TestCase, cls).setUpClass()
@@ -1691,6 +1712,10 @@ class BFDFIBTestCase(VppTestCase):
     vpp_session = None
     test_session = None
 
+    @classmethod
+    def force_solo(cls):
+        return True
+
     @classmethod
     def setUpClass(cls):
         super(BFDFIBTestCase, cls).setUpClass()
@@ -1879,6 +1904,10 @@ class BFDSHA1TestCase(VppTestCase):
     vpp_session = None
     test_session = None
 
+    @classmethod
+    def force_solo(cls):
+        return True
+
     @classmethod
     def setUpClass(cls):
         super(BFDSHA1TestCase, cls).setUpClass()
@@ -2098,6 +2127,7 @@ class BFDSHA1TestCase(VppTestCase):
         self.test_session.vpp_seq_number = None
         # now throw away any pending packets
         self.pg0.enable_capture()
+        self.test_session.my_discriminator = 0
         bfd_session_up(self)
 
 
@@ -2108,6 +2138,10 @@ class BFDAuthOnOffTestCase(VppTestCase):
     vpp_session = None
     test_session = None
 
+    @classmethod
+    def force_solo(cls):
+        return True
+
     @classmethod
     def setUpClass(cls):
         super(BFDAuthOnOffTestCase, cls).setUpClass()
@@ -2317,6 +2351,10 @@ class BFDCLITestCase(VppTestCase):
     """Bidirectional Forwarding Detection (BFD) (CLI) """
     pg0 = None
 
+    @classmethod
+    def force_solo(cls):
+        return True
+
     @classmethod
     def setUpClass(cls):
         super(BFDCLITestCase, cls).setUpClass()
@@ -2715,16 +2753,15 @@ class BFDCLITestCase(VppTestCase):
                                  "IPv6 address usable as echo source: none" %
                                  self.loopback0.name)
         self.loopback0.config_ip4()
-        unpacked = unpack("!L", self.loopback0.local_ip4n)
-        echo_ip4 = inet_ntop(AF_INET, pack("!L", unpacked[0] ^ 1))
+        echo_ip4 = str(ipaddress.IPv4Address(int(ipaddress.IPv4Address(
+            self.loopback0.local_ip4)) ^ 1))
         self.cli_verify_response("show bfd echo-source",
                                  "UDP echo source is: %s\n"
                                  "IPv4 address usable as echo source: %s\n"
                                  "IPv6 address usable as echo source: none" %
                                  (self.loopback0.name, echo_ip4))
-        unpacked = unpack("!LLLL", self.loopback0.local_ip6n)
-        echo_ip6 = inet_ntop(AF_INET6, pack("!LLLL", unpacked[0], unpacked[1],
-                                            unpacked[2], unpacked[3] ^ 1))
+        echo_ip6 = str(ipaddress.IPv6Address(int(ipaddress.IPv6Address(
+            self.loopback0.local_ip6)) ^ 1))
         self.loopback0.config_ip6()
         self.cli_verify_response("show bfd echo-source",
                                  "UDP echo source is: %s\n"