-#!/usr/bin/env python
+#!/usr/bin/env python3
"""CRUD tests of APIs (Create, Read, Update, Delete) HLD:
- interface up/down/add/delete - interface type:
cls.tearDownClass()
raise
+ @classmethod
+ def tearDownClass(cls):
+ super(TestLoopbackInterfaceCRUD, cls).tearDownClass()
+
@staticmethod
def create_icmp_stream(src_if, dst_ifs):
"""
# create
loopbacks = self.create_loopback_interfaces(20)
for i in loopbacks:
- i.local_ip4_prefix_len = 32
+ i.local_ip4_prefix.len = 32
i.config_ip4()
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)
# 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))
# create
loopbacks = self.create_loopback_interfaces(20)
for i in loopbacks:
- i.local_ip4_prefix_len = 32
+ i.local_ip4_prefix.len = 32
i.config_ip4()
i.admin_up()
# 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))
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)