diff options
author | Mark Stapp <mjs@voltanet.io> | 2020-11-19 19:32:56 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-19 19:32:56 +0100 |
commit | 38a0ce9146075c965599cc9c12987b98d64fccd6 (patch) | |
tree | 91dba1c2a2c225623724943b481dc1dada1ae403 | |
parent | Merge pull request #7424 from donaldsharp/config_commands (diff) | |
parent | tests: Add more descriptive error messages and increase timeouts (diff) | |
download | frr-38a0ce9146075c965599cc9c12987b98d64fccd6.tar.xz frr-38a0ce9146075c965599cc9c12987b98d64fccd6.zip |
Merge pull request #7566 from ton31337/fix/topotests_bgp_ebgp_requires_policy
tests: Add more descriptive error messages and increase timeouts
-rw-r--r-- | tests/topotests/bgp_ebgp_requires_policy/test_bgp_ebgp_requires_policy.py | 62 |
1 files changed, 37 insertions, 25 deletions
diff --git a/tests/topotests/bgp_ebgp_requires_policy/test_bgp_ebgp_requires_policy.py b/tests/topotests/bgp_ebgp_requires_policy/test_bgp_ebgp_requires_policy.py index 003193f10..fa155dd5f 100644 --- a/tests/topotests/bgp_ebgp_requires_policy/test_bgp_ebgp_requires_policy.py +++ b/tests/topotests/bgp_ebgp_requires_policy/test_bgp_ebgp_requires_policy.py @@ -31,9 +31,11 @@ to send advertisements. Scenario 1: r1 has a filter applied for outgoing direction, r2 receives 192.168.255.1/32. + Scenario 2: r3 hasn't a filter appied for outgoing direction, r4 does not receive 192.168.255.1/32. + Scenario 3: r5 and r6 establish iBGP session which in turn should ignore RFC8212. All routes for both directions MUST work. @@ -63,14 +65,17 @@ class TemplateTopo(Topo): for routern in range(1, 7): tgen.add_router("r{}".format(routern)) + # Scenario 1. switch = tgen.add_switch("s1") switch.add_link(tgen.gears["r1"]) switch.add_link(tgen.gears["r2"]) + # Scenario 2. switch = tgen.add_switch("s2") switch.add_link(tgen.gears["r3"]) switch.add_link(tgen.gears["r4"]) + # Scenario 3. switch = tgen.add_switch("s3") switch.add_link(tgen.gears["r5"]) switch.add_link(tgen.gears["r6"]) @@ -120,41 +125,48 @@ def test_ebgp_requires_policy(): expected = {"routes": {"172.16.255.254/32": [{"valid": True}]}} 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") - success, result = topotest.run_and_expect(test_func, None, count=65, wait=2) - assert success is True, 'Failed bgp convergence (r2) in "{}"'.format( - tgen.gears["r2"] - ) + success, result = topotest.run_and_expect(test_func, None, count=120, wait=0.5) + assert success is True, "Failed bgp convergence (r2)" test_func = functools.partial(_bgp_has_routes, "r2") - success, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5) - assert success is True, 'eBGP policy is not working (r2) in "{}"'.format( - tgen.gears["r2"] - ) + success, result = topotest.run_and_expect(test_func, None, count=120, wait=0.5) + assert success is True, "r2 does not receive 192.168.255.1/32" + # Scenario 2. + logger.info("Scenario 2: r3 must not send 192.168.255.1/32 to r4") test_func = functools.partial(_bgp_converge, "r4") - success, result = topotest.run_and_expect(test_func, None, count=65, wait=2) - assert success is True, 'Failed bgp convergence (r4) in "{}"'.format( - tgen.gears["r4"] - ) + success, result = topotest.run_and_expect(test_func, None, count=120, wait=0.5) + assert success is True, "Failed bgp convergence (r4)" - test_func = functools.partial(_bgp_has_routes, "r4") - success, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5) - assert success is False, 'eBGP policy is not working (r4) in "{}"'.format( - tgen.gears["r4"] - ) + test_func = functools.partial(_bgp_advertised_routes, "r3") + success, result = topotest.run_and_expect(test_func, None, count=120, wait=0.5) + assert success is True, "r3 announced 192.168.255.1/32 to r4" + # Scenario 3. + logger.info("Scenario 3: r6 receives 192.168.255.1/32 from r5 (iBGP)") test_func = functools.partial(_bgp_converge, "r6") - success, result = topotest.run_and_expect(test_func, None, count=65, wait=2) - assert success is True, 'Failed bgp convergence (r6) in "{}"'.format( - tgen.gears["r6"] - ) + success, result = topotest.run_and_expect(test_func, None, count=120, wait=0.5) + assert success is True, "Failed bgp convergence (r6)" test_func = functools.partial(_bgp_has_routes, "r6") - success, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5) - assert success is True, 'eBGP policy is not working (r6) in "{}"'.format( - tgen.gears["r6"] - ) + success, result = topotest.run_and_expect(test_func, None, count=120, wait=0.5) + assert success is True, "r6 does not receive 192.168.255.1/32" if __name__ == "__main__": |