tests: replace pycodestyle with black
[vpp.git] / test / test_interface_crud.py
index 6391704..c79999b 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:
@@ -20,9 +20,7 @@ from framework import VppTestCase, VppTestRunner
 
 
 class TestLoopbackInterfaceCRUD(VppTestCase):
-    """CRUD Loopback
-
-    """
+    """CRUD Loopback"""
 
     @classmethod
     def setUpClass(cls):
@@ -30,12 +28,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):
         """
@@ -48,9 +49,11 @@ class TestLoopbackInterfaceCRUD(VppTestCase):
         """
         pkts = []
         for i in dst_ifs:
-            p = (Ether(dst=src_if.local_mac, src=src_if.remote_mac) /
-                 IP(src=src_if.remote_ip4, dst=i.local_ip4) /
-                 ICMP(id=i.sw_if_index, type='echo-request'))
+            p = (
+                Ether(dst=src_if.local_mac, src=src_if.remote_mac)
+                / IP(src=src_if.remote_ip4, dst=i.local_ip4)
+                / ICMP(id=i.sw_if_index, type="echo-request")
+            )
             pkts.append(p)
         return pkts
 
@@ -79,19 +82,25 @@ 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 +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))
@@ -121,20 +130,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 +154,37 @@ class TestLoopbackInterfaceCRUD(VppTestCase):
         self.pg0.assert_nothing_captured()
 
 
-if __name__ == '__main__':
+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)