mirror of
https://github.com/jlu5/SupyPlugins.git
synced 2025-04-26 04:51:08 -05:00
103 lines
3.7 KiB
Python
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()
|