JLU5-SupyPlugins/BirdLGGo/parsebird_test.py
2021-10-18 00:30:19 -07:00

103 lines
3.7 KiB
Python

import unittest
from parsebird import parse_bird, BirdRouteResult, BirdParseError
class ParseBirdRouteTestCase(unittest.TestCase):
maxDiff = None
def testShowRouteBGP(self):
s = """Table master4:
172.20.0.53/32 unicast [jrb0001 2021-10-06 from fe80::119] * (100) [AS4242420119i]
via 172.20.1.10 on dn42sea-jrb0001
Type: BGP univ
BGP.origin: IGP
BGP.as_path: 4242420119
BGP.next_hop: 172.20.1.10
BGP.local_pref: 300
BGP.community: (64511,1) (64511,24) (64511,34)
BGP.large_community: (4242420119, 2000, 10) (4242421080, 101, 44) (4242421080, 103, 114)
"""
self.assertEqual(
BirdRouteResult(
prefix="172.20.0.53/32",
protocol_name="jrb0001",
route_preference="100",
route_type="unicast",
route_origin="BGP univ",
via="via 172.20.1.10 on dn42sea-jrb0001",
bgp_as_path=["4242420119"],
bgp_community="(64511,1) (64511,24) (64511,34)",
bgp_large_community="(4242420119, 2000, 10) (4242421080, 101, 44) (4242421080, 103, 114)"
), parse_bird(s)
)
def testShowRouteBGP6(self):
s = """Table master6:
fd42:1145:1419:5::/64 unicast [ibgp_us_lax01 03:41:43.904 from fd86:bad:11b7:22::1] * (100/21) [AS4242422464i]
via fe80::122 on igp-us-lax01
Type: BGP univ
BGP.origin: IGP
BGP.as_path: 4242421288 4242421306 4242421331 4242422464
BGP.next_hop: fd86:bad:11b7:22::1
BGP.local_pref: 150
BGP.community: (64511,1) (64511,24) (64511,33) (64511,44)
BGP.large_community: (207268, 1, 44) (4242421080, 101, 44) (4242421080, 103, 122) (4242422464, 1, 500)"""
self.assertEqual(
BirdRouteResult(
prefix="fd42:1145:1419:5::/64",
protocol_name="ibgp_us_lax01",
route_preference="100/21",
route_type="unicast",
route_origin="BGP univ",
via="via fe80::122 on igp-us-lax01",
bgp_as_path=['4242421288', '4242421306', '4242421331', '4242422464'],
bgp_community="(64511,1) (64511,24) (64511,33) (64511,44)",
bgp_large_community="(207268, 1, 44) (4242421080, 101, 44) (4242421080, 103, 122) (4242422464, 1, 500)"
), parse_bird(s)
)
def testShowStaticUnreachable(self):
s = """Table master4:
172.22.108.0/26 unreachable [static1 2021-09-23] * (200)
Type: static univ
"""
self.assertEqual(
BirdRouteResult(
prefix="172.22.108.0/26",
protocol_name="static1",
route_preference="200",
route_type="unreachable",
route_origin="static univ"
), parse_bird(s)
)
def testShowRouteBabel6(self):
s = """Table master6:
fd86:bad:11b7:53::1/128 unicast [int_babel 20:04:48.769] * (130/18) [00:00:00:00:ac:14:e5:7a]
via fe80::122 on igp-us-lax01
Type: Babel univ
Babel.metric: 18
Babel.router_id: 00:00:00:00:ac:14:e5:7a
"""
self.assertEqual(
BirdRouteResult(
prefix="fd86:bad:11b7:53::1/128",
protocol_name="int_babel",
route_preference="130/18",
route_type="unicast",
route_origin="Babel univ",
via="via fe80::122 on igp-us-lax01"
), parse_bird(s)
)
def testNetworkNotFound(self):
s = "Network not found"
self.assertRaises(BirdParseError, lambda: parse_bird(s))
def testSyntaxError(self):
s = "syntax error, unexpected CF_SYM_UNDEFINED, expecting IP4 or IP6 or VPN_RD or CF_SYM_KNOWN"
self.assertRaises(BirdParseError, lambda: parse_bird(s))
if __name__ == '__main__':
unittest.main()