# Required to instantiate the topology builder class.
from mininet.topo import Topo
-class OSPFTopo(Topo):
+import shutil
+
+class OspfSrTopo(Topo):
"Test topology builder"
def build(self, *_args, **_opts):
"Build function"
tgen = get_topogen(self)
+ # Check for mpls
+ if tgen.hasmpls != True:
+ logger.info('MPLS not available, tests will be skipped')
+ return
+
# Create 4 routers
for routern in range(1, 5):
tgen.add_router('r{}'.format(routern))
def setup_module(mod):
"Sets up the pytest environment"
- tgen = Topogen(OSPFTopo, mod.__name__)
+ tgen = Topogen(OspfSrTopo, mod.__name__)
tgen.start_topology()
router_list = tgen.routers()
+
for rname, router in router_list.iteritems():
router.load_config(
TopoRouter.RD_ZEBRA,
# Initialize all routers.
tgen.start_router()
+ # Check version
+ for router in router_list.values():
+ if router.has_version('<', '4'):
+ tgen.set_error('unsupported version')
+
def teardown_module(mod):
"Teardown the pytest environment"
tgen = get_topogen()
"Test OSPF daemon Segment Routing"
tgen = get_topogen()
if tgen.routers_have_failure():
- pytest.skip('skipped because of router(s) failure')
+ pytest.skip(tgen.errors)
for rnum in range(1, 5):
router = 'r{}'.format(rnum)
+ # Check that Segment Routing is available
+ output = tgen.gears[router].vtysh_cmd("show ip ospf database segment-routing")
+ if output.find("Unknown") != -1:
+ pytest.skip('Segment Routing is not available')
+
logger.info('Checking OSPF Segment Routing database on router "%s"',
router)
"Test OSPF Segment Routing MPLS route installation"
tgen = get_topogen()
if tgen.routers_have_failure():
- pytest.skip('skipped because of router(s) failure')
+ pytest.skip(tgen.errors)
for rnum in range(1, 5):
router = 'r{}'.format(rnum)
+ # Check that Segment Routing is available
+ output = tgen.gears[router].vtysh_cmd("show ip ospf database segment-routing")
+ if output.find("Unknown") != -1:
+ pytest.skip('Segment Routing is not available')
+
logger.info('Checking OSPF SR MPLS table in "%s"', router)
# Load expected results from the command