Skip to content

Commit 05a87fb

Browse files
committed
more test and fixes
Signed-off-by: Arvindsrinivasan Lakshmi Narasimhan <arlakshm@microsoft.com>
1 parent d740d14 commit 05a87fb

File tree

6 files changed

+230
-97
lines changed

6 files changed

+230
-97
lines changed

show/bgp_quagga_v4.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import click
2-
from show.main import AliasedGroup, ip, run_command,
2+
from show.main import AliasedGroup, ip, run_command
33
from utilities_common.bgp_util import get_bgp_summary_extended
44

55

show/bgp_quagga_v6.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import click
2-
from show.main import AliasedGroup, ipv6, run_command,
2+
from show.main import AliasedGroup, ipv6, run_command
33
from utilities_common.bgp_util import get_bgp_summary_extended
44

55

show/main.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -918,7 +918,7 @@ def protocol(verbose):
918918
ip.add_command(bgp)
919919
from .bgp_quagga_v6 import bgp
920920
ipv6.add_command(bgp)
921-
else:
921+
elif routing_stack == "frr":
922922
from .bgp_frr_v4 import bgp
923923
ip.add_command(bgp)
924924
from .bgp_frr_v6 import bgp

tests/bgp_commands_test.py

+53-15
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
1+
import os
2+
13
import pytest
4+
25
from click.testing import CliRunner
3-
import show.main as show
46

5-
show_bgp_summary_v4="""\
7+
show_bgp_summary_v4 = """\
68
79
IPv4 Unicast Summary:
810
BGP router identifier 10.1.0.32, local AS number 65100 vrf-id 0
9-
BGP table version 12811
11+
BGP table version 12811
1012
RIB entries 12817, using 2358328 bytes of memory
1113
Peers 24, using 502080 KiB of memory
1214
Peer groups 4, using 256 bytes of memory
@@ -40,11 +42,11 @@
4042
10.0.0.63 4 64016 0 0 0 0 0 never Active ARISTA16T0
4143
"""
4244

43-
show_bgp_summary_v6="""\
45+
show_bgp_summary_v6 = """\
4446
4547
IPv6 Unicast Summary:
4648
BGP router identifier 10.1.0.32, local AS number 65100 vrf-id 0
47-
BGP table version 8972
49+
BGP table version 8972
4850
RIB entries 12817, using 2358328 bytes of memory
4951
Peers 24, using 502080 KiB of memory
5052
Peer groups 4, using 256 bytes of memory
@@ -77,23 +79,59 @@
7779
fc00::76 4 64014 0 0 0 0 0 never Active ARISTA14T0
7880
fc00::a 4 65200 6665 6671 0 0 0 2d09h38m 6402 ARISTA03T2
7981
"""
82+
83+
show_error_invalid_json = """\
84+
Usage: summary [OPTIONS]
85+
Try 'summary --help' for help.
86+
87+
Error: bgp summary from bgp container not in json format
88+
"""
89+
90+
8091
class TestBgpCommands(object):
8192
@classmethod
8293
def setup_class(cls):
8394
print("SETUP")
8495
import mock_tables.dbconnector
8596

86-
@pytest.mark.parametrize('setup_single_bgp_instance', ['v4'], indirect=['setup_single_bgp_instance'])
87-
def test_bgp_summary_v4(self, setup_single_bgp_instance):
88-
#reload(show)
97+
@pytest.mark.parametrize('setup_single_bgp_instance',
98+
['v4'], indirect=['setup_single_bgp_instance'])
99+
def test_bgp_summary_v4(
100+
self,
101+
setup_bgp_commands,
102+
setup_single_bgp_instance):
103+
show = setup_bgp_commands
89104
runner = CliRunner()
90-
result = runner.invoke(show.cli.commands["ip"].commands["bgp"].commands["summary"])
91-
print("Result : {}".format(result.output))
105+
result = runner.invoke(
106+
show.cli.commands["ip"].commands["bgp"].commands["summary"], [])
107+
print("{}".format(result.output))
108+
assert result.exit_code == 0
92109
assert result.output == show_bgp_summary_v4
93110

94-
@pytest.mark.parametrize('setup_single_bgp_instance', ['v6'], indirect=['setup_single_bgp_instance'])
95-
def test_bgp_summary_v6(self, setup_single_bgp_instance):
111+
@pytest.mark.parametrize('setup_single_bgp_instance',
112+
['v6'], indirect=['setup_single_bgp_instance'])
113+
def test_bgp_summary_v6(
114+
self,
115+
setup_bgp_commands,
116+
setup_single_bgp_instance):
117+
show = setup_bgp_commands
118+
runner = CliRunner()
119+
result = runner.invoke(
120+
show.cli.commands["ipv6"].commands["bgp"].commands["summary"], [])
121+
print("{}".format(result.output))
122+
assert result.exit_code == 0
123+
assert result.output == show_bgp_summary_v6
124+
125+
@pytest.mark.parametrize('setup_single_bgp_instance',
126+
[' '], indirect=['setup_single_bgp_instance'])
127+
def test_bgp_summary_error(
128+
self,
129+
setup_bgp_commands,
130+
setup_single_bgp_instance):
131+
show = setup_bgp_commands
96132
runner = CliRunner()
97-
result = runner.invoke(show.cli.commands["ipv6"].commands["bgp"].commands["summary"])
98-
print("Result : {}".format(result.output))
99-
assert result.output == show_bgp_summary_v6
133+
result = runner.invoke(
134+
show.cli.commands["ipv6"].commands["bgp"].commands["summary"], [])
135+
print("{}".format(result.output))
136+
assert result.exit_code == 2
137+
assert result.output == show_error_invalid_json

tests/conftest.py

+31-15
Original file line numberDiff line numberDiff line change
@@ -49,43 +49,59 @@
4949
'snmp.timer',
5050
'telemetry.timer']
5151

52+
5253
@pytest.fixture
5354
def get_cmd_module():
5455
import config.main as config
5556
import show.main as show
5657

5758
return (config, show)
5859

59-
@pytest.fixture
60-
def get_show_module():
61-
import show.main as show
62-
return show
6360

6461
@pytest.fixture
6562
def setup_single_broacom_asic():
6663
import config.main as config
6764
import show.main as show
6865

69-
device_info.get_num_npus = mock.MagicMock(return_value = 1)
66+
device_info.get_num_npus = mock.MagicMock(return_value=1)
7067
config._get_sonic_generated_services = \
71-
mock.MagicMock(return_value = (generated_services_list, []))
68+
mock.MagicMock(return_value=(generated_services_list, []))
69+
70+
config.asic_type = mock.MagicMock(return_value="broadcom")
71+
config._get_device_type = mock.MagicMock(return_value="ToRRouter")
7272

73-
config.asic_type = mock.MagicMock(return_value = "broadcom")
74-
config._get_device_type = mock.MagicMock(return_value = "ToRRouter")
7573

7674
@pytest.fixture
77-
def setup_single_bgp_instance(monkeypatch, request):
75+
def setup_single_bgp_instance(request):
7876
import utilities_common.bgp_util as bgp_util
7977

8078
if request.param == 'v4':
81-
bgp_summary_json = 'mock_tables/ipv4_bgp_summary.json'
79+
bgp_summary_json = os.path.join(
80+
test_path, 'mock_tables', 'ipv4_bgp_summary.json')
81+
elif request.param == 'v6':
82+
bgp_summary_json = os.path.join(
83+
test_path, 'mock_tables', 'ipv6_bgp_summary.json')
8284
else:
83-
bgp_summary_json = 'mock_tables/ipv6_bgp_summary.json'
85+
bgp_summary_json = os.path.join(
86+
test_path, 'mock_tables', 'dummy.json')
8487

8588
def mock_run_bgp_command(vtysh_cmd, bgp_namespace):
86-
with open(bgp_summary_json) as json_data:
87-
mock_frr_data = json_data.read()
88-
return mock_frr_data
89+
if os.path.isfile(bgp_summary_json):
90+
with open(bgp_summary_json) as json_data:
91+
mock_frr_data = json_data.read()
92+
return mock_frr_data
93+
return ""
8994

90-
monkeypatch.setattr(bgp_util, "run_bgp_command", mock_run_bgp_command)
95+
bgp_util.run_bgp_command = mock.MagicMock(
96+
return_value=mock_run_bgp_command("", ""))
9197

98+
99+
@pytest.fixture
100+
def setup_bgp_commands():
101+
import show.main as show
102+
from show.bgp_frr_v4 import bgp as bgpv4
103+
from show.bgp_frr_v6 import bgp as bgpv6
104+
105+
show.ip.add_command(bgpv4)
106+
show.ipv6.add_command(bgpv6)
107+
return show

0 commit comments

Comments
 (0)