Check the 'show ip route json' output for installed ISIS routes.
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
--- /dev/null
+{
+ "10.0.10.0/24": [
+ {
+ "distance": 115,
+ "metric": 10,
+ "nexthops": [
+ {
+ "active": true,
+ "afi": "ipv4",
+ "fib": true,
+ "interfaceIndex": 2,
+ "interfaceName": "r1-eth0",
+ "ip": "10.0.20.1"
+ }
+ ],
+ "prefix": "10.0.10.0/24",
+ "protocol": "isis",
+ "selected": true
+ }
+ ],
+ "10.0.20.0/24": [
+ {
+ "distance": 115,
+ "metric": 10,
+ "nexthops": [
+ {
+ "afi": "ipv4",
+ "interfaceIndex": 2,
+ "interfaceName": "r1-eth0",
+ "ip": "10.0.20.1"
+ }
+ ],
+ "prefix": "10.0.20.0/24",
+ "protocol": "isis"
+ },
+ {
+ "nexthops": [
+ {
+ "active": true,
+ "directlyConnected": true,
+ "fib": true,
+ "interfaceIndex": 2,
+ "interfaceName": "r1-eth0"
+ }
+ ],
+ "prefix": "10.0.20.0/24",
+ "protocol": "connected",
+ "selected": true
+ }
+ ],
+ "10.254.0.1/32": [
+ {
+ "nexthops": [
+ {
+ "active": true,
+ "directlyConnected": true,
+ "fib": true,
+ "interfaceIndex": 1,
+ "interfaceName": "lo"
+ }
+ ],
+ "prefix": "10.254.0.1/32",
+ "protocol": "connected",
+ "selected": true
+ }
+ ],
+ "10.254.0.3/32": [
+ {
+ "distance": 115,
+ "metric": 10,
+ "nexthops": [
+ {
+ "active": true,
+ "afi": "ipv4",
+ "fib": true,
+ "interfaceIndex": 2,
+ "interfaceName": "r1-eth0",
+ "ip": "10.0.20.1"
+ }
+ ],
+ "prefix": "10.254.0.3/32",
+ "protocol": "isis",
+ "selected": true
+ }
+ ]
+}
--- /dev/null
+{
+ "10.0.11.0/24": [
+ {
+ "distance": 115,
+ "metric": 10,
+ "nexthops": [
+ {
+ "active": true,
+ "afi": "ipv4",
+ "fib": true,
+ "interfaceIndex": 2,
+ "interfaceName": "r2-eth0",
+ "ip": "10.0.21.1"
+ }
+ ],
+ "prefix": "10.0.11.0/24",
+ "protocol": "isis",
+ "selected": true
+ }
+ ],
+ "10.0.21.0/24": [
+ {
+ "distance": 115,
+ "metric": 10,
+ "nexthops": [
+ {
+ "afi": "ipv4",
+ "interfaceIndex": 2,
+ "interfaceName": "r2-eth0",
+ "ip": "10.0.21.1"
+ }
+ ],
+ "prefix": "10.0.21.0/24",
+ "protocol": "isis"
+ },
+ {
+ "nexthops": [
+ {
+ "active": true,
+ "directlyConnected": true,
+ "fib": true,
+ "interfaceIndex": 2,
+ "interfaceName": "r2-eth0"
+ }
+ ],
+ "prefix": "10.0.21.0/24",
+ "protocol": "connected",
+ "selected": true
+ }
+ ],
+ "10.254.0.2/32": [
+ {
+ "nexthops": [
+ {
+ "active": true,
+ "directlyConnected": true,
+ "fib": true,
+ "interfaceIndex": 1,
+ "interfaceName": "lo"
+ }
+ ],
+ "prefix": "10.254.0.2/32",
+ "protocol": "connected",
+ "selected": true
+ }
+ ],
+ "10.254.0.4/32": [
+ {
+ "distance": 115,
+ "metric": 10,
+ "nexthops": [
+ {
+ "active": true,
+ "afi": "ipv4",
+ "fib": true,
+ "interfaceIndex": 2,
+ "interfaceName": "r2-eth0",
+ "ip": "10.0.21.1"
+ }
+ ],
+ "prefix": "10.254.0.4/32",
+ "protocol": "isis",
+ "selected": true
+ }
+ ]
+}
--- /dev/null
+{
+ "10.0.10.0/24": [
+ {
+ "distance": 115,
+ "metric": 10,
+ "nexthops": [
+ {
+ "afi": "ipv4",
+ "interfaceIndex": 3,
+ "interfaceName": "r3-eth1",
+ "ip": "10.0.10.1"
+ }
+ ],
+ "prefix": "10.0.10.0/24",
+ "protocol": "isis"
+ },
+ {
+ "nexthops": [
+ {
+ "active": true,
+ "directlyConnected": true,
+ "fib": true,
+ "interfaceIndex": 3,
+ "interfaceName": "r3-eth1"
+ }
+ ],
+ "prefix": "10.0.10.0/24",
+ "protocol": "connected",
+ "selected": true
+ }
+ ],
+ "10.0.11.0/24": [
+ {
+ "distance": 115,
+ "metric": 10,
+ "nexthops": [
+ {
+ "active": true,
+ "afi": "ipv4",
+ "fib": true,
+ "interfaceIndex": 3,
+ "interfaceName": "r3-eth1",
+ "ip": "10.0.10.1"
+ }
+ ],
+ "prefix": "10.0.11.0/24",
+ "protocol": "isis",
+ "selected": true
+ }
+ ],
+ "10.0.20.0/24": [
+ {
+ "distance": 115,
+ "metric": 10,
+ "nexthops": [
+ {
+ "afi": "ipv4",
+ "interfaceIndex": 2,
+ "interfaceName": "r3-eth0",
+ "ip": "10.0.20.2"
+ }
+ ],
+ "prefix": "10.0.20.0/24",
+ "protocol": "isis"
+ },
+ {
+ "nexthops": [
+ {
+ "active": true,
+ "directlyConnected": true,
+ "fib": true,
+ "interfaceIndex": 2,
+ "interfaceName": "r3-eth0"
+ }
+ ],
+ "prefix": "10.0.20.0/24",
+ "protocol": "connected",
+ "selected": true
+ }
+ ],
+ "10.0.21.0/24": [
+ {
+ "distance": 115,
+ "metric": 20,
+ "nexthops": [
+ {
+ "active": true,
+ "afi": "ipv4",
+ "fib": true,
+ "interfaceIndex": 3,
+ "interfaceName": "r3-eth1",
+ "ip": "10.0.10.1"
+ }
+ ],
+ "prefix": "10.0.21.0/24",
+ "protocol": "isis",
+ "selected": true
+ }
+ ],
+ "10.254.0.1/32": [
+ {
+ "distance": 115,
+ "metric": 10,
+ "nexthops": [
+ {
+ "active": true,
+ "afi": "ipv4",
+ "fib": true,
+ "interfaceIndex": 2,
+ "interfaceName": "r3-eth0",
+ "ip": "10.0.20.2"
+ }
+ ],
+ "prefix": "10.254.0.1/32",
+ "protocol": "isis",
+ "selected": true
+ }
+ ],
+ "10.254.0.3/32": [
+ {
+ "nexthops": [
+ {
+ "active": true,
+ "directlyConnected": true,
+ "fib": true,
+ "interfaceIndex": 1,
+ "interfaceName": "lo"
+ }
+ ],
+ "prefix": "10.254.0.3/32",
+ "protocol": "connected",
+ "selected": true
+ }
+ ],
+ "10.254.0.4/32": [
+ {
+ "distance": 115,
+ "metric": 20,
+ "nexthops": [
+ {
+ "active": true,
+ "afi": "ipv4",
+ "fib": true,
+ "interfaceIndex": 3,
+ "interfaceName": "r3-eth1",
+ "ip": "10.0.10.1"
+ }
+ ],
+ "prefix": "10.254.0.4/32",
+ "protocol": "isis",
+ "selected": true
+ }
+ ],
+ "10.254.0.5/32": [
+ {
+ "distance": 115,
+ "metric": 10,
+ "nexthops": [
+ {
+ "active": true,
+ "afi": "ipv4",
+ "fib": true,
+ "interfaceIndex": 3,
+ "interfaceName": "r3-eth1",
+ "ip": "10.0.10.1"
+ }
+ ],
+ "prefix": "10.254.0.5/32",
+ "protocol": "isis",
+ "selected": true
+ }
+ ]
+}
--- /dev/null
+{
+ "10.0.11.0/24": [
+ {
+ "nexthops": [
+ {
+ "active": true,
+ "directlyConnected": true,
+ "fib": true,
+ "interfaceIndex": 3,
+ "interfaceName": "r4-eth1"
+ }
+ ],
+ "prefix": "10.0.11.0/24",
+ "protocol": "connected",
+ "selected": true
+ }
+ ],
+ "10.0.21.0/24": [
+ {
+ "distance": 115,
+ "metric": 10,
+ "nexthops": [
+ {
+ "afi": "ipv4",
+ "interfaceIndex": 2,
+ "interfaceName": "r4-eth0",
+ "ip": "10.0.21.2"
+ }
+ ],
+ "prefix": "10.0.21.0/24",
+ "protocol": "isis"
+ },
+ {
+ "nexthops": [
+ {
+ "active": true,
+ "directlyConnected": true,
+ "fib": true,
+ "interfaceIndex": 2,
+ "interfaceName": "r4-eth0"
+ }
+ ],
+ "prefix": "10.0.21.0/24",
+ "protocol": "connected",
+ "selected": true
+ }
+ ],
+ "10.254.0.2/32": [
+ {
+ "distance": 115,
+ "metric": 10,
+ "nexthops": [
+ {
+ "active": true,
+ "afi": "ipv4",
+ "fib": true,
+ "interfaceIndex": 2,
+ "interfaceName": "r4-eth0",
+ "ip": "10.0.21.2"
+ }
+ ],
+ "prefix": "10.254.0.2/32",
+ "protocol": "isis",
+ "selected": true
+ }
+ ],
+ "10.254.0.4/32": [
+ {
+ "nexthops": [
+ {
+ "active": true,
+ "directlyConnected": true,
+ "fib": true,
+ "interfaceIndex": 1,
+ "interfaceName": "lo"
+ }
+ ],
+ "prefix": "10.254.0.4/32",
+ "protocol": "connected",
+ "selected": true
+ }
+ ]
+}
--- /dev/null
+{
+ "10.0.10.0/24": [
+ {
+ "distance": 115,
+ "metric": 10,
+ "nexthops": [
+ {
+ "afi": "ipv4",
+ "interfaceIndex": 2,
+ "interfaceName": "r5-eth0",
+ "ip": "10.0.10.2"
+ }
+ ],
+ "prefix": "10.0.10.0/24",
+ "protocol": "isis"
+ },
+ {
+ "nexthops": [
+ {
+ "active": true,
+ "directlyConnected": true,
+ "fib": true,
+ "interfaceIndex": 2,
+ "interfaceName": "r5-eth0"
+ }
+ ],
+ "prefix": "10.0.10.0/24",
+ "protocol": "connected",
+ "selected": true
+ }
+ ],
+ "10.0.11.0/24": [
+ {
+ "distance": 115,
+ "metric": 10,
+ "nexthops": [
+ {
+ "afi": "ipv4",
+ "interfaceIndex": 3,
+ "interfaceName": "r5-eth1",
+ "ip": "10.0.11.2"
+ }
+ ],
+ "prefix": "10.0.11.0/24",
+ "protocol": "isis"
+ },
+ {
+ "nexthops": [
+ {
+ "active": true,
+ "directlyConnected": true,
+ "fib": true,
+ "interfaceIndex": 3,
+ "interfaceName": "r5-eth1"
+ }
+ ],
+ "prefix": "10.0.11.0/24",
+ "protocol": "connected",
+ "selected": true
+ }
+ ],
+ "10.0.20.0/24": [
+ {
+ "distance": 115,
+ "metric": 10,
+ "nexthops": [
+ {
+ "active": true,
+ "afi": "ipv4",
+ "fib": true,
+ "interfaceIndex": 2,
+ "interfaceName": "r5-eth0",
+ "ip": "10.0.10.2"
+ }
+ ],
+ "prefix": "10.0.20.0/24",
+ "protocol": "isis",
+ "selected": true
+ }
+ ],
+ "10.0.21.0/24": [
+ {
+ "distance": 115,
+ "metric": 10,
+ "nexthops": [
+ {
+ "active": true,
+ "afi": "ipv4",
+ "fib": true,
+ "interfaceIndex": 3,
+ "interfaceName": "r5-eth1",
+ "ip": "10.0.11.2"
+ }
+ ],
+ "prefix": "10.0.21.0/24",
+ "protocol": "isis",
+ "selected": true
+ }
+ ],
+ "10.254.0.3/32": [
+ {
+ "distance": 115,
+ "metric": 10,
+ "nexthops": [
+ {
+ "active": true,
+ "afi": "ipv4",
+ "fib": true,
+ "interfaceIndex": 2,
+ "interfaceName": "r5-eth0",
+ "ip": "10.0.10.2"
+ }
+ ],
+ "prefix": "10.254.0.3/32",
+ "protocol": "isis",
+ "selected": true
+ }
+ ],
+ "10.254.0.4/32": [
+ {
+ "distance": 115,
+ "metric": 10,
+ "nexthops": [
+ {
+ "active": true,
+ "afi": "ipv4",
+ "fib": true,
+ "interfaceIndex": 3,
+ "interfaceName": "r5-eth1",
+ "ip": "10.0.11.2"
+ }
+ ],
+ "prefix": "10.254.0.4/32",
+ "protocol": "isis",
+ "selected": true
+ }
+ ],
+ "10.254.0.5/32": [
+ {
+ "nexthops": [
+ {
+ "active": true,
+ "directlyConnected": true,
+ "fib": true,
+ "interfaceIndex": 1,
+ "interfaceName": "lo"
+ }
+ ],
+ "prefix": "10.254.0.5/32",
+ "protocol": "connected",
+ "selected": true
+ }
+ ]
+}
assert topotest.json_cmp(actual, expected) is None, assertmsg
+def test_isis_route_installation():
+ "Check whether all expected routes are present"
+ 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 routes')
+
+ # Check for routes in 'show ip route json'
+ for rname, router in tgen.routers().iteritems():
+ filename = '{0}/{1}/{1}_route.json'.format(CWD, rname)
+ expected = json.loads(open(filename, 'r').read())
+ actual = router.vtysh_cmd('show ip route json', isjson=True)
+ assertmsg = "Router '{}' 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()