summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonatas Abraitis <donatas@opensourcerouting.org>2025-03-25 17:35:41 +0200
committerDonatas Abraitis <donatas@opensourcerouting.org>2025-03-26 22:26:40 +0200
commit93ba3dd5477a1e6a60b1e35c2c16bc7a1ecd6aa8 (patch)
treeae48a33f2cbb71b3b277fb8768850cc99cd9354c
parent0b19d6451e56f0e5cce7717d8bdb69c156ad0906 (diff)
tests: Check if routes are marked as stale and retained with N-bit for GR
Related-to: b7c657d4e065f310fcf6454abae1a963c208c3b8 ("bgpd: Retain the routes if we do a clear with N-bit set for Graceful-Restart") Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
-rw-r--r--tests/topotests/bgp_gr_notification/r1/bgpd.conf1
-rw-r--r--tests/topotests/bgp_gr_notification/r2/bgpd.conf1
-rw-r--r--tests/topotests/bgp_gr_notification/test_bgp_gr_notification.py43
3 files changed, 28 insertions, 17 deletions
diff --git a/tests/topotests/bgp_gr_notification/r1/bgpd.conf b/tests/topotests/bgp_gr_notification/r1/bgpd.conf
index 0af042f6be..bca5c33bc3 100644
--- a/tests/topotests/bgp_gr_notification/r1/bgpd.conf
+++ b/tests/topotests/bgp_gr_notification/r1/bgpd.conf
@@ -3,7 +3,6 @@ router bgp 65001
bgp graceful-restart
neighbor 192.168.255.2 remote-as external
neighbor 192.168.255.2 timers 1 3
- neighbor 192.168.255.2 timers delayopen 10
address-family ipv4
redistribute connected
exit-address-family
diff --git a/tests/topotests/bgp_gr_notification/r2/bgpd.conf b/tests/topotests/bgp_gr_notification/r2/bgpd.conf
index 8325e21d2c..5e47f9dee3 100644
--- a/tests/topotests/bgp_gr_notification/r2/bgpd.conf
+++ b/tests/topotests/bgp_gr_notification/r2/bgpd.conf
@@ -4,7 +4,6 @@ router bgp 65002
bgp graceful-restart
neighbor 192.168.255.1 remote-as external
neighbor 192.168.255.1 timers 1 3
- neighbor 192.168.255.1 timers delayopen 10
address-family ipv4
redistribute connected
exit-address-family
diff --git a/tests/topotests/bgp_gr_notification/test_bgp_gr_notification.py b/tests/topotests/bgp_gr_notification/test_bgp_gr_notification.py
index 5d8338d6eb..45e8da94c3 100644
--- a/tests/topotests/bgp_gr_notification/test_bgp_gr_notification.py
+++ b/tests/topotests/bgp_gr_notification/test_bgp_gr_notification.py
@@ -165,8 +165,8 @@ def test_bgp_administrative_reset_gr():
}
return topotest.json_cmp(output, expected)
- def _bgp_check_gr_notification_stale():
- output = json.loads(r1.vtysh_cmd("show bgp ipv4 unicast 172.16.255.2/32 json"))
+ def _bgp_check_gr_notification_stale(router, prefix):
+ output = json.loads(router.vtysh_cmd(f"show bgp ipv4 unicast {prefix} json"))
expected = {
"paths": [
{
@@ -177,29 +177,42 @@ def test_bgp_administrative_reset_gr():
}
return topotest.json_cmp(output, expected)
- def _bgp_clear_r1_and_shutdown():
- r2.vtysh_cmd(
- """
- clear ip bgp 192.168.255.1
- configure terminal
- router bgp
- neighbor 192.168.255.1 shutdown
- """
- )
-
step("Initial BGP converge")
test_func = functools.partial(_bgp_converge)
_, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5)
assert result is None, "Failed to see BGP convergence on R2"
- step("Reset and shutdown R1")
- _bgp_clear_r1_and_shutdown()
+ step("Reset and delay the session establishement for R1")
+ r1.vtysh_cmd(
+ """
+ configure terminal"
+ router bgp
+ neighbor 192.168.255.2 timers delayopen 60
+ """
+ )
+ r2.vtysh_cmd(
+ """
+ configure terminal"
+ router bgp
+ neighbor 192.168.255.1 timers delayopen 60
+ """
+ )
+ r2.vtysh_cmd("clear ip bgp 192.168.255.1")
step("Check if stale routes are retained on R1")
- test_func = functools.partial(_bgp_check_gr_notification_stale)
+ test_func = functools.partial(
+ _bgp_check_gr_notification_stale, r1, "172.16.255.2/32"
+ )
_, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5)
assert result is None, "Failed to see retained stale routes on R1"
+ step("Check if stale routes are retained on R2")
+ test_func = functools.partial(
+ _bgp_check_gr_notification_stale, r2, "172.16.255.1/32"
+ )
+ _, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5)
+ assert result is None, "Failed to see retained stale routes on R2"
+
step("Check if Hard Reset notification wasn't sent from R2")
test_func = functools.partial(_bgp_check_hard_reset)
_, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5)