tests: Check if we received a DECENT amount of prefixes/paths

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
This commit is contained in:
Donatas Abraitis 2024-12-19 18:24:06 +02:00
parent aade9a7992
commit ddab988cce

View File

@ -73,7 +73,9 @@ def test_bgp_addpath_best_selected():
if tgen.routers_have_failure(): if tgen.routers_have_failure():
pytest.skip(tgen.errors) pytest.skip(tgen.errors)
r1 = tgen.gears["r1"]
r2 = tgen.gears["r2"] r2 = tgen.gears["r2"]
r7 = tgen.gears["r7"]
def _bgp_converge(): def _bgp_converge():
output = json.loads(r2.vtysh_cmd("show bgp ipv4 unicast 172.16.16.254/32 json")) output = json.loads(r2.vtysh_cmd("show bgp ipv4 unicast 172.16.16.254/32 json"))
@ -111,78 +113,67 @@ def test_bgp_addpath_best_selected():
_, result = topotest.run_and_expect(test_func, None, count=30, wait=1) _, result = topotest.run_and_expect(test_func, None, count=30, wait=1)
assert result is None, "Can't converge initially" assert result is None, "Can't converge initially"
def check_bgp_advertised_routes_to_r1(): def r1_check_bgp_received_routes_from_r2():
output = json.loads( output = json.loads(
r2.vtysh_cmd( r1.vtysh_cmd("show bgp ipv4 neighbors 192.168.1.2 routes json")
"show bgp ipv4 neighbors 192.168.1.1 advertised-routes detail json"
)
) )
expected = { expected = {
"advertisedRoutes": { "routes": {
"172.16.16.254/32": { "172.16.16.254/32": [
"paths": [ {
{ "valid": True,
"aspath": { "path": "65002 65005",
"string": "65005", },
} {
}, "valid": True,
{ "path": "65002 65006",
"aspath": { },
"string": "65006", ]
}
},
]
}
}, },
"totalPrefixCounter": 2, "totalRoutes": 1,
"totalPaths": 2,
} }
return topotest.json_cmp(output, expected) return topotest.json_cmp(output, expected)
test_func = functools.partial(check_bgp_advertised_routes_to_r1) test_func = functools.partial(r1_check_bgp_received_routes_from_r2)
_, result = topotest.run_and_expect(test_func, None, count=30, wait=1) _, result = topotest.run_and_expect(test_func, None, count=30, wait=1)
assert ( assert (
result is None result is None
), "Received more/less Add-Path best paths, but should be only 1+1 (real best path)" ), "Received more/less Add-Path best paths, but should be ONLY 1+1 (real best path)"
def check_bgp_advertised_routes_to_r7(): def r7_check_bgp_received_routes_from_r2():
output = json.loads( output = json.loads(
r2.vtysh_cmd( r7.vtysh_cmd("show bgp ipv4 neighbors 192.168.7.2 routes json")
"show bgp ipv4 neighbors 192.168.7.7 advertised-routes detail json"
)
) )
expected = { expected = {
"advertisedRoutes": { "routes": {
"172.16.16.254/32": { "172.16.16.254/32": [
"paths": [ {
{ "valid": True,
"aspath": { "path": "65002 65004",
"string": "65004", },
} {
}, "valid": True,
{ "path": "65002 65005",
"aspath": { },
"string": "65005", {
} "valid": True,
}, "path": "65002 65006",
{ },
"aspath": { ]
"string": "65006",
}
},
]
}
}, },
"totalPrefixCounter": 3, "totalRoutes": 1,
"totalPaths": 3,
} }
return topotest.json_cmp(output, expected) return topotest.json_cmp(output, expected)
test_func = functools.partial(check_bgp_advertised_routes_to_r7) test_func = functools.partial(r7_check_bgp_received_routes_from_r2)
_, result = topotest.run_and_expect(test_func, None, count=30, wait=1) _, result = topotest.run_and_expect(test_func, None, count=30, wait=1)
assert ( assert (
result is None result is None
), "Received more/less Add-Path best paths, but should be only 2+1 (real best path)" ), "Received more/less Add-Path best paths, but should be ONLY 2+1 (real best path)"
if __name__ == "__main__": if __name__ == "__main__":