Skip to content

Commit 697aae3

Browse files
authored
Fix speed parsing when speed is NOT fetched from APPL_DB (#2138)
- What I did In PR #2110 introduced an enhancement to support display port speed with different unit when it is RJ45 ports, however, it only covered the case that the speed was fetched from APPL_DB. Recently there is a change to fetch the speed from STATE_DB in some cases, the same logic also needs to be applied in this case. - How I did it Rename appl_db_port_speed_parse to a more generic name port_speed_parse. Call port_speed_parse when speed is fetched from STATE_DB. In UT test, add port status entries to mocked STATE_DB to cover the logic that get port speed from STATE_DB. - How to verify it UT and test it on platform support RJ45 ports Signed-off-by: Kebo Liu <[email protected]>
1 parent 22a388b commit 697aae3

File tree

2 files changed

+30
-8
lines changed

2 files changed

+30
-8
lines changed

scripts/intfutil

+9-8
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,9 @@ def appl_db_sub_intf_keys_get(appl_db, sub_intf_list, sub_intf_name):
132132
return appl_db_sub_intf_keys
133133

134134

135-
def appl_db_port_speed_parse(in_speed, optics_type):
135+
def port_speed_parse(in_speed, optics_type):
136136
"""
137-
Parse the speed received from application DB
137+
Parse the speed received from DB
138138
"""
139139
# fetched speed is in megabits per second
140140
speed = int(in_speed)
@@ -155,13 +155,13 @@ def appl_db_port_status_get(appl_db, intf_name, status_type):
155155
return "N/A"
156156
if status_type == PORT_SPEED and status != "N/A":
157157
optics_type = state_db_port_optics_get(appl_db, intf_name, PORT_OPTICS_TYPE)
158-
status = appl_db_port_speed_parse(status, optics_type)
158+
status = port_speed_parse(status, optics_type)
159159
elif status_type == PORT_ADV_SPEEDS and status != "N/A" and status != "all":
160160
optics_type = state_db_port_optics_get(appl_db, intf_name, PORT_OPTICS_TYPE)
161161
speed_list = status.split(',')
162162
new_speed_list = []
163163
for s in natsorted(speed_list):
164-
new_speed_list.append(appl_db_port_speed_parse(s, optics_type))
164+
new_speed_list.append(port_speed_parse(s, optics_type))
165165
status = ','.join(new_speed_list)
166166
return status
167167

@@ -173,8 +173,9 @@ def port_oper_speed_get(db, intf_name):
173173
oper_status = db.get(db.APPL_DB, PORT_STATUS_TABLE_PREFIX + intf_name, PORT_OPER_STATUS)
174174
if oper_speed is None or oper_speed == "N/A" or oper_status != "up":
175175
return appl_db_port_status_get(db, intf_name, PORT_SPEED)
176-
177-
return '{}G'.format(oper_speed[:-3])
176+
else:
177+
optics_type = state_db_port_optics_get(db, intf_name, PORT_OPTICS_TYPE)
178+
return port_speed_parse(oper_speed, optics_type)
178179

179180
def port_oper_speed_get_raw(db, intf_name):
180181
"""
@@ -301,7 +302,7 @@ def po_speed_dict(po_int_dict, appl_db):
301302
po_list.append(None)
302303
else:
303304
optics_type = state_db_port_optics_get(appl_db, value[0], PORT_OPTICS_TYPE)
304-
interface_speed = appl_db_port_speed_parse(interface_speed, optics_type)
305+
interface_speed = port_speed_parse(interface_speed, optics_type)
305306
po_list.append(interface_speed)
306307
elif len(value) > 1:
307308
for intf in value:
@@ -311,7 +312,7 @@ def po_speed_dict(po_int_dict, appl_db):
311312
agg_speed_list.append(temp_speed)
312313
interface_speed = sum(agg_speed_list)
313314
interface_speed = str(interface_speed)
314-
interface_speed = appl_db_port_speed_parse(interface_speed, optics_type)
315+
interface_speed = port_speed_parse(interface_speed, optics_type)
315316
po_list.append(interface_speed)
316317
po_speed_dict = dict(po_list[i:i+2] for i in range(0, len(po_list), 2))
317318
return po_speed_dict

tests/mock_tables/state_db.json

+21
Original file line numberDiff line numberDiff line change
@@ -801,5 +801,26 @@
801801
"pck_expected_count": "840",
802802
"link_prober_unknown_start": "2022-Jan-26 03:13:05.366900",
803803
"link_prober_unknown_end": "2022-Jan-26 03:17:35.446580"
804+
},
805+
"PORT_TABLE|Ethernet16": {
806+
"state": "ok",
807+
"netdev_oper_status": "up",
808+
"admin_status": "up",
809+
"mtu": "9100",
810+
"speed": "100"
811+
},
812+
"PORT_TABLE|Ethernet36": {
813+
"state": "ok",
814+
"netdev_oper_status": "up",
815+
"admin_status": "up",
816+
"mtu": "9100",
817+
"speed": "10"
818+
},
819+
"PORT_TABLE|Ethernet24": {
820+
"state": "ok",
821+
"netdev_oper_status": "up",
822+
"admin_status": "up",
823+
"mtu": "9100",
824+
"speed": "1000"
804825
}
805826
}

0 commit comments

Comments
 (0)