interface: shmemioerror while getting name_filter arg
[vpp.git] / test / test_interface_crud.py
index b845c6b..f701e27 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 """CRUD tests of APIs (Create, Read, Update, Delete) HLD:
 
 - interface up/down/add/delete - interface type:
@@ -36,6 +36,10 @@ class TestLoopbackInterfaceCRUD(VppTestCase):
             cls.tearDownClass()
             raise
 
+    @classmethod
+    def tearDownClass(cls):
+        super(TestLoopbackInterfaceCRUD, cls).tearDownClass()
+
     @staticmethod
     def create_icmp_stream(src_if, dst_ifs):
         """
@@ -86,12 +90,17 @@ class TestLoopbackInterfaceCRUD(VppTestCase):
             i.admin_up()
 
         # read (check sw if dump, ip4 fib, ip6 fib)
-        if_dump = self.vapi.sw_interface_dump()
-        fib4_dump = self.vapi.ip_fib_dump()
+        if_dump = self.vapi.sw_interface_dump(name_filter_valid=True,
+                                              name_filter='loop')
+        fib4_dump = self.vapi.ip_route_dump(0)
         for i in loopbacks:
             self.assertTrue(i.is_interface_config_in_dump(if_dump))
             self.assertTrue(i.is_ip4_entry_in_fib_dump(fib4_dump))
 
+        if_dump = self.vapi.sw_interface_dump(name_filter_valid=True,
+                                              name_filter='loopXYZ')
+        self.assertEqual(len(if_dump), 0)
+
         # check ping
         stream = self.create_icmp_stream(self.pg0, loopbacks)
         self.pg0.add_stream(stream)
@@ -107,7 +116,7 @@ class TestLoopbackInterfaceCRUD(VppTestCase):
 
         # read (check not in sw if dump, ip4 fib, ip6 fib)
         if_dump = self.vapi.sw_interface_dump()
-        fib4_dump = self.vapi.ip_fib_dump()
+        fib4_dump = self.vapi.ip_route_dump(0)
         for i in loopbacks:
             self.assertFalse(i.is_interface_config_in_dump(if_dump))
             self.assertFalse(i.is_ip4_entry_in_fib_dump(fib4_dump))
@@ -134,7 +143,7 @@ class TestLoopbackInterfaceCRUD(VppTestCase):
 
         # read (check not in sw if dump, ip4 fib, ip6 fib)
         if_dump = self.vapi.sw_interface_dump()
-        fib4_dump = self.vapi.ip_fib_dump()
+        fib4_dump = self.vapi.ip_route_dump(0)
         for i in loopbacks:
             self.assertTrue(i.is_interface_config_in_dump(if_dump))
             self.assertFalse(i.is_ip4_entry_in_fib_dump(fib4_dump))
@@ -147,5 +156,38 @@ class TestLoopbackInterfaceCRUD(VppTestCase):
         self.pg0.assert_nothing_captured()
 
 
+class TestInterfaceDumpApiLocalOnly(VppTestCase):
+    """test_interface_crud.TestInterfaceDumpApiLocalOnly"""
+
+    def test_sw_if_index_0(self):
+        rv = self.vapi.sw_interface_dump(sw_if_index=0)
+        self.assertEqual(rv[0].sw_if_index, 0)
+
+    def test_sw_if_index_twiddle0(self):
+        rv = self.vapi.sw_interface_dump(sw_if_index=0xffffffff)
+        self.assertEqual(rv[0].sw_if_index, 0)
+
+    def test_sw_if_index_1_not_existing(self):
+        rv = self.vapi.sw_interface_dump(sw_if_index=1)
+        self.assertEqual(len(rv), 0, 'expected no records.')
+
+
+class TestInterfaceDumpApi(VppTestCase):
+    """test_interface_crud.TestInterfaceDumpApi"""
+
+    def test_sw_if_index_1(self):
+        self.vapi.create_loopback_instance(is_specified=1,
+                                           user_instance=10)
+        self.vapi.create_loopback_instance(is_specified=1,
+                                           user_instance=5)
+
+        # Can I get back the specified record?
+        rv = self.vapi.sw_interface_dump(sw_if_index=1)
+        self.assertEqual(rv[0].sw_if_index, 1, rv)
+
+        # verify 3 interfaces
+        rv = self.vapi.sw_interface_dump(sw_if_index=0xffffffff)
+        self.assertEqual(len(rv), 3, 'Expected 3 interfaces.')
+
 if __name__ == '__main__':
     unittest.main(testRunner=VppTestRunner)