Skip to content

Commit

Permalink
[201911][multi asic] show ip bgp summary changes for bgp mon (#1483)
Browse files Browse the repository at this point in the history
The sonic-net/sonic-buildimage#6920 adds support of adding BGP monitor session on one of the backend ASICs of Multi ASIC platforms.
This PR enchances the show ip bgp summary command to display this session

Also added unit tests for 'show ip bgp summary' for multi asic platforms
  • Loading branch information
arlakshm authored Mar 6, 2021
1 parent fa07245 commit 9e74075
Show file tree
Hide file tree
Showing 13 changed files with 836 additions and 145 deletions.
138 changes: 0 additions & 138 deletions sonic-utilities-tests/bgp_commands_test.py

This file was deleted.

67 changes: 62 additions & 5 deletions sonic-utilities-tests/conftest.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from imp import reload
import os
import sys

Expand Down Expand Up @@ -63,7 +64,11 @@ def mock_run_show_ip_route_commands(request):
def setup_multi_asic_bgp_instance(request):
import utilities_common.bgp_util as bgp_util

if request.param == 'ip_route':
if request.param == 'v4':
m_asic_json_file = 'ipv4_bgp_summary.json'
elif request.param == 'v6':
m_asic_json_file = 'ipv6_bgp_summary.json'
elif request.param == 'ip_route':
m_asic_json_file = 'ip_route.json'
elif request.param == 'ip_specific_route':
m_asic_json_file = 'ip_specific_route.json'
Expand Down Expand Up @@ -104,11 +109,15 @@ def mock_run_bgp_command(vtysh_cmd, bgp_namespace):
@pytest.fixture
def setup_bgp_commands():
import show.main as show
from show.bgp_frr_v4 import bgp as bgpv4
from show.bgp_frr_v6 import bgp as bgpv6
reload(show)
import show.bgp_frr_v4 as bgpv4
import show.bgp_frr_v6 as bgpv6
reload(bgpv4)
reload(bgpv6)

show.ip.add_command(bgpv4.bgp)
show.ipv6.add_command(bgpv6.bgp)

show.ip.add_command(bgpv4)
show.ipv6.add_command(bgpv6)
return show


Expand All @@ -117,3 +126,51 @@ def setup_ip_route_commands():
import show.main as show

return show

#@pytest.fixture(scope='class')
@pytest.fixture
def setup_multi_asic_display_options():
from sonic_py_common import multi_asic
from utilities_common import multi_asic as multi_asic_util
import show.main as show
import click

_multi_asic_click_options = multi_asic_util.multi_asic_click_options
_get_num_asics = multi_asic.get_num_asics
_is_multi_asic = multi_asic.is_multi_asic
_get_namespace_list = multi_asic.get_namespace_list
def mock_multi_asic_click_options(func):
_mock_multi_asic_click_options = [
click.option('--display',
'-d', 'display',
default="frontend",
show_default=True,
type=click.Choice(["all", "frontend"]),
help='Show internal interfaces'),
click.option('--namespace',
'-n', 'namespace',
default=None,
type=click.Choice(["asic0", "asic1"]),
show_default=True,
help='Namespace name or all'),
]
for option in reversed(_mock_multi_asic_click_options):
func = option(func)
return func

multi_asic.get_num_asics = mock.MagicMock(return_value=2)
multi_asic.is_multi_asic = mock.MagicMock(return_value=True)
multi_asic.get_namespace_list = mock.MagicMock(
return_value=["asic0", "asic1"])

multi_asic_util.multi_asic_click_options = mock_multi_asic_click_options
mock_tables.dbconnector.load_namespace_config()
yield

multi_asic.get_num_asics = _get_num_asics
multi_asic.is_multi_asic = _is_multi_asic
multi_asic.get_namespace_list = _get_namespace_list

multi_asic_util.multi_asic_click_options = _multi_asic_click_options
mock_tables.dbconnector.load_database_config()
reload(show)
60 changes: 60 additions & 0 deletions sonic-utilities-tests/mock_tables/asic0/config_db.json
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,66 @@
"auto_restart": "enabled",
"high_mem_alert": "disabled"
},
"BGP_NEIGHBOR|10.0.0.5": {
"rrclient": "0",
"name": "ARISTA03T2",
"local_addr": "10.0.0.4",
"nhopself": "0",
"admin_status": "up",
"holdtime": "10",
"asn": "65200",
"keepalive": "3"
},
"BGP_NEIGHBOR|fc00::6": {
"rrclient": "0",
"name": "ARISTA03T2",
"local_addr": "fc00::5",
"nhopself": "0",
"admin_status": "up",
"holdtime": "10",
"asn": "65200",
"keepalive": "3"
},
"BGP_NEIGHBOR|10.0.0.1": {
"rrclient": "0",
"name": "ARISTA01T2",
"local_addr": "10.0.0.0",
"nhopself": "0",
"admin_status": "up",
"holdtime": "10",
"asn": "65200",
"keepalive": "3"
},
"BGP_NEIGHBOR|fc00::2": {
"rrclient": "0",
"name": "ARISTA01T2",
"local_addr": "fc00::1",
"nhopself": "0",
"admin_status": "up",
"holdtime": "10",
"asn": "65200",
"keepalive": "3"
},
"BGP_INTERNAL_NEIGHBOR|10.1.0.2": {
"rrclient": "0",
"name": "ASIC1",
"local_addr": "10.1.0.3",
"nhopself": "0",
"admin_status": "up",
"holdtime": "0",
"asn": "65100",
"keepalive": "0"
},
"BGP_INTERNAL_NEIGHBOR|2603:10e2:400:1::1": {
"rrclient": "0",
"name": "ASIC1",
"local_addr": "2603:10e2:400:1::2",
"nhopself": "0",
"admin_status": "up",
"holdtime": "0",
"asn": "65100",
"keepalive": "0"
},
"BGP_NEIGHBOR|20.1.1.5": {
"rrclient": "0",
"name": "T2-Peer",
Expand Down
78 changes: 78 additions & 0 deletions sonic-utilities-tests/mock_tables/asic0/ipv4_bgp_summary.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
{
"ipv4Unicast": {
"routerId": "10.1.0.32",
"as": 65100,
"vrfId": 0,
"vrfName": "default",
"tableVersion": 12172,
"ribCount": 12751,
"ribMemory": 2346184,
"peerCount": 4,
"peerMemory": 83680,
"peerGroupCount": 4,
"peerGroupMemory": 256,
"peers": {
"10.1.0.2": {
"remoteAs": 65100,
"version": 4,
"msgRcvd": 0,
"msgSent": 0,
"tableVersion": 0,
"outq": 0,
"inq": 0,
"peerUptime": "never",
"peerUptimeMsec": 0,
"prefixReceivedCount": 0,
"pfxRcd": 0,
"state": "Active",
"connectionsEstablished": 0,
"connectionsDropped": 0,
"idType": "ipv4"
},
"10.0.0.1": {
"remoteAs": 65200,
"version": 4,
"msgRcvd": 3191,
"msgSent": 5,
"tableVersion": 0,
"outq": 0,
"inq": 0,
"peerUptime": "00:01:29",
"peerUptimeMsec": 89000,
"peerUptimeEstablishedEpoch": 1614894400,
"prefixReceivedCount": 6370,
"pfxRcd": 6370,
"pfxSnt": 1,
"state": "Established",
"connectionsEstablished": 1,
"connectionsDropped": 0,
"idType": "ipv4"
},
"10.0.0.5": {
"remoteAs": 65200,
"version": 4,
"msgRcvd": 3191,
"msgSent": 5,
"tableVersion": 0,
"outq": 0,
"inq": 0,
"peerUptime": "00:01:29",
"peerUptimeMsec": 89000,
"peerUptimeEstablishedEpoch": 1614894400,
"prefixReceivedCount": 6370,
"pfxRcd": 6370,
"pfxSnt": 1,
"state": "Established",
"connectionsEstablished": 1,
"connectionsDropped": 0,
"idType": "ipv4"
}
},
"failedPeers": 2,
"totalPeers": 4,
"dynamicPeers": 0,
"bestPath": {
"multiPathRelax": "true"
}
}
}
Loading

0 comments on commit 9e74075

Please sign in to comment.