From 7ee3fb2e032244fd2366c00d58d5426672a50cb2 Mon Sep 17 00:00:00 2001 From: Donatas Abraitis Date: Tue, 21 Nov 2023 10:38:12 +0200 Subject: [PATCH] tests: Set community for conditionally advertised routes Just to make sure we don't crash bgpd with double-free if an existing route already exists. Signed-off-by: Donatas Abraitis (cherry picked from commit 8eba97d3954d466b171e283b289710ad7544df65) --- .../r2/frr.conf | 1 + ..._conditional_advertisement_static_route.py | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/tests/topotests/bgp_conditional_advertisement_static_route/r2/frr.conf b/tests/topotests/bgp_conditional_advertisement_static_route/r2/frr.conf index 9dc4099341..3ced9340ca 100644 --- a/tests/topotests/bgp_conditional_advertisement_static_route/r2/frr.conf +++ b/tests/topotests/bgp_conditional_advertisement_static_route/r2/frr.conf @@ -36,4 +36,5 @@ route-map exist-map permit 10 ! route-map advertise-map permit 10 match ip address prefix-list advertise + set community 65000:1 ! diff --git a/tests/topotests/bgp_conditional_advertisement_static_route/test_bgp_conditional_advertisement_static_route.py b/tests/topotests/bgp_conditional_advertisement_static_route/test_bgp_conditional_advertisement_static_route.py index 9d61bbd643..4180bfcdf6 100644 --- a/tests/topotests/bgp_conditional_advertisement_static_route/test_bgp_conditional_advertisement_static_route.py +++ b/tests/topotests/bgp_conditional_advertisement_static_route/test_bgp_conditional_advertisement_static_route.py @@ -54,6 +54,7 @@ def test_bgp_conditional_advertisements_static_route(): if tgen.routers_have_failure(): pytest.skip(tgen.errors) + r1 = tgen.gears["r1"] r2 = tgen.gears["r2"] def _bgp_converge(): @@ -112,6 +113,25 @@ def test_bgp_conditional_advertisements_static_route(): _, result = topotest.run_and_expect(test_func, None, count=30, wait=1) assert result is None, "10.10.10.2/32 is not advertised after prefix-list update" + def _bgp_check_received_routes(): + output = json.loads(r1.vtysh_cmd("show bgp ipv4 unicast 10.10.10.1/32 json")) + expected = { + "paths": [ + { + "community": { + "string": "65000:1", + } + } + ] + } + return topotest.json_cmp(output, expected) + + test_func = functools.partial( + _bgp_check_received_routes, + ) + _, result = topotest.run_and_expect(test_func, None, count=30, wait=1) + assert result is None, "10.10.10.1/32 does not have 65000:1 community attached" + if __name__ == "__main__": args = ["-s"] + sys.argv[1:] -- 2.39.5