hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
....@@ -57,6 +57,8 @@
5757 assert stderr == ""
5858 ports = json.loads(stdout)['port']
5959
60
+ validate_devlink_output(ports, 'flavour')
61
+
6062 for port in ports:
6163 if dev in port:
6264 if ports[port]['flavour'] == 'physical':
....@@ -218,6 +220,27 @@
218220 unsplit(port.bus_info)
219221
220222
223
+def validate_devlink_output(devlink_data, target_property=None):
224
+ """
225
+ Determine if test should be skipped by checking:
226
+ 1. devlink_data contains values
227
+ 2. The target_property exist in devlink_data
228
+ """
229
+ skip_reason = None
230
+ if any(devlink_data.values()):
231
+ if target_property:
232
+ skip_reason = "{} not found in devlink output, test skipped".format(target_property)
233
+ for key in devlink_data:
234
+ if target_property in devlink_data[key]:
235
+ skip_reason = None
236
+ else:
237
+ skip_reason = 'devlink output is empty, test skipped'
238
+
239
+ if skip_reason:
240
+ print(skip_reason)
241
+ sys.exit(KSFT_SKIP)
242
+
243
+
221244 def make_parser():
222245 parser = argparse.ArgumentParser(description='A test for port splitting.')
223246 parser.add_argument('--dev',
....@@ -238,6 +261,7 @@
238261 stdout, stderr = run_command(cmd)
239262 assert stderr == ""
240263
264
+ validate_devlink_output(json.loads(stdout))
241265 devs = json.loads(stdout)['dev']
242266 dev = list(devs.keys())[0]
243267
....@@ -249,6 +273,7 @@
249273
250274 ports = devlink_ports(dev)
251275
276
+ found_max_lanes = False
252277 for port in ports.if_names:
253278 max_lanes = get_max_lanes(port.name)
254279
....@@ -271,6 +296,11 @@
271296 split_splittable_port(port, lane, max_lanes, dev)
272297
273298 lane //= 2
299
+ found_max_lanes = True
300
+
301
+ if not found_max_lanes:
302
+ print(f"Test not started, no port of device {dev} reports max_lanes")
303
+ sys.exit(KSFT_SKIP)
274304
275305
276306 if __name__ == "__main__":