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:
Francois Dumontet 2024-04-24 14:34:48 +02:00 committed by Mergify
parent c05a11df9e
commit 1488b47e84
3 changed files with 67 additions and 13 deletions

View File

@ -8,10 +8,19 @@ router bgp 65001
exit-address-family
!
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
match ip address prefix-list p1
set as-path exclude 65003
route-map r2 permit 20
match ip address prefix-list p3
set as-path exclude all
!

View File

@ -1,5 +1,6 @@
!
int lo
ip address 172.16.255.30/32
ip address 172.16.255.31/32
ip address 172.16.255.32/32
!

View File

@ -64,29 +64,33 @@ def teardown_module(mod):
expected_1 = {
"routes": {
"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": "65003"}],
}
}
expected_2 = {
"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": ""}],
}
}
expected_3 = {
"routes": {
"172.16.255.31/32": [{"path": "65003"}],
"172.16.255.32/32": [{"path": "65003"}],
"172.16.255.30/32": [{"path": ""}],
"172.16.255.31/32": [{"path": "65002"}],
"172.16.255.32/32": [{"path": "65002 65003"}],
}
}
expected_4 = {
"routes": {
"172.16.255.31/32": [{"path": "65002 65003"}],
"172.16.255.32/32": [{"path": "65002 65003"}],
"172.16.255.30/32": [{"path": ""}],
"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"
r1 = tgen.gears[rname]
# tgen.mininet_cli()
r1.vtysh_cmd(
"""
conf
bgp as-path access-list FIRST permit ^65
route-map r2 permit 6
no set as-path exclude as-path-access-list SECOND
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)
_, 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(
"""
conf
bgp as-path access-list SECOND permit 2
route-map r2 permit 6
no set as-path exclude as-path-access-list FIRST
set as-path exclude as-path-access-list SECOND
"""
)
# 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)
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():
@ -159,15 +171,28 @@ def test_no_bgp_set_aspath_exclude_access_list():
r1.vtysh_cmd(
"""
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)
_, 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(
"""
clear bgp *
@ -177,7 +202,26 @@ clear bgp *
test_func = functools.partial(bgp_converge, tgen.gears["r1"], expected_4)
_, 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__":