diff options
Diffstat (limited to 'tests/topotests/lib/mcast-tester.py')
| -rwxr-xr-x | tests/topotests/lib/mcast-tester.py | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/tests/topotests/lib/mcast-tester.py b/tests/topotests/lib/mcast-tester.py index 3645eef25e..ecb99dc82b 100755 --- a/tests/topotests/lib/mcast-tester.py +++ b/tests/topotests/lib/mcast-tester.py @@ -25,28 +25,46 @@ import time # def interface_name_to_index(name): "Gets the interface index using its name. Returns None on failure." - interfaces = json.loads(subprocess.check_output("ip -j link show", shell=True)) + try: + interfaces = json.loads(subprocess.check_output("ip -j link show", shell=True)) + except subprocess.CalledProcessError as err: + print(f"Error executing command: {err}") + return None + except json.JSONDecodeError as err: + print(f"Error decoding JSON: {err}") + return None for interface in interfaces: - if interface["ifname"] == name: - return interface["ifindex"] + if interface.get("ifname") == name: + return interface.get("ifindex") return None def interface_index_to_address(index, iptype="inet"): "Gets the interface main address using its name. Returns None on failure." - interfaces = json.loads(subprocess.check_output("ip -j addr show", shell=True)) + try: + interfaces = json.loads(subprocess.check_output("ip -j addr show", shell=True)) + except subprocess.CalledProcessError as err: + print(f"Error executing command: {err}") + return None + except json.JSONDecodeError as err: + print(f"Error decoding JSON: {err}") + return None for interface in interfaces: - if interface["ifindex"] == index: + if interface.get("ifindex") == index: break + else: + return None - for address in interface["addr_info"]: - if address["family"] == iptype: + for address in interface.get("addr_info"): + if address.get("family") == iptype: break + else: + return None - local_address = ipaddress.ip_address(address["local"]) + local_address = ipaddress.ip_address(address.get("local")) return local_address.packed |
