frr/tests/topotests/bgp_rfapi_basic_sanity/scripts/cleanup_all.py
G. Paul Ziemba 1629c05924 bgpd: rfapi: track outstanding rib and import timers, free mem at exit
While here, also make "VPN SAFI clear" test wait for clear result
    (tests/topotests/bgp_rfapi_basic_sanity{,_config2})

    Original RFAPI code relied on the frr timer system to remember
    various allocations that were supposed to be freed at future times
    rather than manage a parallel database. However, if bgpd is terminated
    before the times expire, those pending allocations are marked as
    memory leaks, even though they wouldn't be leaks under normal operation.

    This change adds some hash tables to track these outstanding
    allocations that are associated with pending timers, and uses
    those tables to free the allocations when bgpd exits.

Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2025-03-31 08:45:33 -07:00

125 lines
3 KiB
Python

from lib.lutil import luCommand
luCommand(
"r1",
'vtysh -c "debug rfapi-dev unregister vn 10.0.0.1 un 1.1.1.1 prefix 11.11.11.0/24"',
"",
"none",
"Prefix removed",
)
luCommand(
"r1",
'vtysh -c "show vnc registrations"',
"Locally: *Active: 0 ",
"wait",
"Local registration removed",
)
luCommand(
"r1",
'vtysh -c "debug rfapi-dev close vn 10.0.0.1 un 1.1.1.1"',
"status 0",
"pass",
"Closed RFAPI",
)
luCommand(
"r3",
'vtysh -c "debug rfapi-dev unregister vn 10.0.0.2 un 2.2.2.2 prefix 22.22.22.0/24"',
"",
"none",
"Prefix removed",
)
luCommand(
"r3",
'vtysh -c "show vnc registrations"',
"Locally: *Active: 0 ",
"wait",
"Local registration removed",
)
luCommand(
"r3",
'vtysh -c "debug rfapi-dev close vn 10.0.0.2 un 2.2.2.2"',
"status 0",
"pass",
"Closed RFAPI",
)
luCommand(
"r4",
'vtysh -c "debug rfapi-dev unregister vn 10.0.0.3 un 3.3.3.3 prefix 33.33.33.0/24"',
"",
"none",
"Prefix removed",
)
luCommand(
"r4",
'vtysh -c "debug rfapi-dev unregister vn 10.0.0.3 un 3.3.3.3 prefix 11.11.11.0/24"',
"",
"none",
"MP prefix removed",
)
luCommand(
"r4",
'vtysh -c "show vnc registrations"',
"Locally: *Active: 0 ",
"wait",
"Local registration removed",
)
# luCommand('r4','vtysh -c "debug rfapi-dev close vn 10.0.0.3 un 3.3.3.3"','status 0', 'pass', 'Closed RFAPI')
luCommand("r4", 'vtysh -c "clear vnc nve *"', ".", "pass", "Cleared NVEs")
luCommand(
"r1",
'vtysh -c "show vnc registrations"',
"Locally: *Active: 0 .* Remotely: *Active: 0",
"wait",
"All registrations cleared",
)
luCommand(
"r3",
'vtysh -c "show vnc registrations"',
"Locally: *Active: 0 .* Remotely: *Active: 0",
"wait",
"All registrations cleared",
)
luCommand(
"r4",
'vtysh -c "show vnc registrations"',
"Locally: *Active: 0 .* Remotely: *Active: 0",
"wait",
"All registrations cleared",
)
num = "0 exist"
luCommand("r1", 'vtysh -c "show bgp ipv4 vpn"', num, "wait", "VPN SAFI clear")
luCommand("r2", 'vtysh -c "show bgp ipv4 vpn"', num, "wait", "VPN SAFI clear")
luCommand("r3", 'vtysh -c "show bgp ipv4 vpn"', num, "wait", "VPN SAFI clear")
luCommand("r4", 'vtysh -c "show bgp ipv4 vpn"', num, "wait", "VPN SAFI clear")
luCommand(
"r1",
'vtysh -c "show vnc registrations"',
"Locally: *Active: 0 .* Remotely: *Active: 0 .*In Holddown: *Active: 0",
"wait",
"No holddowns",
20,
)
luCommand(
"r3",
'vtysh -c "show vnc registrations"',
"Locally: *Active: 0 .* Remotely: *Active: 0 .*In Holddown: *Active: 0",
"wait",
"No holddowns",
)
luCommand(
"r4",
'vtysh -c "show vnc registrations"',
"Locally: *Active: 0 .* Remotely: *Active: 0 .*In Holddown: *Active: 0",
"wait",
"No holddowns",
)
luCommand("r1", 'vtysh -c "show vnc summary"', ".", "none")
luCommand("r3", 'vtysh -c "show vnc summary"', ".", "none")
luCommand("r4", 'vtysh -c "show vnc summary"', ".", "none")