| .. | .. |
|---|
| 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__": |
|---|