-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtest_bgp_rmap_extcommunity_none.py
136 lines (121 loc) Β· 3.24 KB
/
test_bgp_rmap_extcommunity_none.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#!/usr/bin/env python3
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2022 Nathan Mangar
"""
Test if route-map extcommunity none works:
route-map <name> permit 10
set extcommunity none
"""
__topotests_file__ = "bgp_rmap_extcommunity_none/test_bgp_rmap_extcommunity_none.py"
__topotests_gitrev__ = "4953ca977f3a5de8109ee6353ad07f816ca1774c"
# pylint: disable=wildcard-import, unused-wildcard-import, trailing-whitespace
from topotato import *
@topology_fixture()
def topology(topo):
"""
[ r1 ]
|
{ s1 }
|
[ r2 ]
"""
topo.router("r2").lo_ip4.append("172.16.16.1/32")
topo.router("r1").iface_to("s1").ip4.append("192.168.1.1/24")
topo.router("r2").iface_to("s1").ip4.append("192.168.1.2/24")
class Configs(FRRConfigs):
routers = ["r1", "r2"]
zebra = """
#% extends "boilerplate.conf"
#% block main
#% if router.name == 'r2'
interface lo
ip address {{ routers.r2.lo_ip4[0] }}
!
#% endif
#% for iface in router.ifaces
interface {{ iface.ifname }}
ip address {{ iface.ip4[0] }}
!
#% endfor
ip forwarding
!
#% endblock
"""
bgpd = """
#% block main
#% if router.name == 'r2'
router bgp 65002
no bgp ebgp-requires-policy
neighbor 192.168.1.1 remote-as external
address-family ipv4 unicast
redistribute connected
neighbor 192.168.1.1 route-map r1 out
!
route-map r1 permit 10
set community 123:123
set extcommunity bandwidth 200
!
#% elif router.name == 'r1'
router bgp 65001
no bgp ebgp-requires-policy
neighbor 192.168.1.2 remote-as external
!
route-map r2 permit 10
set extcommunity none
!
#% endif
#% endblock
"""
class TestBGPExtCommunity(TestBase, AutoFixture, topo=topology, configs=Configs):
@topotatofunc
def bgp_converge(self, _, r1):
expected = {
"prefix": "172.16.16.1/32",
"paths": [
{
"community": {
"string": "123:123",
},
"extendedCommunity": {"string": "LB:65002:25000000 (200.000 Mbps)"},
}
],
}
yield from AssertVtysh.make(
r1,
"bgpd",
"show bgp ipv4 unicast 172.16.16.1/32 json",
maxwait=5.0,
compare=expected,
)
@topotatofunc
def bgp_extcommunity_strip(self, _, r1):
expected = {
"prefix": "172.16.16.1/32",
"paths": [
{
"community": {
"string": "123:123",
},
"extendedCommunity": None,
}
],
}
yield from AssertVtysh.make(
r1,
"bgpd",
"""
enable
configure terminal
router bgp 65001
address-family ipv4
neighbor 192.168.1.2 route-map r2 in
""",
compare="",
)
yield from AssertVtysh.make(
r1,
"bgpd",
"show bgp ipv4 unicast 172.16.16.1/32 json",
maxwait=5.0,
compare=expected,
)