From 5f93e3b7f85e2257406cf601e5f231a872100fcf Mon Sep 17 00:00:00 2001 From: Jerome Tollet Date: Fri, 18 Dec 2020 09:44:24 +0100 Subject: l2: add per bridge domain learn limit Type: feature Signed-off-by: Jerome Tollet Change-Id: I57ed6699050445d9c9aec98eff3aab56735aca54 Signed-off-by: Jerome Tollet --- test/test_l2bd_learnlimit.py | 53 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 47 insertions(+), 6 deletions(-) (limited to 'test') diff --git a/test/test_l2bd_learnlimit.py b/test/test_l2bd_learnlimit.py index 6a28664e522..e59496eebf0 100644 --- a/test/test_l2bd_learnlimit.py +++ b/test/test_l2bd_learnlimit.py @@ -17,7 +17,7 @@ class TestL2LearnLimit(VppTestCase): @classmethod def setUpClass(self): super(TestL2LearnLimit, self).setUpClass() - self.create_pg_interfaces(range(2)) + self.create_pg_interfaces(range(3)) @classmethod def tearDownClass(cls): @@ -94,6 +94,39 @@ class TestL2LearnLimit(VppTestCase): # check that bd2 was not able to learn self.assertEqual(len(lfs2), 0) + def test_l2bd_learnlimit03(self): + """ L2BD test with bridge domain limit + """ + self.vapi.bridge_domain_set_default_learn_limit(4) + self.vapi.bridge_domain_add_del(bd_id=3) + self.vapi.sw_interface_set_l2_bridge( + self.pg_interfaces[2].sw_if_index, bd_id=3) + + self.vapi.bridge_domain_set_learn_limit(2, 5) + + hosts = self.create_hosts(self.pg_interfaces[1], 20, 2) + fhosts = self.create_hosts(self.pg_interfaces[2], 20, 3) + + # inject 20 mac addresses on bd2 + self.learn_hosts(self.pg_interfaces[1], 2, hosts) + + # inject 20 macs address on bd3 + self.learn_hosts(self.pg_interfaces[2], 3, fhosts) + + lfs1 = self.vapi.l2_fib_table_dump(2) + lfs2 = self.vapi.l2_fib_table_dump(3) + + # check that only 5 macs are learned. + self.assertEqual(len(lfs1), 5) + + # check that only 4 macs are learned. + self.assertEqual(len(lfs2), 4) + + self.vapi.sw_interface_set_l2_bridge( + rx_sw_if_index=self.pg_interfaces[2].sw_if_index, + bd_id=3, enable=0) + self.vapi.bridge_domain_add_del(is_add=0, bd_id=3) + def setUp(self): super(TestL2LearnLimit, self).setUp() @@ -106,13 +139,21 @@ class TestL2LearnLimit(VppTestCase): self.pg_interfaces[1].sw_if_index, bd_id=2) def tearDown(self): - for i in self.pg_interfaces[:2]: - self.vapi.sw_interface_set_l2_bridge(rx_sw_if_index=i.sw_if_index, - bd_id=1, enable=0) + super(TestL2LearnLimit, self).tearDown() + self.vapi.sw_interface_set_l2_bridge( + rx_sw_if_index=self.pg_interfaces[0].sw_if_index, + bd_id=1, enable=0) + self.vapi.sw_interface_set_l2_bridge( + rx_sw_if_index=self.pg_interfaces[1].sw_if_index, + bd_id=2, enable=0) self.vapi.bridge_domain_add_del(bd_id=1, is_add=0) self.vapi.bridge_domain_add_del(bd_id=2, is_add=0) - - super(TestL2LearnLimit, self).tearDown() + i = 0 + while (len(self.vapi.l2_fib_table_dump(bd_id=0xffffffff)) != 0): + time.sleep(1) + i = i + 1 + if i == 30: + self.assertTrue(False) if __name__ == '__main__': -- cgit 1.2.3-korg