2
2
3
3
import pytest
4
4
import importlib
5
+ import mock
5
6
6
7
from click .testing import CliRunner
7
8
8
9
from utilities_common import multi_asic
9
10
from utilities_common import constants
11
+ from utilities_common import bgp_util
12
+ from utilities_common .db import Db
10
13
11
14
from unittest .mock import patch
12
15
13
16
from sonic_py_common import device_info
17
+ from sonic_py_common import multi_asic as masic
14
18
show_bgp_summary_v4 = """\
15
19
16
20
IPv4 Unicast Summary:
277
281
Total number of neighbors 23
278
282
"""
279
283
284
+ SHOW_BGP_SUMMARY_V4_NO_EXT_NEIGHBORS = """
285
+ IPv4 Unicast Summary:
286
+ asic0: BGP router identifier 10.1.0.32, local AS number 65100 vrf-id 0
287
+ BGP table version 8972
288
+ RIB entries 0, using 0 bytes of memory
289
+ Peers 0, using 0 KiB of memory
290
+ Peer groups 0, using 0 bytes of memory
291
+
292
+
293
+ Neighbhor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd NeighborName
294
+ ----------- --- ---- --------- --------- -------- ----- ------ --------- -------------- --------------
295
+
296
+ Total number of neighbors 0
297
+ """
298
+
299
+ SHOW_BGP_SUMMARY_ALL_V4_NO_EXT_NEIGHBORS = """
300
+ IPv4 Unicast Summary:
301
+ asic0: BGP router identifier 192.0.0.6, local AS number 65100 vrf-id 0
302
+ BGP table version 59923
303
+ asic1: BGP router identifier 192.0.0.8, local AS number 65100 vrf-id 0
304
+ BGP table version 64918
305
+ RIB entries 202298, using 37222832 bytes of memory
306
+ Peers 6, using 4444848 KiB of memory
307
+ Peer groups 4, using 256 bytes of memory
308
+
309
+
310
+ Neighbhor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd NeighborName
311
+ ----------- --- ----- --------- --------- -------- ----- ------ --------- -------------- ----------------------
312
+ 3.3.3.1 4 65100 277 9 0 0 0 00:00:14 33798 str2-sonic-lc1-1-ASIC0
313
+ 3.3.3.1 4 65100 280 14 0 0 0 00:00:22 33798 str2-sonic-lc1-1-ASIC1
314
+ 3.3.3.2 4 65100 277 9 0 0 0 00:00:14 33798 str2-sonic-lc2-1-ASIC0
315
+ 3.3.3.2 4 65100 280 14 0 0 0 00:00:22 33798 str2-sonic-lc3-1-ASIC0
316
+ 3.3.3.6 4 65100 14 14 0 0 0 00:00:23 4 str2-sonic-lc3-1-ASIC1
317
+ 3.3.3.8 4 65100 12 10 0 0 0 00:00:15 4 str2-sonic-lc1-1-ASIC1
318
+
319
+ Total number of neighbors 6
320
+ """
321
+
280
322
281
323
class TestBgpCommandsSingleAsic (object ):
282
324
@classmethod
@@ -430,6 +472,7 @@ def teardown_class(cls):
430
472
dbconnector .load_database_config ()
431
473
432
474
475
+
433
476
class TestBgpCommandsMultiAsic (object ):
434
477
@classmethod
435
478
def setup_class (cls ):
@@ -439,6 +482,8 @@ def setup_class(cls):
439
482
from .mock_tables import dbconnector
440
483
dbconnector .load_namespace_config ()
441
484
485
+
486
+
442
487
@pytest .mark .parametrize ('setup_multi_asic_bgp_instance' ,
443
488
['show_bgp_summary_no_neigh' ], indirect = ['setup_multi_asic_bgp_instance' ])
444
489
def test_bgp_summary_multi_asic_no_v4_neigh (
@@ -453,6 +498,7 @@ def test_bgp_summary_multi_asic_no_v4_neigh(
453
498
assert result .exit_code == 0
454
499
assert result .output == show_error_no_v4_neighbor_multi_asic
455
500
501
+
456
502
@pytest .mark .parametrize ('setup_multi_asic_bgp_instance' ,
457
503
['show_bgp_summary_no_neigh' ], indirect = ['setup_multi_asic_bgp_instance' ])
458
504
def test_bgp_summary_multi_asic_no_v6_neigh (
@@ -467,7 +513,39 @@ def test_bgp_summary_multi_asic_no_v6_neigh(
467
513
assert result .exit_code == 0
468
514
assert result .output == show_error_no_v6_neighbor_multi_asic
469
515
470
- @classmethod
516
+
517
+ @patch .object (bgp_util , 'get_external_bgp_neighbors_dict' , mock .MagicMock (return_value = {}))
518
+ @patch .object (multi_asic .MultiAsic , 'get_display_option' , mock .MagicMock (return_value = constants .DISPLAY_EXTERNAL ))
519
+ @pytest .mark .parametrize ('setup_multi_asic_bgp_instance' ,
520
+ ['show_bgp_summary_no_ext_neigh_on_all_asic' ], indirect = ['setup_multi_asic_bgp_instance' ])
521
+ @patch .object (device_info , 'is_chassis' , mock .MagicMock (return_value = True ))
522
+ def test_bgp_summary_multi_asic_no_external_neighbor (
523
+ self ,
524
+ setup_bgp_commands ,
525
+ setup_multi_asic_bgp_instance ):
526
+ show = setup_bgp_commands
527
+ runner = CliRunner ()
528
+ result = runner .invoke (
529
+ show .cli .commands ["ip" ].commands ["bgp" ].commands ["summary" ], [])
530
+ print ("{}" .format (result .output ))
531
+ assert result .exit_code == 0
532
+ assert result .output == SHOW_BGP_SUMMARY_V4_NO_EXT_NEIGHBORS
533
+
534
+
535
+ @pytest .mark .parametrize ('setup_multi_asic_bgp_instance' ,
536
+ ['show_bgp_summary_no_ext_neigh_on_all_asic' ], indirect = ['setup_multi_asic_bgp_instance' ])
537
+ def test_bgp_summary_multi_asic_display_with_no_external_neighbor (
538
+ self ,
539
+ setup_bgp_commands ,
540
+ setup_multi_asic_bgp_instance ):
541
+ show = setup_bgp_commands
542
+ runner = CliRunner ()
543
+ result = runner .invoke (
544
+ show .cli .commands ["ip" ].commands ["bgp" ].commands ["summary" ], ["-dall" ])
545
+ print ("{}" .format (result .output ))
546
+ assert result .exit_code == 0
547
+ assert result .output == SHOW_BGP_SUMMARY_ALL_V4_NO_EXT_NEIGHBORS
548
+
471
549
def teardown_class (cls ):
472
550
print ("TEARDOWN" )
473
551
from .mock_tables import mock_single_asic
0 commit comments