diff options
| author | Philippe Guibert <philippe.guibert@6wind.com> | 2025-01-17 17:26:50 +0100 | 
|---|---|---|
| committer | Philippe Guibert <philippe.guibert@6wind.com> | 2025-01-20 09:32:28 +0100 | 
| commit | 50928a93c67ef505a5cab5baeb8820cc40d75dde (patch) | |
| tree | 40b221e5c32731a1002232fabb1b8bfcfd47076d /tests/topotests/bgp_ipv6_rtadv | |
| parent | 0bf47adc64b05736285fe392365b8733b6f7c507 (diff) | |
topotests: bgp_ipv6_rtadv, add control over bgp updates
Add a test to control the json values of the incoming BGP update
received by an unnumbered BGP.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
Diffstat (limited to 'tests/topotests/bgp_ipv6_rtadv')
| -rw-r--r-- | tests/topotests/bgp_ipv6_rtadv/r1/bgp_ipv4_routes.json | 35 | ||||
| -rw-r--r-- | tests/topotests/bgp_ipv6_rtadv/r1/bgp_ipv6_routes.json | 35 | ||||
| -rw-r--r-- | tests/topotests/bgp_ipv6_rtadv/test_bgp_ipv6_rtadv.py | 39 | 
3 files changed, 109 insertions, 0 deletions
diff --git a/tests/topotests/bgp_ipv6_rtadv/r1/bgp_ipv4_routes.json b/tests/topotests/bgp_ipv6_rtadv/r1/bgp_ipv4_routes.json new file mode 100644 index 0000000000..affe5cf8df --- /dev/null +++ b/tests/topotests/bgp_ipv6_rtadv/r1/bgp_ipv4_routes.json @@ -0,0 +1,35 @@ +{ +    "vrfId": 0, +    "vrfName": "default", +    "routerId": "10.254.254.1", +    "defaultLocPrf": 100, +    "localAS": 101, +    "routes": { +        "10.254.254.2/32": [{ +            "valid": true, +            "bestpath": true, +            "selectionReason":"First path received", +            "pathFrom":"external", +            "prefix":"10.254.254.2", +            "prefixLen":32, +            "network":"10.254.254.2/32", +            "metric":0, +            "weight":0, +            "path":"102", +            "origin":"incomplete", +            "nexthops":[{ +                "ip":"2001:db8:1::2", +                "hostname":"r2", +                "afi":"ipv6", +                "scope":"global" +            },{ +                "interface":"r1-eth0", +                "hostname":"r2", +                "afi":"ipv6", +                "scope":"link-local", +                "used":true +            }]}] +    }, +    "totalRoutes": 2, +    "totalPaths": 2 +} diff --git a/tests/topotests/bgp_ipv6_rtadv/r1/bgp_ipv6_routes.json b/tests/topotests/bgp_ipv6_rtadv/r1/bgp_ipv6_routes.json new file mode 100644 index 0000000000..bccfb45771 --- /dev/null +++ b/tests/topotests/bgp_ipv6_rtadv/r1/bgp_ipv6_routes.json @@ -0,0 +1,35 @@ +{ +    "vrfId": 0, +    "vrfName": "default", +    "routerId": "10.254.254.1", +    "defaultLocPrf": 100, +    "localAS": 101, +    "routes": { +        "2001:db8:1::/64": [{ +            "valid":true, +            "bestpath":true, +            "selectionReason":"First path received", +            "pathFrom":"external", +            "prefix":"2001:db8:1::", +            "prefixLen":64, +            "network":"2001:db8:1::/64", +            "metric":0, +            "weight":0, +            "path":"102", +            "origin":"incomplete", +            "nexthops":[{ +                "ip":"2001:db8:1::2", +                "hostname":"r2", +                "afi":"ipv6", +                "scope":"global" +            },{ +                "interface":"r1-eth0", +                "hostname":"r2", +                "afi":"ipv6", +                "scope":"link-local", +                "used":true +            }]}] +    }, +    "totalRoutes": 1, +    "totalPaths": 1 +} diff --git a/tests/topotests/bgp_ipv6_rtadv/test_bgp_ipv6_rtadv.py b/tests/topotests/bgp_ipv6_rtadv/test_bgp_ipv6_rtadv.py index 045ac91fc7..5992c30116 100644 --- a/tests/topotests/bgp_ipv6_rtadv/test_bgp_ipv6_rtadv.py +++ b/tests/topotests/bgp_ipv6_rtadv/test_bgp_ipv6_rtadv.py @@ -75,6 +75,45 @@ def teardown_module(_mod):  def test_protocols_convergence():      """ +    Assert that BGP protocol has converged +    by checking the incoming BGP updates have been received. +    """ +    tgen = get_topogen() +    if tgen.routers_have_failure(): +        pytest.skip(tgen.errors) + +    # Check BGP IPv4 routing table. +    logger.info("Checking BGP IPv4 routes for convergence") +    router = tgen.gears["r1"] + +    json_file = "{}/{}/bgp_ipv4_routes.json".format(CWD, router.name) +    expected = json.loads(open(json_file).read()) +    test_func = partial( +        topotest.router_json_cmp, +        router, +        "show bgp ipv4 json", +        expected, +    ) +    _, result = topotest.run_and_expect(test_func, None, count=160, wait=0.5) +    assertmsg = '"{}" JSON output mismatches'.format(router.name) +    assert result is None, assertmsg + +    # Check BGP IPv6 routing table. +    json_file = "{}/{}/bgp_ipv6_routes.json".format(CWD, router.name) +    expected = json.loads(open(json_file).read()) +    test_func = partial( +        topotest.router_json_cmp, +        router, +        "show bgp ipv6 json", +        expected, +    ) +    _, result = topotest.run_and_expect(test_func, None, count=160, wait=0.5) +    assertmsg = '"{}" JSON output mismatches'.format(router.name) +    assert result is None, assertmsg + + +def test_route_convergence(): +    """      Assert that all protocols have converged      statuses as they depend on it.      """  | 
