-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtest_bgp_comm-list_delete.py
More file actions
130 lines (111 loc) Β· 3.21 KB
/
test_bgp_comm-list_delete.py
File metadata and controls
130 lines (111 loc) Β· 3.21 KB
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
#!/usr/bin/env python3
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2022 Noah Krishnamoorty
"""
Test if works the following commands:
route-map test permit 10
set comm-list <arg> delete
"""
__topotests_file__ = "bgp_comm_list_delete/test_bgp_comm-list_delete.py"
__topotests_gitrev__ = "4953ca977f3a5de8109ee6353ad07f816ca1774c"
# pylint: disable=wildcard-import,unused-import,unused-wildcard-import
from topotato.v1 import *
@topology_fixture()
def topology(topo):
"""
[ r1 ]
|
{ s1 }
|
[ r2 ]
"""
topo.router("r1").lo_ip4.append("172.16.255.254/32")
class Configs(FRRConfigs):
routers = ["r1", "r2"]
zebra = """
#% extends "boilerplate.conf"
#% block main
#% if router.name == 'r1'
interface lo
ip address {{ router.lo_ip4[0] }}
!
#% endif
#% for iface in router.ifaces
interface {{ iface.ifname }}
ip address {{ iface.ip4[0] }}
!
#% endfor
ip forwarding
!
#% endblock
"""
bgpd = """
#% extends "boilerplate.conf"
#% block main
#% if router.name == 'r1'
router bgp 65000
no bgp ebgp-requires-policy
neighbor {{ routers.r2.ifaces[0].ip4[0].ip }} remote-as 65001
neighbor {{ routers.r2.ifaces[0].ip4[0].ip }} timers 3 10
address-family ipv4 unicast
redistribute connected route-map r2-out
!
route-map r2-out permit 10
set community 111:111 222:222 333:333 444:444
!
#% elif router.name == 'r2'
router bgp 65001
no bgp ebgp-requires-policy
neighbor {{ routers.r1.ifaces[0].ip4[0].ip }} remote-as 65000
neighbor {{ routers.r1.ifaces[0].ip4[0].ip }} timers 3 10
address-family ipv4
neighbor {{ routers.r1.ifaces[0].ip4[0].ip }} route-map r1-in in
!
bgp community-list standard r1 permit 333:333
!
route-map r1-in permit 10
set comm-list r1 delete
!
#% endif
#% endblock
"""
class BGPCommListDeleteTest(TestBase, AutoFixture, topo=topology, configs=Configs):
@topotatofunc
def _bgp_converge_bgpstate(self, topo, r1, r2):
expected = {str(r1.ifaces[0].ip4[0].ip): {"bgpState": "Established"}}
yield from AssertVtysh.make(
r2,
"bgpd",
f"show ip bgp neighbor { r1.ifaces[0].ip4[0].ip } json",
maxwait=5.0,
compare=expected,
)
@topotatofunc
def _bgp_converge_prefixCounter(self, topo, r1, r2):
expected = {
str(r1.ifaces[0].ip4[0].ip): {
"addressFamilyInfo": {"ipv4Unicast": {"acceptedPrefixCounter": 2}}
}
}
yield from AssertVtysh.make(
r2,
"bgpd",
f"show ip bgp neighbor { r1.ifaces[0].ip4[0].ip } json",
maxwait=5.0,
compare=expected,
)
@topotatofunc
def _bgp_comm_list_delete(self, topo, r1, r2):
expected = {
"paths": [{"community": {"list": [
JSONCompareRejectExtraItems(),
"111:111", "222:222", "444:444"
]}}]
}
yield from AssertVtysh.make(
r2,
"bgpd",
f"show ip bgp { r1.lo_ip4[0] } json",
maxwait=5.0,
compare=expected,
)