summaryrefslogtreecommitdiff
path: root/tests/topotests/lib/bgp.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/topotests/lib/bgp.py')
-rw-r--r--tests/topotests/lib/bgp.py50
1 files changed, 28 insertions, 22 deletions
diff --git a/tests/topotests/lib/bgp.py b/tests/topotests/lib/bgp.py
index a0b12b2d64..3a16ed5a09 100644
--- a/tests/topotests/lib/bgp.py
+++ b/tests/topotests/lib/bgp.py
@@ -50,6 +50,7 @@ def create_router_bgp(tgen, topo=None, input_dict=None, build=False, load_config
"bgp": {
"local_as": "200",
"router_id": "22.22.22.22",
+ "bgp_always_compare_med": True,
"graceful-restart": {
"graceful-restart": True,
"preserve-fw-state": True,
@@ -164,7 +165,6 @@ def create_router_bgp(tgen, topo=None, input_dict=None, build=False, load_config
router,
)
else:
-
ipv4_data = bgp_addr_data.setdefault("ipv4", {})
ipv6_data = bgp_addr_data.setdefault("ipv6", {})
l2vpn_data = bgp_addr_data.setdefault("l2vpn", {})
@@ -344,6 +344,13 @@ def __create_bgp_global(tgen, input_dict, router, build=False):
config_data.append(cmd)
+ if "bgp_always_compare_med" in bgp_data:
+ bgp_always_compare_med = bgp_data["bgp_always_compare_med"]
+ if bgp_always_compare_med == True:
+ config_data.append("bgp always-compare-med")
+ elif bgp_always_compare_med == False:
+ config_data.append("no bgp always-compare-med")
+
logger.debug("Exiting lib API: {}".format(sys._getframe().f_code.co_name))
return config_data
@@ -530,6 +537,7 @@ def __create_bgp_unicast_neighbor(
config_data.extend(neigh_addr_data)
+ config_data.append("exit")
logger.debug("Exiting lib API: {}".format(sys._getframe().f_code.co_name))
return config_data
@@ -645,7 +653,6 @@ def __create_l2vpn_evpn_address_family(
if advertise_data:
for address_type, unicast_type in advertise_data.items():
-
if type(unicast_type) is dict:
for key, value in unicast_type.items():
cmd = "advertise {} {}".format(address_type, key)
@@ -1318,7 +1325,7 @@ def verify_router_id(tgen, topo, input_dict, expected=True):
@retry(retry_timeout=150)
-def verify_bgp_convergence(tgen, topo=None, dut=None, expected=True):
+def verify_bgp_convergence(tgen, topo=None, dut=None, expected=True, addr_type=None):
"""
API will verify if BGP is converged with in the given time frame.
Running "show bgp summary json" command and verify bgp neighbor
@@ -1329,6 +1336,7 @@ def verify_bgp_convergence(tgen, topo=None, dut=None, expected=True):
* `tgen`: topogen object
* `topo`: input json file data
* `dut`: device under test
+ * `addr_type` : address type for which verification to be done, by-default both v4 and v6
Usage
-----
@@ -1432,20 +1440,27 @@ def verify_bgp_convergence(tgen, topo=None, dut=None, expected=True):
return errormsg
else:
total_peer = 0
- for addr_type in bgp_addr_type.keys():
- if not check_address_types(addr_type):
+ for _addr_type in bgp_addr_type.keys():
+ if not check_address_types(_addr_type):
+ continue
+
+ if addr_type and addr_type != _addr_type:
continue
- bgp_neighbors = bgp_addr_type[addr_type]["unicast"]["neighbor"]
+ bgp_neighbors = bgp_addr_type[_addr_type]["unicast"]["neighbor"]
for bgp_neighbor in bgp_neighbors:
total_peer += len(bgp_neighbors[bgp_neighbor]["dest_link"])
no_of_peer = 0
- for addr_type in bgp_addr_type.keys():
+ for _addr_type in bgp_addr_type.keys():
if not check_address_types(addr_type):
continue
- bgp_neighbors = bgp_addr_type[addr_type]["unicast"]["neighbor"]
+
+ if addr_type and addr_type != _addr_type:
+ continue
+
+ bgp_neighbors = bgp_addr_type[_addr_type]["unicast"]["neighbor"]
for bgp_neighbor, peer_data in bgp_neighbors.items():
for dest_link in peer_data["dest_link"].keys():
@@ -1466,7 +1481,7 @@ def verify_bgp_convergence(tgen, topo=None, dut=None, expected=True):
elif "source_link" in peer_details:
neighbor_ip = topo["routers"][bgp_neighbor][
"links"
- ][peer_details["source_link"]][addr_type].split(
+ ][peer_details["source_link"]][_addr_type].split(
"/"
)[
0
@@ -1477,12 +1492,12 @@ def verify_bgp_convergence(tgen, topo=None, dut=None, expected=True):
):
neighbor_ip = data[dest_link]["peer-interface"]
else:
- neighbor_ip = data[dest_link][addr_type].split("/")[
- 0
- ]
+ neighbor_ip = data[dest_link][_addr_type].split(
+ "/"
+ )[0]
nh_state = None
neighbor_ip = neighbor_ip.lower()
- if addr_type == "ipv4":
+ if _addr_type == "ipv4":
ipv4_data = show_bgp_json[vrf]["ipv4Unicast"][
"peers"
]
@@ -1651,7 +1666,6 @@ def modify_as_number(tgen, topo, input_dict):
logger.debug("Entering lib API: {}".format(sys._getframe().f_code.co_name))
try:
-
new_topo = deepcopy(topo["routers"])
router_dict = {}
for router in input_dict.keys():
@@ -1953,7 +1967,6 @@ def clear_bgp_and_verify(tgen, topo, router, rid=None):
total_peer = 0
for addr_type in bgp_addr_type.keys():
-
if not check_address_types(addr_type):
continue
@@ -2022,7 +2035,6 @@ def clear_bgp_and_verify(tgen, topo, router, rid=None):
peer_uptime_after_clear_bgp = {}
# Verifying BGP convergence after bgp clear command
for retry in range(50):
-
# Waiting for BGP to converge
logger.info(
"Waiting for %s sec for BGP to converge on router" " %s...",
@@ -3278,7 +3290,6 @@ def verify_graceful_restart(
if lmode is None:
if "graceful-restart" in input_dict[dut]["bgp"]:
-
if (
"graceful-restart" in input_dict[dut]["bgp"]["graceful-restart"]
and input_dict[dut]["bgp"]["graceful-restart"][
@@ -3326,7 +3337,6 @@ def verify_graceful_restart(
if rmode is None:
if "graceful-restart" in input_dict[peer]["bgp"]:
-
if (
"graceful-restart"
in input_dict[peer]["bgp"]["graceful-restart"]
@@ -3628,7 +3638,6 @@ def verify_eor(tgen, topo, addr_type, input_dict, dut, peer, expected=True):
eor_json = show_bgp_graceful_json_out[afi]["endOfRibStatus"]
if "endOfRibSend" in eor_json:
-
if eor_json["endOfRibSend"]:
logger.info(
"[DUT: %s]: EOR Send true for %s " "%s", dut, neighbor_ip, afi
@@ -3918,7 +3927,6 @@ def verify_graceful_restart_timers(tgen, topo, addr_type, input_dict, dut, peer)
"timer"
].items():
if rs_timer == "restart-time":
-
receivedTimer = value
if (
show_bgp_graceful_json_out["timers"][
@@ -4777,7 +4785,6 @@ def get_prefix_count_route(
tgen = get_topogen()
for router, rnode in tgen.routers().items():
if router == dut:
-
if vrf:
ipv4_cmd = "sh ip bgp vrf {} summary json".format(vrf)
show_bgp_json_ipv4 = run_frr_cmd(rnode, ipv4_cmd, isjson=True)
@@ -4871,7 +4878,6 @@ def verify_rib_default_route(
connected_routes = {}
for router, rnode in tgen.routers().items():
if router == dut:
-
ipv4_routes = run_frr_cmd(rnode, "sh ip bgp json", isjson=True)
ipv6_routes = run_frr_cmd(rnode, "sh ip bgp ipv6 unicast json", isjson=True)
is_ipv4_default_attrib_found = False