diff options
Diffstat (limited to 'tests/topotests/lib/common_check.py')
| -rw-r--r-- | tests/topotests/lib/common_check.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/tests/topotests/lib/common_check.py b/tests/topotests/lib/common_check.py new file mode 100644 index 0000000000..be3241fd20 --- /dev/null +++ b/tests/topotests/lib/common_check.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python +# SPDX-License-Identifier: ISC +# +# common_check.py +# +# Copyright 2024 6WIND S.A. + +# +import json +from lib import topotest + + +def ip_check_path_selection(router, ipaddr_str, expected, vrf_name=None): + if vrf_name: + cmdstr = f'show ip route vrf {vrf_name} {ipaddr_str} json' + else: + cmdstr = f'show ip route {ipaddr_str} json' + try: + output = json.loads(router.vtysh_cmd(cmdstr)) + except: + output = {} + + ret = topotest.json_cmp(output, expected) + if ret is None: + num_nh_expected = len(expected[ipaddr_str][0]["nexthops"]) + num_nh_observed = len(output[ipaddr_str][0]["nexthops"]) + if num_nh_expected == num_nh_observed: + return ret + return "{}, prefix {} does not have the correct number of nexthops : observed {}, expected {}".format( + router.name, ipaddr_str, num_nh_observed, num_nh_expected + ) + return ret + + +def iproute2_check_path_selection(router, ipaddr_str, expected, vrf_name=None): + if not topotest.iproute2_is_json_capable(): + return None + + if vrf_name: + cmdstr = f'ip -json route show vrf {vrf_name} {ipaddr_str}' + else: + cmdstr = f'ip -json route show {ipaddr_str}' + try: + output = json.loads(cmdstr) + except: + output = [] + + return topotest.json_cmp(output, expected) |
