summaryrefslogtreecommitdiffstats
path: root/test/test_l2bd_learnlimit.py
diff options
context:
space:
mode:
authorJerome Tollet <jtollet@cisco.com>2020-12-18 09:44:24 +0100
committerJohn Lo <loj@cisco.com>2021-01-06 04:17:09 +0000
commit5f93e3b7f85e2257406cf601e5f231a872100fcf (patch)
treea9ae2588b3d28ac380b0a97b827ac52101ebbd52 /test/test_l2bd_learnlimit.py
parent1b576e0aa08c575a4409b50dc71e8f51d231f199 (diff)
l2: add per bridge domain learn limit
Type: feature Signed-off-by: Jerome Tollet <jtollet@cisco.com> Change-Id: I57ed6699050445d9c9aec98eff3aab56735aca54 Signed-off-by: Jerome Tollet <jtollet@cisco.com>
Diffstat (limited to 'test/test_l2bd_learnlimit.py')
-rw-r--r--test/test_l2bd_learnlimit.py53
1 files changed, 47 insertions, 6 deletions
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__':