nat: use correct data types for memory sizes
[vpp.git] / test / test_interface_crud.py
index 6391704..2f08f33 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:
@@ -30,12 +30,15 @@ class TestLoopbackInterfaceCRUD(VppTestCase):
         try:
             cls.create_pg_interfaces(range(1))
             for i in cls.pg_interfaces:
-                i.config_ip4()
-                i.resolve_arp()
+                i.config_ip4().resolve_arp()
         except:
             cls.tearDownClass()
             raise
 
+    @classmethod
+    def tearDownClass(cls):
+        super(TestLoopbackInterfaceCRUD, cls).tearDownClass()
+
     @staticmethod
     def create_icmp_stream(src_if, dst_ifs):
         """
@@ -79,19 +82,23 @@ class TestLoopbackInterfaceCRUD(VppTestCase):
 
     def test_crud(self):
         # create
-        loopbacks = self.create_loopback_interfaces(range(20))
+        loopbacks = self.create_loopback_interfaces(20)
         for i in loopbacks:
             i.local_ip4_prefix_len = 32
-            i.config_ip4()
-            i.admin_up()
+            i.config_ip4().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 +114,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))
@@ -121,20 +128,18 @@ class TestLoopbackInterfaceCRUD(VppTestCase):
 
     def test_down(self):
         # create
-        loopbacks = self.create_loopback_interfaces(range(20))
+        loopbacks = self.create_loopback_interfaces(20)
         for i in loopbacks:
             i.local_ip4_prefix_len = 32
-            i.config_ip4()
-            i.admin_up()
+            i.config_ip4().admin_up()
 
         # disable
         for i in loopbacks:
-            i.admin_down()
-            i.unconfig_ip4()
+            i.admin_down().unconfig_ip4()
 
         # 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 +152,39 @@ 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)