]> git.puffer.fish Git - mirror/frr.git/commitdiff
topotests: bgp_ipv6_rtadv, add control over bgp updates 17874/head
authorPhilippe Guibert <philippe.guibert@6wind.com>
Fri, 17 Jan 2025 16:26:50 +0000 (17:26 +0100)
committerPhilippe Guibert <philippe.guibert@6wind.com>
Mon, 20 Jan 2025 08:32:28 +0000 (09:32 +0100)
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>
tests/topotests/bgp_ipv6_rtadv/r1/bgp_ipv4_routes.json [new file with mode: 0644]
tests/topotests/bgp_ipv6_rtadv/r1/bgp_ipv6_routes.json [new file with mode: 0644]
tests/topotests/bgp_ipv6_rtadv/test_bgp_ipv6_rtadv.py

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 (file)
index 0000000..affe5cf
--- /dev/null
@@ -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 (file)
index 0000000..bccfb45
--- /dev/null
@@ -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
+}
index 045ac91fc7feb9660bb67e8433f6d57e84e28242..5992c3011630f7216ae131f3b04ad1adb527b422 100644 (file)
@@ -74,6 +74,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.