X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Ftest_interface_crud.py;h=c88759d9b59dd761780484a51c1a8a4f5aa562b5;hb=26eec75f2b30f4c03b4ca671165cd0d4823f0175;hp=e19f770c155213b4395d79319b873e49880e646b;hpb=7f9b7f9f492d1748d8ba025b3a713058fdb1943d;p=vpp.git diff --git a/test/test_interface_crud.py b/test/test_interface_crud.py index e19f770c155..c88759d9b59 100644 --- a/test/test_interface_crud.py +++ b/test/test_interface_crud.py @@ -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: @@ -16,13 +16,12 @@ import unittest from scapy.layers.inet import IP, ICMP from scapy.layers.l2 import Ether -from framework import VppTestCase, VppTestRunner +from framework import VppTestCase +from asfframework import VppTestRunner class TestLoopbackInterfaceCRUD(VppTestCase): - """CRUD Loopback - - """ + """CRUD Loopback""" @classmethod def setUpClass(cls): @@ -30,8 +29,7 @@ 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 @@ -52,9 +50,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 @@ -86,16 +86,22 @@ class TestLoopbackInterfaceCRUD(VppTestCase): 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) @@ -111,7 +117,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)) @@ -128,17 +134,15 @@ class TestLoopbackInterfaceCRUD(VppTestCase): 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)) @@ -151,5 +155,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)