Skip to content

Commit 3349965

Browse files
authored
Route flap fix on upstream LC for AZNG route changes (sonic-net#14804)
With recent changes for AZNG routes on upstream LC, 'test_route_flap' test case fails for upstream T2 line card. This PR fixes the above issue for T2 upstream line card.
1 parent de89b30 commit 3349965

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

tests/conftest.py

+20
Original file line numberDiff line numberDiff line change
@@ -1781,6 +1781,26 @@ def enum_rand_one_frontend_asic_index(request):
17811781
return request.param
17821782

17831783

1784+
@pytest.fixture(scope='module')
1785+
def enum_upstream_dut_hostname(duthosts, tbinfo):
1786+
if tbinfo["topo"]["type"] == "t0":
1787+
upstream_nbr_type = "T1"
1788+
elif tbinfo["topo"]["type"] == "t1":
1789+
upstream_nbr_type = "T2"
1790+
else:
1791+
upstream_nbr_type = "T3"
1792+
1793+
for a_dut in duthosts.frontend_nodes:
1794+
minigraph_facts = a_dut.get_extended_minigraph_facts(tbinfo)
1795+
minigraph_neighbors = minigraph_facts['minigraph_neighbors']
1796+
for key, value in minigraph_neighbors.items():
1797+
if upstream_nbr_type in value['name']:
1798+
return a_dut.hostname
1799+
1800+
pytest.fail("Did not find a dut in duthosts that for topo type {} that has upstream nbr type {}".
1801+
format(tbinfo["topo"]["type"], upstream_nbr_type))
1802+
1803+
17841804
@pytest.fixture(scope="module")
17851805
def duthost_console(duthosts, enum_supervisor_dut_hostname, localhost, conn_graph_facts, creds): # noqa F811
17861806
duthost = duthosts[enum_supervisor_dut_hostname]

tests/route/test_route_flap.py

+10-2
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,9 @@ def check_route(duthost, route, dev_port, operation):
208208
cmd = ' -c "show ip route {} json"'.format(route)
209209
for asichost in duthost.frontend_asics:
210210
out = json.loads(asichost.run_vtysh(cmd)['stdout'])
211+
if len(out) == 0:
212+
logger.info("Route table empty on asic {}, check other asic".format(asichost.asic_index))
213+
continue
211214
nexthops = out[route][0]['nexthops']
212215
routes_per_asic = [hop['interfaceName'] for hop in nexthops if 'interfaceName' in hop.keys()]
213216
result.extend(routes_per_asic)
@@ -376,7 +379,8 @@ def get_dev_port_and_route(duthost, asichost, dst_prefix_set):
376379

377380
def test_route_flap(duthosts, tbinfo, ptfhost, ptfadapter,
378381
get_function_completeness_level, announce_default_routes,
379-
enum_rand_one_per_hwsku_frontend_hostname, enum_rand_one_frontend_asic_index,
382+
enum_rand_one_per_hwsku_frontend_hostname,
383+
enum_upstream_dut_hostname, enum_rand_one_frontend_asic_index,
380384
setup_standby_ports_on_non_enum_rand_one_per_hwsku_frontend_host_m, # noqa F811
381385
toggle_all_simulator_ports_to_enum_rand_one_per_hwsku_frontend_host_m, loganalyzer): # noqa F811
382386
ptf_ip = tbinfo['ptf_ip']
@@ -385,6 +389,7 @@ def test_route_flap(duthosts, tbinfo, ptfhost, ptfadapter,
385389
nexthop = common_config.get('nhipv4', NHIPV4)
386390
duthost = duthosts[enum_rand_one_per_hwsku_frontend_hostname]
387391
asichost = duthost.asic_instance(enum_rand_one_frontend_asic_index)
392+
duthost_upstream = duthosts[enum_upstream_dut_hostname]
388393
if loganalyzer:
389394
ignoreRegex = [
390395
".*ERR.*\"missed_FRR_routes\".*"
@@ -441,7 +446,10 @@ def test_route_flap(duthosts, tbinfo, ptfhost, ptfadapter,
441446
neighbor_type = get_neighbor_info(duthost, dev_port, tbinfo)
442447
recv_neigh_list = get_all_recv_neigh(duthosts, neighbor_type)
443448
logger.info("Receiving ports neighbor list : {}".format(recv_neigh_list))
444-
ptf_recv_ports = get_all_ptf_recv_ports(duthosts, tbinfo, recv_neigh_list)
449+
if 't2' in tbinfo["topo"]["type"] and duthost == duthost_upstream:
450+
ptf_recv_ports = get_ptf_recv_ports(duthost, tbinfo)
451+
else:
452+
ptf_recv_ports = get_all_ptf_recv_ports(duthosts, tbinfo, recv_neigh_list)
445453
logger.info("Receiving ptf ports list : {}".format(ptf_recv_ports))
446454

447455
exabgp_port = get_exabgp_port(duthost, tbinfo, dev_port)

0 commit comments

Comments
 (0)