.. | .. |
---|
57 | 57 | assert stderr == "" |
---|
58 | 58 | ports = json.loads(stdout)['port'] |
---|
59 | 59 | |
---|
| 60 | + validate_devlink_output(ports, 'flavour') |
---|
| 61 | + |
---|
60 | 62 | for port in ports: |
---|
61 | 63 | if dev in port: |
---|
62 | 64 | if ports[port]['flavour'] == 'physical': |
---|
.. | .. |
---|
218 | 220 | unsplit(port.bus_info) |
---|
219 | 221 | |
---|
220 | 222 | |
---|
| 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 | + |
---|
221 | 244 | def make_parser(): |
---|
222 | 245 | parser = argparse.ArgumentParser(description='A test for port splitting.') |
---|
223 | 246 | parser.add_argument('--dev', |
---|
.. | .. |
---|
238 | 261 | stdout, stderr = run_command(cmd) |
---|
239 | 262 | assert stderr == "" |
---|
240 | 263 | |
---|
| 264 | + validate_devlink_output(json.loads(stdout)) |
---|
241 | 265 | devs = json.loads(stdout)['dev'] |
---|
242 | 266 | dev = list(devs.keys())[0] |
---|
243 | 267 | |
---|
.. | .. |
---|
249 | 273 | |
---|
250 | 274 | ports = devlink_ports(dev) |
---|
251 | 275 | |
---|
| 276 | + found_max_lanes = False |
---|
252 | 277 | for port in ports.if_names: |
---|
253 | 278 | max_lanes = get_max_lanes(port.name) |
---|
254 | 279 | |
---|
.. | .. |
---|
271 | 296 | split_splittable_port(port, lane, max_lanes, dev) |
---|
272 | 297 | |
---|
273 | 298 | 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) |
---|
274 | 304 | |
---|
275 | 305 | |
---|
276 | 306 | if __name__ == "__main__": |
---|