From 9fe80ef9cd58e0152f8ec68e52bc807252bc6cf6 Mon Sep 17 00:00:00 2001 From: Donatas Abraitis Date: Tue, 25 Mar 2025 17:35:41 +0200 Subject: [PATCH] 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 (cherry picked from commit a4f61b78dd382c438ff4fec2fda7450ecc890edf) --- .../bgp_gr_notification/r1/bgpd.conf | 1 - .../bgp_gr_notification/r2/bgpd.conf | 1 - .../test_bgp_gr_notification.py | 43 ++++++++++++------- 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 7e39b83d8f..874ad09264 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,16 +177,6 @@ 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 - """ - ) - def _bgp_verify_show_bgp_router_json(): output = json.loads(r1.vtysh_cmd("show bgp router json")) expected = { @@ -202,14 +192,37 @@ def test_bgp_administrative_reset_gr(): _, 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) -- 2.39.5