def test_ospf6_link_down_kernel_route(): "Test OSPF kernel route installation" tgen = get_topogen() if tgen.routers_have_failure(): pytest.skip("skipped because of router(s) failure") rlist = tgen.routers().values() for router in rlist: logger.info( 'Checking OSPF IPv6 kernel routes in "%s" after link down', router.name ) routes = topotest.ip6_route(router) expected = { "2001:db8:1::/64": {}, "2001:db8:2::/64": {}, "2001:db8:3::/64": {}, "2001:db8:100::/64": {}, "2001:db8:200::/64": {}, "2001:db8:300::/64": {}, } if router.name == "r1" or router.name == "r2": expected.update( { "2001:db8:100::/64": None, "2001:db8:200::/64": None, "2001:db8:300::/64": None, } ) elif router.name == "r3" or router.name == "r4": expected.update( { "2001:db8:1::/64": None, "2001:db8:2::/64": None, } ) # Route '2001:db8:3::/64' is no longer available for r4 since it is down. if router.name == "r4": expected.update( { "2001:db8:3::/64": None, } ) assertmsg = 'OSPF IPv6 route mismatch in router "{}" after link down'.format( router.name ) count = 0 not_found = True while not_found and count < 10: not_found = topotest.json_cmp(routes, expected) if not_found: sleep(1) routes = topotest.ip6_route(router) count += 1 else: not_found = False break assert not_found is False, assertmsg
def test_isis_linux_route6_installation(): "Check whether all expected routes are present and installed in the OS" tgen = get_topogen() # Don't run this test if we have any failure. if tgen.routers_have_failure(): pytest.skip(tgen.errors) logger.info("Checking routers for installed ISIS IPv6 routes in OS") # Check for routes in `ip route` for rname, router in tgen.routers().items(): filename = "{0}/{1}/{1}_route6_linux.json".format(CWD, rname) expected = json.loads(open(filename, "r").read()) actual = topotest.ip6_route(router) assertmsg = "Router '{}' OS routes mismatch".format(rname) assert topotest.json_cmp(actual, expected) is None, assertmsg
def test_ospf6_kernel_route(): "Test OSPF kernel route installation" tgen = get_topogen() if tgen.routers_have_failure(): pytest.skip("skipped because of router(s) failure") rlist = tgen.routers().values() for router in rlist: logger.info('Checking OSPF IPv6 kernel routes in "%s"', router.name) routes = topotest.ip6_route(router) expected = { "2001:db8:1::/64": {}, "2001:db8:2::/64": {}, "2001:db8:3::/64": {}, "2001:db8:100::/64": {}, "2001:db8:200::/64": {}, "2001:db8:300::/64": {}, } assertmsg = 'OSPF IPv6 route mismatch in router "{}"'.format(router.name) assert topotest.json_cmp(routes, expected) is None, assertmsg
def test_ospf6_link_down_kernel_route(): "Test OSPF kernel route installation" tgen = get_topogen() if tgen.routers_have_failure(): pytest.skip('skipped because of router(s) failure') rlist = tgen.routers().values() for router in rlist: logger.info('Checking OSPF IPv6 kernel routes in "%s" after link down', router.name) routes = topotest.ip6_route(router) expected = { '2001:db8:1::/64': {}, '2001:db8:2::/64': {}, '2001:db8:3::/64': {}, '2001:db8:100::/64': {}, '2001:db8:200::/64': {}, '2001:db8:300::/64': {}, } if router.name == 'r1' or router.name == 'r2': expected.update({ '2001:db8:100::/64': None, '2001:db8:200::/64': None, '2001:db8:300::/64': None, }) elif router.name == 'r3' or router.name == 'r4': expected.update({ '2001:db8:1::/64': None, '2001:db8:2::/64': None, }) # Route '2001:db8:3::/64' is no longer available for r4 since it is down. if router.name == 'r4': expected.update({ '2001:db8:3::/64': None, }) assertmsg = 'OSPF IPv6 route mismatch in router "{}" after link down'.format( router.name) assert topotest.json_cmp(routes, expected) is None, assertmsg
def test_isis_linux_route6_installation(): "Check whether all expected routes are present and installed in the OS" tgen = get_topogen() # Don't run this test if we have any failure. if tgen.routers_have_failure(): pytest.skip(tgen.errors) logger.info('Checking routers for installed ISIS IPv6 routes in OS') # Check for routes in `ip route` for rname, router in tgen.routers().iteritems(): filename = '{0}/{1}/{1}_route6_linux.json'.format(CWD, rname) expected = json.loads(open(filename, 'r').read()) actual = topotest.ip6_route(router) # Older FRR versions install routes using different proto if router.has_version('<', '3.1'): for network, netoptions in expected.iteritems(): if 'proto' in netoptions and netoptions['proto'] == '187': netoptions['proto'] = 'zebra' assertmsg = "Router '{}' OS routes mismatch".format(rname) assert topotest.json_cmp(actual, expected) is None, assertmsg
def test_isis_linux_route6_installation(): "Check whether all expected routes are present and installed in the OS" tgen = get_topogen() # Don't run this test if we have any failure. if tgen.routers_have_failure(): pytest.skip(tgen.errors) logger.info("Checking routers for installed ISIS IPv6 routes in OS") # Check for routes in `ip route` for rname, router in tgen.routers().items(): filename = "{0}/{1}/{1}_route6_linux.json".format(CWD, rname) expected = json.loads(open(filename, "r").read()) actual = topotest.ip6_route(router) # Older FRR versions install routes using different proto if router.has_version("<", "3.1"): for network, netoptions in expected.items(): if "proto" in netoptions and netoptions["proto"] == "187": netoptions["proto"] = "zebra" assertmsg = "Router '{}' OS routes mismatch".format(rname) assert topotest.json_cmp(actual, expected) is None, assertmsg