mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-06-06 20:24:51 +00:00
tests: improve tests for aspath exclude and bgp access list
add some match in route map rules
add some set unset bgp access path list
add another prefix for better tests discrimination
update expected results
Signed-off-by: Francois Dumontet <francois.dumontet@6wind.com>
(cherry picked from commit 0df2e14997
)
This commit is contained in:
parent
c05a11df9e
commit
1488b47e84
@ -8,10 +8,19 @@ router bgp 65001
|
|||||||
exit-address-family
|
exit-address-family
|
||||||
!
|
!
|
||||||
ip prefix-list p1 seq 5 permit 172.16.255.31/32
|
ip prefix-list p1 seq 5 permit 172.16.255.31/32
|
||||||
|
ip prefix-list p2 seq 5 permit 172.16.255.32/32
|
||||||
|
ip prefix-list p3 seq 5 permit 172.16.255.30/32
|
||||||
!
|
!
|
||||||
|
bgp as-path access-list FIRST permit ^65
|
||||||
|
bgp as-path access-list SECOND permit 2$
|
||||||
|
|
||||||
|
route-map r2 permit 6
|
||||||
|
match ip address prefix-list p2
|
||||||
|
set as-path exclude as-path-access-list SECOND
|
||||||
route-map r2 permit 10
|
route-map r2 permit 10
|
||||||
match ip address prefix-list p1
|
match ip address prefix-list p1
|
||||||
set as-path exclude 65003
|
set as-path exclude 65003
|
||||||
route-map r2 permit 20
|
route-map r2 permit 20
|
||||||
|
match ip address prefix-list p3
|
||||||
set as-path exclude all
|
set as-path exclude all
|
||||||
!
|
!
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
!
|
!
|
||||||
int lo
|
int lo
|
||||||
|
ip address 172.16.255.30/32
|
||||||
ip address 172.16.255.31/32
|
ip address 172.16.255.31/32
|
||||||
ip address 172.16.255.32/32
|
ip address 172.16.255.32/32
|
||||||
!
|
!
|
||||||
|
@ -64,29 +64,33 @@ def teardown_module(mod):
|
|||||||
|
|
||||||
expected_1 = {
|
expected_1 = {
|
||||||
"routes": {
|
"routes": {
|
||||||
|
"172.16.255.30/32": [{"path": ""}],
|
||||||
"172.16.255.31/32": [{"path": "65002"}],
|
"172.16.255.31/32": [{"path": "65002"}],
|
||||||
"172.16.255.32/32": [{"path": ""}],
|
"172.16.255.32/32": [{"path": "65003"}],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
expected_2 = {
|
expected_2 = {
|
||||||
"routes": {
|
"routes": {
|
||||||
"172.16.255.31/32": [{"path": ""}],
|
"172.16.255.30/32": [{"path": ""}],
|
||||||
|
"172.16.255.31/32": [{"path": "65002"}],
|
||||||
"172.16.255.32/32": [{"path": ""}],
|
"172.16.255.32/32": [{"path": ""}],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
expected_3 = {
|
expected_3 = {
|
||||||
"routes": {
|
"routes": {
|
||||||
"172.16.255.31/32": [{"path": "65003"}],
|
"172.16.255.30/32": [{"path": ""}],
|
||||||
"172.16.255.32/32": [{"path": "65003"}],
|
"172.16.255.31/32": [{"path": "65002"}],
|
||||||
|
"172.16.255.32/32": [{"path": "65002 65003"}],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
expected_4 = {
|
expected_4 = {
|
||||||
"routes": {
|
"routes": {
|
||||||
"172.16.255.31/32": [{"path": "65002 65003"}],
|
"172.16.255.30/32": [{"path": ""}],
|
||||||
"172.16.255.32/32": [{"path": "65002 65003"}],
|
"172.16.255.31/32": [{"path": "65002"}],
|
||||||
|
"172.16.255.32/32": [{"path": "65002"}],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,34 +121,42 @@ def test_bgp_set_aspath_exclude_access_list():
|
|||||||
|
|
||||||
rname = "r1"
|
rname = "r1"
|
||||||
r1 = tgen.gears[rname]
|
r1 = tgen.gears[rname]
|
||||||
|
# tgen.mininet_cli()
|
||||||
|
|
||||||
r1.vtysh_cmd(
|
r1.vtysh_cmd(
|
||||||
"""
|
"""
|
||||||
conf
|
conf
|
||||||
bgp as-path access-list FIRST permit ^65
|
bgp as-path access-list FIRST permit ^65
|
||||||
route-map r2 permit 6
|
route-map r2 permit 6
|
||||||
|
no set as-path exclude as-path-access-list SECOND
|
||||||
set as-path exclude as-path-access-list FIRST
|
set as-path exclude as-path-access-list FIRST
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
# tgen.mininet_cli()
|
||||||
|
r1.vtysh_cmd(
|
||||||
|
"""
|
||||||
|
clear bgp *
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
test_func = functools.partial(bgp_converge, tgen.gears["r1"], expected_2)
|
test_func = functools.partial(bgp_converge, tgen.gears["r1"], expected_2)
|
||||||
_, result = topotest.run_and_expect(test_func, None, count=30, wait=0.5)
|
_, result = topotest.run_and_expect(test_func, None, count=30, wait=0.5)
|
||||||
|
|
||||||
assert result is None, "Failed overriding incoming AS-PATH with regex 1 route-map"
|
assert result is None, "Failed change of exclude rule in route map"
|
||||||
r1.vtysh_cmd(
|
r1.vtysh_cmd(
|
||||||
"""
|
"""
|
||||||
conf
|
conf
|
||||||
bgp as-path access-list SECOND permit 2
|
|
||||||
route-map r2 permit 6
|
route-map r2 permit 6
|
||||||
|
no set as-path exclude as-path-access-list FIRST
|
||||||
set as-path exclude as-path-access-list SECOND
|
set as-path exclude as-path-access-list SECOND
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
|
||||||
# tgen.mininet_cli()
|
# tgen.mininet_cli()
|
||||||
test_func = functools.partial(bgp_converge, tgen.gears["r1"], expected_3)
|
test_func = functools.partial(bgp_converge, tgen.gears["r1"], expected_1)
|
||||||
_, result = topotest.run_and_expect(test_func, None, count=30, wait=0.5)
|
_, result = topotest.run_and_expect(test_func, None, count=30, wait=0.5)
|
||||||
|
|
||||||
assert result is None, "Failed overriding incoming AS-PATH with regex 2 route-map"
|
assert result is None, "Failed reverting exclude rule in route map"
|
||||||
|
|
||||||
|
|
||||||
def test_no_bgp_set_aspath_exclude_access_list():
|
def test_no_bgp_set_aspath_exclude_access_list():
|
||||||
@ -159,15 +171,28 @@ def test_no_bgp_set_aspath_exclude_access_list():
|
|||||||
r1.vtysh_cmd(
|
r1.vtysh_cmd(
|
||||||
"""
|
"""
|
||||||
conf
|
conf
|
||||||
no bgp as-path access-list SECOND permit 2
|
no bgp as-path access-list SECOND permit 2$
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
r1.vtysh_cmd(
|
||||||
|
"""
|
||||||
|
clear bgp *
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
|
||||||
test_func = functools.partial(bgp_converge, tgen.gears["r1"], expected_3)
|
test_func = functools.partial(bgp_converge, tgen.gears["r1"], expected_3)
|
||||||
_, result = topotest.run_and_expect(test_func, None, count=30, wait=0.5)
|
_, result = topotest.run_and_expect(test_func, None, count=30, wait=0.5)
|
||||||
|
|
||||||
assert result is None, "Failed removing bgp as-path access-list"
|
assert result is None, "Failed to removing current accesslist"
|
||||||
|
|
||||||
|
# tgen.mininet_cli()
|
||||||
|
r1.vtysh_cmd(
|
||||||
|
"""
|
||||||
|
conf
|
||||||
|
bgp as-path access-list SECOND permit 3$
|
||||||
|
"""
|
||||||
|
)
|
||||||
r1.vtysh_cmd(
|
r1.vtysh_cmd(
|
||||||
"""
|
"""
|
||||||
clear bgp *
|
clear bgp *
|
||||||
@ -177,7 +202,26 @@ clear bgp *
|
|||||||
test_func = functools.partial(bgp_converge, tgen.gears["r1"], expected_4)
|
test_func = functools.partial(bgp_converge, tgen.gears["r1"], expected_4)
|
||||||
_, result = topotest.run_and_expect(test_func, None, count=30, wait=0.5)
|
_, result = topotest.run_and_expect(test_func, None, count=30, wait=0.5)
|
||||||
|
|
||||||
assert result is None, "Failed to renegotiate with peers"
|
assert result is None, "Failed to renegotiate with peers 2"
|
||||||
|
|
||||||
|
r1.vtysh_cmd(
|
||||||
|
"""
|
||||||
|
conf
|
||||||
|
route-map r2 permit 6
|
||||||
|
no set as-path exclude as-path-access-list SECOND
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
r1.vtysh_cmd(
|
||||||
|
"""
|
||||||
|
clear bgp *
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
test_func = functools.partial(bgp_converge, tgen.gears["r1"], expected_3)
|
||||||
|
_, result = topotest.run_and_expect(test_func, None, count=30, wait=0.5)
|
||||||
|
|
||||||
|
assert result is None, "Failed to renegotiate with peers 2"
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
Loading…
Reference in New Issue
Block a user