tests: Add more descriptive error messages and increase timeouts

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
This commit is contained in:
Donatas Abraitis 2020-11-19 16:32:46 +02:00
parent 53a85efa51
commit e9ac289675

View File

@ -31,9 +31,11 @@ to send advertisements.
Scenario 1: Scenario 1:
r1 has a filter applied for outgoing direction, r1 has a filter applied for outgoing direction,
r2 receives 192.168.255.1/32. r2 receives 192.168.255.1/32.
Scenario 2: Scenario 2:
r3 hasn't a filter appied for outgoing direction, r3 hasn't a filter appied for outgoing direction,
r4 does not receive 192.168.255.1/32. r4 does not receive 192.168.255.1/32.
Scenario 3: Scenario 3:
r5 and r6 establish iBGP session which in turn should ignore r5 and r6 establish iBGP session which in turn should ignore
RFC8212. All routes for both directions MUST work. RFC8212. All routes for both directions MUST work.
@ -63,14 +65,17 @@ class TemplateTopo(Topo):
for routern in range(1, 7): for routern in range(1, 7):
tgen.add_router("r{}".format(routern)) tgen.add_router("r{}".format(routern))
# Scenario 1.
switch = tgen.add_switch("s1") switch = tgen.add_switch("s1")
switch.add_link(tgen.gears["r1"]) switch.add_link(tgen.gears["r1"])
switch.add_link(tgen.gears["r2"]) switch.add_link(tgen.gears["r2"])
# Scenario 2.
switch = tgen.add_switch("s2") switch = tgen.add_switch("s2")
switch.add_link(tgen.gears["r3"]) switch.add_link(tgen.gears["r3"])
switch.add_link(tgen.gears["r4"]) switch.add_link(tgen.gears["r4"])
# Scenario 3.
switch = tgen.add_switch("s3") switch = tgen.add_switch("s3")
switch.add_link(tgen.gears["r5"]) switch.add_link(tgen.gears["r5"])
switch.add_link(tgen.gears["r6"]) switch.add_link(tgen.gears["r6"])
@ -120,41 +125,48 @@ def test_ebgp_requires_policy():
expected = {"routes": {"172.16.255.254/32": [{"valid": True}]}} expected = {"routes": {"172.16.255.254/32": [{"valid": True}]}}
return topotest.json_cmp(output, expected) return topotest.json_cmp(output, expected)
def _bgp_advertised_routes(router):
output = json.loads(
tgen.gears[router].vtysh_cmd(
"show ip bgp neighbor 192.168.255.2 advertised-routes json"
)
)
expected = {
"advertisedRoutes": {},
"totalPrefixCounter": 0,
"filteredPrefixCounter": 0,
}
return topotest.json_cmp(output, expected)
# Scenario 1.
logger.info("Scenario 1: r2 receives 192.168.255.1/32 from r1")
test_func = functools.partial(_bgp_converge, "r2") test_func = functools.partial(_bgp_converge, "r2")
success, result = topotest.run_and_expect(test_func, None, count=65, wait=2) success, result = topotest.run_and_expect(test_func, None, count=120, wait=0.5)
assert success is True, 'Failed bgp convergence (r2) in "{}"'.format( assert success is True, "Failed bgp convergence (r2)"
tgen.gears["r2"]
)
test_func = functools.partial(_bgp_has_routes, "r2") test_func = functools.partial(_bgp_has_routes, "r2")
success, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5) success, result = topotest.run_and_expect(test_func, None, count=120, wait=0.5)
assert success is True, 'eBGP policy is not working (r2) in "{}"'.format( assert success is True, "r2 does not receive 192.168.255.1/32"
tgen.gears["r2"]
)
# Scenario 2.
logger.info("Scenario 2: r3 must not send 192.168.255.1/32 to r4")
test_func = functools.partial(_bgp_converge, "r4") test_func = functools.partial(_bgp_converge, "r4")
success, result = topotest.run_and_expect(test_func, None, count=65, wait=2) success, result = topotest.run_and_expect(test_func, None, count=120, wait=0.5)
assert success is True, 'Failed bgp convergence (r4) in "{}"'.format( assert success is True, "Failed bgp convergence (r4)"
tgen.gears["r4"]
)
test_func = functools.partial(_bgp_has_routes, "r4") test_func = functools.partial(_bgp_advertised_routes, "r3")
success, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5) success, result = topotest.run_and_expect(test_func, None, count=120, wait=0.5)
assert success is False, 'eBGP policy is not working (r4) in "{}"'.format( assert success is True, "r3 announced 192.168.255.1/32 to r4"
tgen.gears["r4"]
)
# Scenario 3.
logger.info("Scenario 3: r6 receives 192.168.255.1/32 from r5 (iBGP)")
test_func = functools.partial(_bgp_converge, "r6") test_func = functools.partial(_bgp_converge, "r6")
success, result = topotest.run_and_expect(test_func, None, count=65, wait=2) success, result = topotest.run_and_expect(test_func, None, count=120, wait=0.5)
assert success is True, 'Failed bgp convergence (r6) in "{}"'.format( assert success is True, "Failed bgp convergence (r6)"
tgen.gears["r6"]
)
test_func = functools.partial(_bgp_has_routes, "r6") test_func = functools.partial(_bgp_has_routes, "r6")
success, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5) success, result = topotest.run_and_expect(test_func, None, count=120, wait=0.5)
assert success is True, 'eBGP policy is not working (r6) in "{}"'.format( assert success is True, "r6 does not receive 192.168.255.1/32"
tgen.gears["r6"]
)
if __name__ == "__main__": if __name__ == "__main__":