From d4368260c3736aa888e590e71b4232fedac7f129 Mon Sep 17 00:00:00 2001 From: Rafael Zalamena Date: Wed, 20 Dec 2017 10:16:39 -0200 Subject: [PATCH] isis-topo1: check IPv6 linux route install Signed-off-by: Rafael Zalamena --- .../isis-topo1/r1/r1_route6_linux.json | 14 ++++++++ .../isis-topo1/r2/r2_route6_linux.json | 14 ++++++++ .../isis-topo1/r3/r3_route6_linux.json | 32 +++++++++++++++++++ .../isis-topo1/r4/r4_route6_linux.json | 32 +++++++++++++++++++ .../isis-topo1/r5/r5_route6_linux.json | 26 +++++++++++++++ tests/topotests/isis-topo1/test_isis_topo1.py | 25 +++++++++++++++ 6 files changed, 143 insertions(+) create mode 100644 tests/topotests/isis-topo1/r1/r1_route6_linux.json create mode 100644 tests/topotests/isis-topo1/r2/r2_route6_linux.json create mode 100644 tests/topotests/isis-topo1/r3/r3_route6_linux.json create mode 100644 tests/topotests/isis-topo1/r4/r4_route6_linux.json create mode 100644 tests/topotests/isis-topo1/r5/r5_route6_linux.json diff --git a/tests/topotests/isis-topo1/r1/r1_route6_linux.json b/tests/topotests/isis-topo1/r1/r1_route6_linux.json new file mode 100644 index 0000000000..139747c1cd --- /dev/null +++ b/tests/topotests/isis-topo1/r1/r1_route6_linux.json @@ -0,0 +1,14 @@ +{ + "2001:db8:2:1::/64": { + "dev": "r1-eth0", + "metric": "20", + "pref": "medium", + "proto": "187" + }, + "2001:db8:f::3": { + "dev": "r1-eth0", + "metric": "20", + "pref": "medium", + "proto": "187" + } +} diff --git a/tests/topotests/isis-topo1/r2/r2_route6_linux.json b/tests/topotests/isis-topo1/r2/r2_route6_linux.json new file mode 100644 index 0000000000..50688615a7 --- /dev/null +++ b/tests/topotests/isis-topo1/r2/r2_route6_linux.json @@ -0,0 +1,14 @@ +{ + "2001:db8:2:2::/64": { + "dev": "r2-eth0", + "metric": "20", + "pref": "medium", + "proto": "187" + }, + "2001:db8:f::4": { + "dev": "r2-eth0", + "metric": "20", + "pref": "medium", + "proto": "187" + } +} diff --git a/tests/topotests/isis-topo1/r3/r3_route6_linux.json b/tests/topotests/isis-topo1/r3/r3_route6_linux.json new file mode 100644 index 0000000000..78993ff420 --- /dev/null +++ b/tests/topotests/isis-topo1/r3/r3_route6_linux.json @@ -0,0 +1,32 @@ +{ + "2001:db8:1:2::/64": { + "dev": "r3-eth1", + "metric": "20", + "pref": "medium", + "proto": "187" + }, + "2001:db8:2:2::/64": { + "dev": "r3-eth1", + "metric": "20", + "pref": "medium", + "proto": "187" + }, + "2001:db8:f::1": { + "dev": "r3-eth0", + "metric": "20", + "pref": "medium", + "proto": "187" + }, + "2001:db8:f::4": { + "dev": "r3-eth1", + "metric": "20", + "pref": "medium", + "proto": "187" + }, + "2001:db8:f::5": { + "dev": "r3-eth1", + "metric": "20", + "pref": "medium", + "proto": "187" + } +} diff --git a/tests/topotests/isis-topo1/r4/r4_route6_linux.json b/tests/topotests/isis-topo1/r4/r4_route6_linux.json new file mode 100644 index 0000000000..32ea366396 --- /dev/null +++ b/tests/topotests/isis-topo1/r4/r4_route6_linux.json @@ -0,0 +1,32 @@ +{ + "2001:db8:1:1::/64": { + "dev": "r4-eth1", + "metric": "20", + "pref": "medium", + "proto": "187" + }, + "2001:db8:2:1::/64": { + "dev": "r4-eth1", + "metric": "20", + "pref": "medium", + "proto": "187" + }, + "2001:db8:f::2": { + "dev": "r4-eth0", + "metric": "20", + "pref": "medium", + "proto": "187" + }, + "2001:db8:f::3": { + "dev": "r4-eth1", + "metric": "20", + "pref": "medium", + "proto": "187" + }, + "2001:db8:f::5": { + "dev": "r4-eth1", + "metric": "20", + "pref": "medium", + "proto": "187" + } +} diff --git a/tests/topotests/isis-topo1/r5/r5_route6_linux.json b/tests/topotests/isis-topo1/r5/r5_route6_linux.json new file mode 100644 index 0000000000..ad8632e2d4 --- /dev/null +++ b/tests/topotests/isis-topo1/r5/r5_route6_linux.json @@ -0,0 +1,26 @@ +{ + "2001:db8:2:1::/64": { + "dev": "r5-eth0", + "metric": "20", + "pref": "medium", + "proto": "187" + }, + "2001:db8:2:2::/64": { + "dev": "r5-eth1", + "metric": "20", + "pref": "medium", + "proto": "187" + }, + "2001:db8:f::3": { + "dev": "r5-eth0", + "metric": "20", + "pref": "medium", + "proto": "187" + }, + "2001:db8:f::4": { + "dev": "r5-eth1", + "metric": "20", + "pref": "medium", + "proto": "187" + } +} diff --git a/tests/topotests/isis-topo1/test_isis_topo1.py b/tests/topotests/isis-topo1/test_isis_topo1.py index 544671da57..d24d0d768c 100644 --- a/tests/topotests/isis-topo1/test_isis_topo1.py +++ b/tests/topotests/isis-topo1/test_isis_topo1.py @@ -230,6 +230,31 @@ def test_isis_route6_installation(): 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().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_memory_leak(): "Run the memory leak test and report results." tgen = get_topogen() -- 2.39.5