from asfframework import VppTestRunner from framework import VppTestCase import unittest from config import config @unittest.skipIf("stn" in config.excluded_plugins, "Exclude stn plugin tests") class TestStn(VppTestCase): """STN plugin tests""" # TODO: actually test the rules by sending packets @classmethod def setUpClass(cls): super(TestStn, cls).setUpClass() try: cls.create_pg_interfaces(range(2)) for i in cls.pg_interfaces: i.config_ip4() i.resolve_arp() i.admin_up() except Exception: cls.tearDownClass() raise @classmethod def tearDownClass(cls): for i in cls.pg_interfaces: i.unconfig_ip4() i.admin_down() super(TestStn, cls).tearDownClass() def test_stn_cli(self): """Add, dump and delete stn rule [CLI]""" expected = [ "rule_index: 0", f"address: {self.pg0.local_ip4}", "iface: pg0", "next_node: pg0-output", ] self.vapi.cli(f"stn rule address {self.pg0.local_ip4} interface pg0") reply = self.vapi.cli("show stn rules") for entry in expected: self.assertIn(entry, reply) self.vapi.cli(f"stn rule address {self.pg0.local_ip4} interface pg0 del") def test_stn_vapi(self): """Add, dump and delete stn rule [VAPI]""" self.vapi.stn_add_del_rule( ip_address=self.pg1.local_ip4, sw_if_index=1, is_add=1, ) self.vapi.stn_rules_dump() self.vapi.stn_add_del_rule( ip_address=self.pg1.local_ip4, sw_if_index=1, is_add=0, ) if __name__ == "__main__": unittest.main(testRunner=VppTestRunner)