Skip to content

Commit 0e0478b

Browse files
authored
Unify the number format in the ourput of portstat and pfcstat in all cases (sonic-net#1795)
#### What I did backport sonic-net#1755 to 202012 branch #### How I did it Add a new function format_number_with_comma to format the packet numbers with comma, this function will be called in case ns_diff is not applicable. Update the unitest to cover this new change. #### How to verify it execute portstat and pfcstat to check the output whether the number format is expected.
1 parent 2d1e00e commit 0e0478b

File tree

9 files changed

+158
-121
lines changed

9 files changed

+158
-121
lines changed

scripts/pfcstat

+17-9
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ from natsort import natsorted
1818
from tabulate import tabulate
1919

2020
from sonic_py_common.multi_asic import get_external_ports
21-
from utilities_common.netstat import ns_diff, STATUS_NA
21+
from utilities_common.netstat import ns_diff, STATUS_NA, format_number_with_comma
2222
from utilities_common import multi_asic as multi_asic_util
2323
from utilities_common import constants
2424

@@ -141,10 +141,14 @@ class Pfcstat(object):
141141
if key == 'time':
142142
continue
143143
table.append((key,
144-
data.pfc0, data.pfc1,
145-
data.pfc2, data.pfc3,
146-
data.pfc4, data.pfc5,
147-
data.pfc6, data.pfc7))
144+
format_number_with_comma(data.pfc0),
145+
format_number_with_comma(data.pfc1),
146+
format_number_with_comma(data.pfc2),
147+
format_number_with_comma(data.pfc3),
148+
format_number_with_comma(data.pfc4),
149+
format_number_with_comma(data.pfc5),
150+
format_number_with_comma(data.pfc6),
151+
format_number_with_comma(data.pfc7)))
148152

149153
if rx:
150154
print(tabulate(table, header_Rx, tablefmt='simple', stralign='right'))
@@ -176,10 +180,14 @@ class Pfcstat(object):
176180
ns_diff(cntr.pfc7, old_cntr.pfc7)))
177181
else:
178182
table.append((key,
179-
cntr.pfc0, cntr.pfc1,
180-
cntr.pfc2, cntr.pfc3,
181-
cntr.pfc4, cntr.pfc5,
182-
cntr.pfc6, cntr.pfc7))
183+
format_number_with_comma(cntr.pfc0),
184+
format_number_with_comma(cntr.pfc1),
185+
format_number_with_comma(cntr.pfc2),
186+
format_number_with_comma(cntr.pfc3),
187+
format_number_with_comma(cntr.pfc4),
188+
format_number_with_comma(cntr.pfc5),
189+
format_number_with_comma(cntr.pfc6),
190+
format_number_with_comma(cntr.pfc7)))
183191

184192
if rx:
185193
print(tabulate(table, header_Rx, tablefmt='simple', stralign='right'))

scripts/portstat

+48-29
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ from utilities_common import constants
2323
from utilities_common.intf_filter import parse_interface_in_filter
2424
import utilities_common.multi_asic as multi_asic_util
2525
from utilities_common.netstat import (ns_brate, ns_diff, ns_prate, ns_util,
26-
table_as_json)
26+
table_as_json, format_number_with_comma)
2727

2828
# mock the redis for unit test purposes #
2929
try:
@@ -40,6 +40,7 @@ try:
4040
except KeyError:
4141
pass
4242

43+
4344
PORT_RATE = 40
4445

4546
"""
@@ -237,27 +238,45 @@ class Portstat(object):
237238
if print_all:
238239
header = header_all
239240
table.append((key, self.get_port_state(key),
240-
data.rx_ok, STATUS_NA, STATUS_NA, STATUS_NA, data.rx_err,
241-
data.rx_drop, data.rx_ovr,
242-
data.tx_ok, STATUS_NA, STATUS_NA, STATUS_NA, data.tx_err,
243-
data.tx_drop, data.tx_ovr))
241+
format_number_with_comma(data.rx_ok),
242+
STATUS_NA, STATUS_NA, STATUS_NA,
243+
format_number_with_comma(data.rx_err),
244+
format_number_with_comma(data.rx_drop),
245+
format_number_with_comma(data.rx_ovr),
246+
format_number_with_comma(data.tx_ok),
247+
STATUS_NA, STATUS_NA, STATUS_NA,
248+
format_number_with_comma(data.tx_err),
249+
format_number_with_comma(data.tx_drop),
250+
format_number_with_comma(data.tx_ovr)))
244251
elif errors_only:
245252
header = header_errors_only
246253
table.append((key, self.get_port_state(key),
247-
data.rx_err, data.rx_drop, data.rx_ovr,
248-
data.tx_err, data.tx_drop, data.tx_ovr))
254+
format_number_with_comma(data.rx_err),
255+
format_number_with_comma(data.rx_drop),
256+
format_number_with_comma(data.rx_ovr),
257+
format_number_with_comma(data.tx_err),
258+
format_number_with_comma(data.tx_drop),
259+
format_number_with_comma(data.tx_ovr)))
249260
elif rates_only:
250261
header = header_rates_only
251262
table.append((key, self.get_port_state(key),
252-
data.rx_ok, STATUS_NA, STATUS_NA, STATUS_NA,
253-
data.tx_ok, STATUS_NA, STATUS_NA, STATUS_NA))
263+
format_number_with_comma(data.rx_ok),
264+
STATUS_NA, STATUS_NA, STATUS_NA,
265+
format_number_with_comma(data.tx_ok),
266+
STATUS_NA, STATUS_NA, STATUS_NA))
254267
else:
255268
header = header_std
256269
table.append((key, self.get_port_state(key),
257-
data.rx_ok, STATUS_NA, STATUS_NA, data.rx_err,
258-
data.rx_drop, data.rx_ovr,
259-
data.tx_ok, STATUS_NA, STATUS_NA, data.tx_err,
260-
data.tx_drop, data.tx_ovr))
270+
format_number_with_comma(data.rx_ok),
271+
STATUS_NA, STATUS_NA,
272+
format_number_with_comma(data.rx_err),
273+
format_number_with_comma(data.rx_drop),
274+
format_number_with_comma(data.rx_ovr),
275+
format_number_with_comma(data.tx_ok),
276+
STATUS_NA, STATUS_NA,
277+
format_number_with_comma(data.tx_err),
278+
format_number_with_comma(data.tx_drop),
279+
format_number_with_comma(data.tx_ovr)))
261280

262281
if use_json:
263282
print(table_as_json(table, header))
@@ -370,20 +389,20 @@ class Portstat(object):
370389
ns_diff(cntr.tx_ovr, old_cntr.tx_ovr)))
371390
else:
372391
table.append((key, self.get_port_state(key),
373-
cntr.rx_ok,
392+
format_number_with_comma(cntr.rx_ok),
374393
STATUS_NA,
375394
STATUS_NA,
376395
STATUS_NA,
377-
cntr.rx_err,
378-
cntr.rx_drop,
379-
cntr.rx_ovr,
380-
cntr.tx_ok,
396+
format_number_with_comma(cntr.rx_err),
397+
format_number_with_comma(cntr.rx_drop),
398+
format_number_with_comma(cntr.rx_ovr),
399+
format_number_with_comma(cntr.tx_ok),
381400
STATUS_NA,
382401
STATUS_NA,
383402
STATUS_NA,
384-
cntr.tx_err,
385-
cntr.tx_drop,
386-
cntr.tx_ovr))
403+
format_number_with_comma(cntr.tx_err),
404+
format_number_with_comma(cntr.tx_drop),
405+
format_number_with_comma(cntr.tx_ovr)))
387406
elif errors_only:
388407
header = header_errors_only
389408
table.append((key, self.get_port_state(key),
@@ -422,18 +441,18 @@ class Portstat(object):
422441
ns_diff(cntr.tx_ovr, old_cntr.tx_ovr)))
423442
else:
424443
table.append((key, self.get_port_state(key),
425-
cntr.rx_ok,
444+
format_number_with_comma(cntr.rx_ok),
426445
STATUS_NA,
427446
STATUS_NA,
428-
cntr.rx_err,
429-
cntr.rx_drop,
430-
cntr.rx_ovr,
431-
cntr.tx_ok,
447+
format_number_with_comma(cntr.rx_err),
448+
format_number_with_comma(cntr.rx_drop),
449+
format_number_with_comma(cntr.rx_ovr),
450+
format_number_with_comma(cntr.tx_ok),
432451
STATUS_NA,
433452
STATUS_NA,
434-
cntr.tx_err,
435-
cntr.tx_drop,
436-
cntr.tx_ovr))
453+
format_number_with_comma(cntr.tx_err),
454+
format_number_with_comma(cntr.tx_drop),
455+
format_number_with_comma(cntr.tx_ovr)))
437456

438457
if use_json:
439458
print(table_as_json(table, header))

tests/mock_tables/asic0/counters_db.json

+8-8
Original file line numberDiff line numberDiff line change
@@ -1474,15 +1474,15 @@
14741474
"SAI_PORT_STAT_IF_IN_DISCARDS": "100",
14751475
"SAI_PORT_STAT_IN_DROP_REASON_RANGE_BASE": "80",
14761476
"SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS": "20",
1477-
"SAI_PORT_STAT_PFC_0_RX_PKTS": "200",
1477+
"SAI_PORT_STAT_PFC_0_RX_PKTS": "1200",
14781478
"SAI_PORT_STAT_PFC_1_RX_PKTS": "201",
14791479
"SAI_PORT_STAT_PFC_2_RX_PKTS": "202",
14801480
"SAI_PORT_STAT_PFC_3_RX_PKTS": "203",
14811481
"SAI_PORT_STAT_PFC_4_RX_PKTS": "204",
14821482
"SAI_PORT_STAT_PFC_5_RX_PKTS": "205",
14831483
"SAI_PORT_STAT_PFC_6_RX_PKTS": "206",
14841484
"SAI_PORT_STAT_PFC_7_RX_PKTS": "207",
1485-
"SAI_PORT_STAT_PFC_0_TX_PKTS": "210",
1485+
"SAI_PORT_STAT_PFC_0_TX_PKTS": "1210",
14861486
"SAI_PORT_STAT_PFC_1_TX_PKTS": "211",
14871487
"SAI_PORT_STAT_PFC_2_TX_PKTS": "212",
14881488
"SAI_PORT_STAT_PFC_3_TX_PKTS": "213",
@@ -1502,15 +1502,15 @@
15021502
"SAI_PORT_STAT_IF_IN_DISCARDS": "1000",
15031503
"SAI_PORT_STAT_IN_DROP_REASON_RANGE_BASE": "800",
15041504
"SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS": "100",
1505-
"SAI_PORT_STAT_PFC_0_RX_PKTS": "400",
1505+
"SAI_PORT_STAT_PFC_0_RX_PKTS": "1400",
15061506
"SAI_PORT_STAT_PFC_1_RX_PKTS": "401",
15071507
"SAI_PORT_STAT_PFC_2_RX_PKTS": "402",
15081508
"SAI_PORT_STAT_PFC_3_RX_PKTS": "403",
15091509
"SAI_PORT_STAT_PFC_4_RX_PKTS": "404",
15101510
"SAI_PORT_STAT_PFC_5_RX_PKTS": "405",
15111511
"SAI_PORT_STAT_PFC_6_RX_PKTS": "406",
15121512
"SAI_PORT_STAT_PFC_7_RX_PKTS": "407",
1513-
"SAI_PORT_STAT_PFC_0_TX_PKTS": "410",
1513+
"SAI_PORT_STAT_PFC_0_TX_PKTS": "1410",
15141514
"SAI_PORT_STAT_PFC_1_TX_PKTS": "411",
15151515
"SAI_PORT_STAT_PFC_2_TX_PKTS": "412",
15161516
"SAI_PORT_STAT_PFC_3_TX_PKTS": "413",
@@ -1530,15 +1530,15 @@
15301530
"SAI_PORT_STAT_IF_IN_DISCARDS": "1000",
15311531
"SAI_PORT_STAT_IN_DROP_REASON_RANGE_BASE": "800",
15321532
"SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS": "100",
1533-
"SAI_PORT_STAT_PFC_0_RX_PKTS": "600",
1533+
"SAI_PORT_STAT_PFC_0_RX_PKTS": "1600",
15341534
"SAI_PORT_STAT_PFC_1_RX_PKTS": "601",
15351535
"SAI_PORT_STAT_PFC_2_RX_PKTS": "602",
15361536
"SAI_PORT_STAT_PFC_3_RX_PKTS": "603",
15371537
"SAI_PORT_STAT_PFC_4_RX_PKTS": "604",
15381538
"SAI_PORT_STAT_PFC_5_RX_PKTS": "605",
15391539
"SAI_PORT_STAT_PFC_6_RX_PKTS": "606",
15401540
"SAI_PORT_STAT_PFC_7_RX_PKTS": "607",
1541-
"SAI_PORT_STAT_PFC_0_TX_PKTS": "610",
1541+
"SAI_PORT_STAT_PFC_0_TX_PKTS": "1610",
15421542
"SAI_PORT_STAT_PFC_1_TX_PKTS": "611",
15431543
"SAI_PORT_STAT_PFC_2_TX_PKTS": "612",
15441544
"SAI_PORT_STAT_PFC_3_TX_PKTS": "613",
@@ -1558,15 +1558,15 @@
15581558
"SAI_PORT_STAT_IF_IN_DISCARDS": "1000",
15591559
"SAI_PORT_STAT_IN_DROP_REASON_RANGE_BASE": "800",
15601560
"SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS": "100",
1561-
"SAI_PORT_STAT_PFC_0_RX_PKTS": "800",
1561+
"SAI_PORT_STAT_PFC_0_RX_PKTS": "1800",
15621562
"SAI_PORT_STAT_PFC_1_RX_PKTS": "801",
15631563
"SAI_PORT_STAT_PFC_2_RX_PKTS": "802",
15641564
"SAI_PORT_STAT_PFC_3_RX_PKTS": "803",
15651565
"SAI_PORT_STAT_PFC_4_RX_PKTS": "804",
15661566
"SAI_PORT_STAT_PFC_5_RX_PKTS": "805",
15671567
"SAI_PORT_STAT_PFC_6_RX_PKTS": "806",
15681568
"SAI_PORT_STAT_PFC_7_RX_PKTS": "807",
1569-
"SAI_PORT_STAT_PFC_0_TX_PKTS": "810",
1569+
"SAI_PORT_STAT_PFC_0_TX_PKTS": "1810",
15701570
"SAI_PORT_STAT_PFC_1_TX_PKTS": "811",
15711571
"SAI_PORT_STAT_PFC_2_TX_PKTS": "812",
15721572
"SAI_PORT_STAT_PFC_3_TX_PKTS": "813",

tests/mock_tables/asic1/counters_db.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -130,15 +130,15 @@
130130
"SAI_PORT_STAT_IF_IN_DISCARDS": "100",
131131
"SAI_PORT_STAT_IN_DROP_REASON_RANGE_BASE": "80",
132132
"SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS": "20",
133-
"SAI_PORT_STAT_PFC_0_RX_PKTS": "900",
133+
"SAI_PORT_STAT_PFC_0_RX_PKTS": "1900",
134134
"SAI_PORT_STAT_PFC_1_RX_PKTS": "901",
135135
"SAI_PORT_STAT_PFC_2_RX_PKTS": "902",
136136
"SAI_PORT_STAT_PFC_3_RX_PKTS": "903",
137137
"SAI_PORT_STAT_PFC_4_RX_PKTS": "904",
138138
"SAI_PORT_STAT_PFC_5_RX_PKTS": "905",
139139
"SAI_PORT_STAT_PFC_6_RX_PKTS": "906",
140140
"SAI_PORT_STAT_PFC_7_RX_PKTS": "907",
141-
"SAI_PORT_STAT_PFC_0_TX_PKTS": "910",
141+
"SAI_PORT_STAT_PFC_0_TX_PKTS": "1910",
142142
"SAI_PORT_STAT_PFC_1_TX_PKTS": "911",
143143
"SAI_PORT_STAT_PFC_2_TX_PKTS": "912",
144144
"SAI_PORT_STAT_PFC_3_TX_PKTS": "913",
@@ -158,15 +158,15 @@
158158
"SAI_PORT_STAT_IF_IN_DISCARDS": "1000",
159159
"SAI_PORT_STAT_IN_DROP_REASON_RANGE_BASE": "800",
160160
"SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS": "100",
161-
"SAI_PORT_STAT_PFC_0_RX_PKTS": "100",
161+
"SAI_PORT_STAT_PFC_0_RX_PKTS": "1100",
162162
"SAI_PORT_STAT_PFC_1_RX_PKTS": "101",
163163
"SAI_PORT_STAT_PFC_2_RX_PKTS": "102",
164164
"SAI_PORT_STAT_PFC_3_RX_PKTS": "103",
165165
"SAI_PORT_STAT_PFC_4_RX_PKTS": "104",
166166
"SAI_PORT_STAT_PFC_5_RX_PKTS": "105",
167167
"SAI_PORT_STAT_PFC_6_RX_PKTS": "106",
168168
"SAI_PORT_STAT_PFC_7_RX_PKTS": "107",
169-
"SAI_PORT_STAT_PFC_0_TX_PKTS": "110",
169+
"SAI_PORT_STAT_PFC_0_TX_PKTS": "1110",
170170
"SAI_PORT_STAT_PFC_1_TX_PKTS": "111",
171171
"SAI_PORT_STAT_PFC_2_TX_PKTS": "112",
172172
"SAI_PORT_STAT_PFC_3_TX_PKTS": "113",

tests/mock_tables/asic2/counters_db.json

+8-8
Original file line numberDiff line numberDiff line change
@@ -1474,15 +1474,15 @@
14741474
"SAI_PORT_STAT_IF_IN_DISCARDS": "100",
14751475
"SAI_PORT_STAT_IN_DROP_REASON_RANGE_BASE": "80",
14761476
"SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS": "20",
1477-
"SAI_PORT_STAT_PFC_0_RX_PKTS": "200",
1477+
"SAI_PORT_STAT_PFC_0_RX_PKTS": "1200",
14781478
"SAI_PORT_STAT_PFC_1_RX_PKTS": "201",
14791479
"SAI_PORT_STAT_PFC_2_RX_PKTS": "202",
14801480
"SAI_PORT_STAT_PFC_3_RX_PKTS": "203",
14811481
"SAI_PORT_STAT_PFC_4_RX_PKTS": "204",
14821482
"SAI_PORT_STAT_PFC_5_RX_PKTS": "205",
14831483
"SAI_PORT_STAT_PFC_6_RX_PKTS": "206",
14841484
"SAI_PORT_STAT_PFC_7_RX_PKTS": "207",
1485-
"SAI_PORT_STAT_PFC_0_TX_PKTS": "210",
1485+
"SAI_PORT_STAT_PFC_0_TX_PKTS": "1210",
14861486
"SAI_PORT_STAT_PFC_1_TX_PKTS": "211",
14871487
"SAI_PORT_STAT_PFC_2_TX_PKTS": "212",
14881488
"SAI_PORT_STAT_PFC_3_TX_PKTS": "213",
@@ -1502,15 +1502,15 @@
15021502
"SAI_PORT_STAT_IF_IN_DISCARDS": "1000",
15031503
"SAI_PORT_STAT_IN_DROP_REASON_RANGE_BASE": "800",
15041504
"SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS": "100",
1505-
"SAI_PORT_STAT_PFC_0_RX_PKTS": "400",
1505+
"SAI_PORT_STAT_PFC_0_RX_PKTS": "1400",
15061506
"SAI_PORT_STAT_PFC_1_RX_PKTS": "401",
15071507
"SAI_PORT_STAT_PFC_2_RX_PKTS": "402",
15081508
"SAI_PORT_STAT_PFC_3_RX_PKTS": "403",
15091509
"SAI_PORT_STAT_PFC_4_RX_PKTS": "404",
15101510
"SAI_PORT_STAT_PFC_5_RX_PKTS": "405",
15111511
"SAI_PORT_STAT_PFC_6_RX_PKTS": "406",
15121512
"SAI_PORT_STAT_PFC_7_RX_PKTS": "407",
1513-
"SAI_PORT_STAT_PFC_0_TX_PKTS": "410",
1513+
"SAI_PORT_STAT_PFC_0_TX_PKTS": "1410",
15141514
"SAI_PORT_STAT_PFC_1_TX_PKTS": "411",
15151515
"SAI_PORT_STAT_PFC_2_TX_PKTS": "412",
15161516
"SAI_PORT_STAT_PFC_3_TX_PKTS": "413",
@@ -1530,15 +1530,15 @@
15301530
"SAI_PORT_STAT_IF_IN_DISCARDS": "1000",
15311531
"SAI_PORT_STAT_IN_DROP_REASON_RANGE_BASE": "800",
15321532
"SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS": "100",
1533-
"SAI_PORT_STAT_PFC_0_RX_PKTS": "600",
1533+
"SAI_PORT_STAT_PFC_0_RX_PKTS": "1600",
15341534
"SAI_PORT_STAT_PFC_1_RX_PKTS": "601",
15351535
"SAI_PORT_STAT_PFC_2_RX_PKTS": "602",
15361536
"SAI_PORT_STAT_PFC_3_RX_PKTS": "603",
15371537
"SAI_PORT_STAT_PFC_4_RX_PKTS": "604",
15381538
"SAI_PORT_STAT_PFC_5_RX_PKTS": "605",
15391539
"SAI_PORT_STAT_PFC_6_RX_PKTS": "606",
15401540
"SAI_PORT_STAT_PFC_7_RX_PKTS": "607",
1541-
"SAI_PORT_STAT_PFC_0_TX_PKTS": "610",
1541+
"SAI_PORT_STAT_PFC_0_TX_PKTS": "1610",
15421542
"SAI_PORT_STAT_PFC_1_TX_PKTS": "611",
15431543
"SAI_PORT_STAT_PFC_2_TX_PKTS": "612",
15441544
"SAI_PORT_STAT_PFC_3_TX_PKTS": "613",
@@ -1558,15 +1558,15 @@
15581558
"SAI_PORT_STAT_IF_IN_DISCARDS": "1000",
15591559
"SAI_PORT_STAT_IN_DROP_REASON_RANGE_BASE": "800",
15601560
"SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS": "100",
1561-
"SAI_PORT_STAT_PFC_0_RX_PKTS": "800",
1561+
"SAI_PORT_STAT_PFC_0_RX_PKTS": "1800",
15621562
"SAI_PORT_STAT_PFC_1_RX_PKTS": "801",
15631563
"SAI_PORT_STAT_PFC_2_RX_PKTS": "802",
15641564
"SAI_PORT_STAT_PFC_3_RX_PKTS": "803",
15651565
"SAI_PORT_STAT_PFC_4_RX_PKTS": "804",
15661566
"SAI_PORT_STAT_PFC_5_RX_PKTS": "805",
15671567
"SAI_PORT_STAT_PFC_6_RX_PKTS": "806",
15681568
"SAI_PORT_STAT_PFC_7_RX_PKTS": "807",
1569-
"SAI_PORT_STAT_PFC_0_TX_PKTS": "810",
1569+
"SAI_PORT_STAT_PFC_0_TX_PKTS": "1810",
15701570
"SAI_PORT_STAT_PFC_1_TX_PKTS": "811",
15711571
"SAI_PORT_STAT_PFC_2_TX_PKTS": "812",
15721572
"SAI_PORT_STAT_PFC_3_TX_PKTS": "813",

0 commit comments

Comments
 (0)