Skip to content

Commit cada3a4

Browse files
authored
refactor: enhance show bfd summary command (#4242) (#282)
Update show bfd summary to aggregate BFD sessions across all ASIC namespaces when no -n <namespace> is provided. Extend multi-ASIC BFD tests and expected output for the all-ASIC summary. Signed-off-by: Chenyang Wang <chenyangw233@gmail.com>
1 parent a184a31 commit cada3a4

4 files changed

Lines changed: 53 additions & 7 deletions

File tree

show/main.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2260,22 +2260,29 @@ def summary(db, namespace):
22602260
"TX Interval", "RX Interval", "Multiplier", "Multihop", "Local Discriminator"]
22612261

22622262
if namespace is None:
2263-
namespace = constants.DEFAULT_NAMESPACE
2264-
2265-
bfd_keys = db.db_clients[namespace].keys(db.db.STATE_DB, "BFD_SESSION_TABLE|*")
2266-
2267-
click.echo("Total number of BFD sessions: {}".format(0 if bfd_keys is None else len(bfd_keys)))
2263+
if multi_asic.is_multi_asic():
2264+
namespace_list = multi_asic.get_namespace_list()
2265+
else:
2266+
namespace_list = [constants.DEFAULT_NAMESPACE]
2267+
else:
2268+
namespace_list = [namespace]
22682269

2270+
total_bfd_sessions = 0
22692271
bfd_body = []
2270-
if bfd_keys is not None:
2272+
for ns in namespace_list:
2273+
bfd_keys = db.db_clients[ns].keys(db.db.STATE_DB, "BFD_SESSION_TABLE|*")
2274+
if bfd_keys is None:
2275+
continue
2276+
total_bfd_sessions += len(bfd_keys)
22712277
for key in bfd_keys:
22722278
key_values = key.split('|')
2273-
values = db.db_clients[namespace].get_all(db.db.STATE_DB, key)
2279+
values = db.db_clients[ns].get_all(db.db.STATE_DB, key)
22742280
if "local_discriminator" not in values.keys():
22752281
values["local_discriminator"] = "NA"
22762282
bfd_body.append([key_values[3], key_values[2], key_values[1], values["state"], values["type"], values["local_addr"],
22772283
values["tx_interval"], values["rx_interval"], values["multiplier"], values["multihop"], values["local_discriminator"]])
22782284

2285+
click.echo("Total number of BFD sessions: {}".format(total_bfd_sessions))
22792286
click.echo(tabulate(bfd_body, bfd_headers))
22802287

22812288

tests/bfd_input/bfd_masic_test_vectors.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,18 @@
88
10.0.1.1 default VrfRed UP async_active 10.0.0.1 400 500 5 false NA
99
""" # noqa: E501
1010

11+
expected_show_bfd_summary_all_output = """\
12+
Total number of BFD sessions: 6
13+
Peer Addr Interface Vrf State Type Local Addr TX Interval RX Interval Multiplier Multihop Local Discriminator
14+
----------- ----------- ------- ------- ------------ ------------ ------------- ------------- ------------ ---------- ---------------------
15+
10.0.1.1 default default DOWN async_active 10.0.0.1 300 500 3 true NA
16+
10.0.2.1 Ethernet12 default UP async_active 10.0.0.1 200 600 3 false 88
17+
2000::10:1 default default UP async_active 2000::1 100 700 3 false NA
18+
10.0.1.1 default VrfRed UP async_active 10.0.0.1 400 500 5 false NA
19+
10.0.3.1 Ethernet36 default DOWN async_active 10.0.0.2 150 450 3 true 99
20+
2000::20:1 default VrfBlue UP async_active 2000::2 250 750 4 false NA
21+
""" # noqa: E501
22+
1123
expected_show_bfd_peer_output = """\
1224
Total number of BFD sessions for peer IP 10.0.1.1: 2
1325
Peer Addr Interface Vrf State Type Local Addr TX Interval RX Interval Multiplier Multihop Local Discriminator
@@ -22,6 +34,11 @@
2234
"args": ["-n", "asic0"],
2335
"expected_output": expected_show_bfd_summary_output,
2436
},
37+
"show_bfd_summary_masic_all": {
38+
"cmd": "summary",
39+
"args": [],
40+
"expected_output": expected_show_bfd_summary_all_output,
41+
},
2542
"show_bfd_peer_masic_asic0": {
2643
"cmd": "peer",
2744
"args": ["10.0.1.1", "-n", "asic0"],

tests/mock_tables/asic1/state_db.json

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,5 +280,24 @@
280280
},
281281
"PORT_CAPACITY_TABLE|PORT_CAPACITY_DATA" : {
282282
"capacity": "80000"
283+
},
284+
"BFD_SESSION_TABLE|default|Ethernet36|10.0.3.1": {
285+
"state": "DOWN",
286+
"type": "async_active",
287+
"local_addr" : "10.0.0.2",
288+
"tx_interval" :"150",
289+
"rx_interval" : "450",
290+
"multiplier" : "3",
291+
"multihop": "true",
292+
"local_discriminator": "99"
293+
},
294+
"BFD_SESSION_TABLE|VrfBlue|default|2000::20:1": {
295+
"state": "UP",
296+
"type": "async_active",
297+
"local_addr" : "2000::2",
298+
"tx_interval" :"250",
299+
"rx_interval" : "750",
300+
"multiplier" : "4",
301+
"multihop": "false"
283302
}
284303
}

tests/multi_asic_show_bfd_test.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ def setup_class(cls):
3232
def test_show_bfd_summary_masic_asic0(self):
3333
self.command_executor(test_data["show_bfd_summary_masic_asic0"])
3434

35+
def test_show_bfd_summary_masic_all(self):
36+
self.command_executor(test_data["show_bfd_summary_masic_all"])
37+
3538
def test_show_bfd_peer_masic_asic0(self):
3639
self.command_executor(test_data["show_bfd_peer_masic_asic0"])
3740

0 commit comments

Comments
 (0)