Merge pull request #18649 from donaldsharp/rpki_testing_and_buf_fix

Rpki testing and bug fix
This commit is contained in:
Jafar Al-Gharaibeh 2025-04-12 22:26:19 -05:00 committed by GitHub
commit ac56da1f50
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 119 additions and 1 deletions

View file

@ -529,7 +529,10 @@ static struct rtr_mgr_group *get_groups(struct list *cache_list)
inline bool is_synchronized(struct rpki_vrf *rpki_vrf)
{
return rpki_vrf->rtr_is_synced;
if (is_running(rpki_vrf))
return rpki_vrf->rtr_is_synced;
else
return false;
}
inline bool is_running(struct rpki_vrf *rpki_vrf)

View file

@ -477,6 +477,121 @@ def test_bgp_ecommunity_rpki():
assert result is None, "Received RPKI extended community"
def test_show_bgp_rpki_as_number():
tgen = get_topogen()
if tgen.routers_have_failure():
pytest.skip(tgen.errors)
for rname in ["r1", "r3"]:
logger.info("{}: checking if rtrd is running".format(rname))
if rtrd_process[rname].poll() is not None:
pytest.skip(tgen.errors)
step("Check RPKI prefixes for ASN 65531")
rname = "r2"
output = json.loads(tgen.gears[rname].vtysh_cmd("show rpki as-number 65531 json"))
# Expected output should show no prefixes for this ASN
expected = {"ipv4PrefixCount": 0, "ipv6PrefixCount": 0, "prefixes": []}
assert output == expected, "Found unexpected RPKI prefixes for ASN 65531"
def test_show_bgp_rpki_as_number_65530():
tgen = get_topogen()
if tgen.routers_have_failure():
pytest.skip(tgen.errors)
for rname in ["r1", "r3"]:
logger.info("{}: checking if rtrd is running".format(rname))
if rtrd_process[rname].poll() is not None:
pytest.skip(tgen.errors)
step("Check RPKI prefixes for ASN 65530")
rname = "r2"
output = json.loads(tgen.gears[rname].vtysh_cmd("show rpki as-number 65530 json"))
expected = {
"prefixes": [
{
"prefix": "198.51.100.0",
"prefixLenMin": 24,
"prefixLenMax": 24,
"asn": 65530,
},
{
"prefix": "203.0.113.0",
"prefixLenMin": 24,
"prefixLenMax": 24,
"asn": 65530,
},
],
"ipv4PrefixCount": 2,
"ipv6PrefixCount": 0,
}
assert (
output == expected
), "RPKI prefixes for ASN 65530 do not match expected output"
def test_rpki_stop_and_check_connection():
tgen = get_topogen()
if tgen.routers_have_failure():
pytest.skip(tgen.errors)
for rname in ["r1", "r3"]:
logger.info("{}: checking if rtrd is running".format(rname))
if rtrd_process[rname].poll() is not None:
pytest.skip(tgen.errors)
step("Stop RPKI on r2")
rname = "r2"
tgen.gears[rname].vtysh_cmd("rpki stop")
step("Check RPKI cache connection status")
output = json.loads(tgen.gears[rname].vtysh_cmd("show rpki cache-connection json"))
expected = {"error": "No connection to RPKI cache server."}
assert (
output == expected
), "RPKI cache connection status does not show as disconnected"
def test_rpki_start_and_check_connection():
tgen = get_topogen()
if tgen.routers_have_failure():
pytest.skip(tgen.errors)
for rname in ["r1", "r3"]:
logger.info("{}: checking if rtrd is running".format(rname))
if rtrd_process[rname].poll() is not None:
pytest.skip(tgen.errors)
step("Start RPKI on r2")
rname = "r2"
tgen.gears[rname].vtysh_cmd("rpki start")
def _check_rpki_connection():
output = json.loads(
tgen.gears[rname].vtysh_cmd("show rpki cache-connection json")
)
# We expect to see a connected group and at least one connection
return "connectedGroup" in output and "connections" in output
step("Check RPKI cache connection status")
_, result = topotest.run_and_expect(
_check_rpki_connection, True, count=60, wait=0.5
)
assert result, "RPKI cache connection did not establish after start"
if __name__ == "__main__":
args = ["-s"] + sys.argv[1:]
sys.exit(pytest.main(args))