]> git.puffer.fish Git - matthieu/frr.git/commitdiff
topotests: bgp_vpnv4_noretain, check presence of locpref in adj-rib-out
authorPhilippe Guibert <philippe.guibert@6wind.com>
Mon, 6 Jan 2025 16:03:26 +0000 (17:03 +0100)
committerPhilippe Guibert <philippe.guibert@6wind.com>
Mon, 27 Jan 2025 10:50:29 +0000 (11:50 +0100)
Add a test that check that the detailed command of show bgp advertised
neighbors 10.125.0.2 displays the locpref value.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
tests/topotests/bgp_vpnv4_noretain/r1/ipv4_vpn_routes_advertised_10_125_0_2.json [new file with mode: 0644]
tests/topotests/bgp_vpnv4_noretain/test_bgp_vpnv4_noretain.py

diff --git a/tests/topotests/bgp_vpnv4_noretain/r1/ipv4_vpn_routes_advertised_10_125_0_2.json b/tests/topotests/bgp_vpnv4_noretain/r1/ipv4_vpn_routes_advertised_10_125_0_2.json
new file mode 100644 (file)
index 0000000..7891982
--- /dev/null
@@ -0,0 +1,105 @@
+{
+    "bgpLocalRouterId":"192.0.2.1",
+    "defaultLocPrf":100,
+    "localAS":65500,
+    "advertisedRoutes":{
+        "192.0.2.1:1":{
+            "rd":"192.0.2.1:1",
+            "10.101.0.0/24":{
+                "prefix":"10.101.0.0/24",
+                "advertisedTo":{
+                    "10.125.0.2":{
+                        "hostname":"r2"
+                    }
+                },
+                "paths":[{
+                    "aspath":{
+                        "string":"Local",
+                        "segments":[],
+                        "length":0
+                    },
+                    "nhVrfName":"vrf1",
+                    "announceNexthopSelf":true,
+                    "origin":"incomplete",
+                    "metric":0,
+                    "locPrf":100,
+                    "weight":32768,
+                    "valid":true,
+                    "sourced":true,
+                    "local":true,
+                    "bestpath":{
+                        "overall":true,
+                        "selectionReason":"First path received"
+                    },
+                    "extendedCommunity":{
+                        "string":"RT:192.0.2.1:100"
+                    },
+                    "originatorId":"192.0.2.1",
+                    "remoteLabel":101,
+                    "nexthops":[{
+                        "ip":"0.0.0.0",
+                        "hostname":"r1",
+                        "afi":"ipv4",
+                        "metric":0,
+                        "accessible":true,
+                        "used":true
+                    }],
+                    "peer":{
+                        "peerId":"0.0.0.0",
+                        "routerId":"192.0.2.1"
+                    }
+                }]
+            }
+        },
+        "192.0.2.1:3":{
+            "rd":"192.0.2.1:3",
+            "10.103.0.0/24":{
+                "prefix":"10.103.0.0/24",
+                "advertisedTo":{
+                    "10.125.0.2":{
+                        "hostname":"r2"
+                    }
+                },
+                "paths":[{
+                    "aspath":{
+                        "string":"Local",
+                        "segments":[],
+                        "length":0
+                    },
+                    "nhVrfName":"vrf3",
+                    "announceNexthopSelf":true,
+                    "origin":"incomplete",
+                    "metric":0,
+                    "locPrf":100,
+                    "weight":32768,
+                    "valid":true,
+                    "sourced":true,
+                    "local":true,
+                    "bestpath":{
+                        "overall":true,
+                        "selectionReason":"First path received"
+                    },
+                    "extendedCommunity":{
+                        "string":"RT:192.0.2.1:300"
+                    },
+                    "originatorId":"192.0.2.1",
+                    "remoteLabel":103,
+                    "nexthops":[{
+                        "ip":"0.0.0.0",
+                        "hostname":"r1",
+                        "afi":"ipv4",
+                        "metric":0,
+                        "accessible":true,
+                        "used":true
+                    }],
+                    "peer":{
+                        "peerId":"0.0.0.0",
+                        "routerId":"192.0.2.1"
+                    }
+                }]
+            }
+        }
+    },
+    "totalPrefixCounter":2,
+    "filteredPrefixCounter":0
+}
index ee84e375fb52543251f486af4f6106b31cfe013c..ada37c28c11e572a0a9537655e2cb984f59bbbb1 100644 (file)
@@ -218,6 +218,29 @@ def check_show_bgp_ipv4_vpn(rname, json_file):
     assert result is None, assertmsg
 
 
+def check_show_bgp_ipv4_vpn_peer_advertised_routes(rname, peer, json_file):
+    tgen = get_topogen()
+    if tgen.routers_have_failure():
+        pytest.skip(tgen.errors)
+    router = tgen.gears[rname]
+
+    logger.info(
+        "Checking VPNv4 advertised routes for on {} for peer {}".format(rname, peer)
+    )
+
+    json_file = "{}/{}/{}".format(CWD, router.name, json_file)
+    expected = json.loads(open(json_file).read())
+    test_func = partial(
+        topotest.router_json_cmp,
+        router,
+        "show bgp ipv4 vpn neighbors {} advertised-routes detail json".format(peer),
+        expected,
+    )
+    _, result = topotest.run_and_expect(test_func, None, count=20, wait=1)
+    assertmsg = '"{}" JSON output mismatches'.format(router.name)
+    assert result is None, assertmsg
+
+
 def check_show_bgp_vrf_ipv4(rname, json_file):
     tgen = get_topogen()
     if tgen.routers_have_failure():
@@ -563,6 +586,21 @@ router bgp 65500
     check_show_bgp_vrf_ipv4(rname, "ipv4_vrf_all_routes_init.json")
 
 
+def test_bgp_advertised_routes_step13():
+    """
+    Dump advertised routes from r1 to r2
+    Check that the localpref attribute is set on the show command
+    """
+
+    tgen = get_topogen()
+    if tgen.routers_have_failure():
+        pytest.skip(tgen.errors)
+
+    check_show_bgp_ipv4_vpn_peer_advertised_routes(
+        "r1", "10.125.0.2", "ipv4_vpn_routes_advertised_10_125_0_2.json"
+    )
+
+
 def test_memory_leak():
     "Run the memory leak test and report results."
     tgen = get_topogen()