diff options
| author | Christian Breunig <christian@breunig.cc> | 2025-11-07 16:41:14 +0100 |
|---|---|---|
| committer | Christian Breunig <christian@breunig.cc> | 2025-11-07 16:41:14 +0100 |
| commit | 316b31e304db92d87e63321628be21f9f4cd1387 (patch) | |
| tree | 6aed31cf9f7c58a7603069e69854b3e3dc146959 /smoketest/scripts/cli | |
| parent | da679f0cf8fe048bae7d648a4f447db47032f3c0 (diff) | |
| download | vyos-1x-316b31e304db92d87e63321628be21f9f4cd1387.tar.gz vyos-1x-316b31e304db92d87e63321628be21f9f4cd1387.zip | |
smoketest: T7966: perform full regex match with ^ and $
Commit 9775bb49e ("frr: T7664: drop BASH/SED implementation in smoketest
getFRRconfig()") changed how we searched strings using a regex. In the
past we searched at the beginning of a line ^ till the end $. THis logic
was dropped in commit 9775bb49e marking some tests failing as they matched,
when they should not match.
Example: getFRRconfig('vrf red') showed output for both VRF red and red15 as
both started with "red". This has been fixed.
Diffstat (limited to 'smoketest/scripts/cli')
| -rw-r--r-- | smoketest/scripts/cli/base_vyostest_shim.py | 6 | ||||
| -rwxr-xr-x | smoketest/scripts/cli/test_policy.py | 24 | ||||
| -rwxr-xr-x | smoketest/scripts/cli/test_protocols_static.py | 17 | ||||
| -rwxr-xr-x | smoketest/scripts/cli/test_system_ip.py | 6 | ||||
| -rwxr-xr-x | smoketest/scripts/cli/test_system_ipv6.py | 2 |
5 files changed, 28 insertions, 27 deletions
diff --git a/smoketest/scripts/cli/base_vyostest_shim.py b/smoketest/scripts/cli/base_vyostest_shim.py index 1dcb18d4b..cf3324a15 100644 --- a/smoketest/scripts/cli/base_vyostest_shim.py +++ b/smoketest/scripts/cli/base_vyostest_shim.py @@ -140,12 +140,14 @@ class VyOSUnitTestSHIM: pprint.pprint(out) return out - def getFRRconfig(self, start_section:str=None, stop_section='^!', + def getFRRconfig(self, start_section:str=None, end_marker='$', stop_section='^!', start_subsection:str=None, stop_subsection='^ exit') -> str: """ Retrieve current "running configuration" from FRR start_section: search for a specific start string in the configuration + end_marker: override default "line end $" marker to match on an + "open end" string stop_section: end of the configuration start_subsection: search section under the result found by string stop_subsection: end of the subsection (usually something with "exit") @@ -158,7 +160,7 @@ class VyOSUnitTestSHIM: in_section = False for line in frr_config.splitlines(): if not in_section: - if re.match(start_section, line): + if re.match(f'^{start_section}{end_marker}', line): in_section = True extracted.append(line) else: diff --git a/smoketest/scripts/cli/test_policy.py b/smoketest/scripts/cli/test_policy.py index 5a700ddc1..ad3cc325b 100755 --- a/smoketest/scripts/cli/test_policy.py +++ b/smoketest/scripts/cli/test_policy.py @@ -123,7 +123,7 @@ class TestPolicy(VyOSUnitTestSHIM.TestCase): self.cli_commit() - config = self.getFRRconfig('access-list') + config = self.getFRRconfig('access-list', end_marker='') for acl, acl_config in acls.items(): for rule, rule_config in acl_config['rule'].items(): tmp = f'access-list {acl} seq {rule}' @@ -214,7 +214,7 @@ class TestPolicy(VyOSUnitTestSHIM.TestCase): self.cli_commit() - config = self.getFRRconfig('ipv6 access-list') + config = self.getFRRconfig('ipv6 access-list', end_marker='') for acl, acl_config in acls.items(): for rule, rule_config in acl_config['rule'].items(): tmp = f'ipv6 access-list {acl} seq {rule}' @@ -312,7 +312,7 @@ class TestPolicy(VyOSUnitTestSHIM.TestCase): self.cli_commit() - config = self.getFRRconfig('bgp as-path access-list') + config = self.getFRRconfig('bgp as-path access-list', end_marker='') for as_path, as_path_config in test_data.items(): if 'rule' not in as_path_config: continue @@ -370,7 +370,7 @@ class TestPolicy(VyOSUnitTestSHIM.TestCase): self.cli_commit() - config = self.getFRRconfig('bgp community-list') + config = self.getFRRconfig('bgp community-list', end_marker='') for comm_list, comm_list_config in test_data.items(): if 'rule' not in comm_list_config: continue @@ -428,7 +428,7 @@ class TestPolicy(VyOSUnitTestSHIM.TestCase): self.cli_commit() - config = self.getFRRconfig('bgp extcommunity-list') + config = self.getFRRconfig('bgp extcommunity-list', end_marker='') for comm_list, comm_list_config in test_data.items(): if 'rule' not in comm_list_config: continue @@ -493,7 +493,7 @@ class TestPolicy(VyOSUnitTestSHIM.TestCase): self.cli_commit() - config = self.getFRRconfig('bgp large-community-list') + config = self.getFRRconfig('bgp large-community-list', end_marker='') for comm_list, comm_list_config in test_data.items(): if 'rule' not in comm_list_config: continue @@ -571,7 +571,7 @@ class TestPolicy(VyOSUnitTestSHIM.TestCase): self.cli_commit() - config = self.getFRRconfig('ip prefix-list') + config = self.getFRRconfig('ip prefix-list', end_marker='') for prefix_list, prefix_list_config in test_data.items(): if 'rule' not in prefix_list_config: continue @@ -654,7 +654,7 @@ class TestPolicy(VyOSUnitTestSHIM.TestCase): self.cli_commit() - config = self.getFRRconfig('ipv6 prefix-list') + config = self.getFRRconfig('ipv6 prefix-list', end_marker='') for prefix_list, prefix_list_config in test_data.items(): if 'rule' not in prefix_list_config: continue @@ -705,7 +705,7 @@ class TestPolicy(VyOSUnitTestSHIM.TestCase): self.cli_commit() - config = self.getFRRconfig('ip prefix-list') + config = self.getFRRconfig('ip prefix-list', end_marker='') for rule in test_range: tmp = f'ip prefix-list {prefix_list} seq {rule} permit {prefix} le {rule}' self.assertIn(tmp, config) @@ -842,7 +842,7 @@ class TestPolicy(VyOSUnitTestSHIM.TestCase): self.assertIn(name, config) if 'set' in rule_config: - #Check community + # Check community if 'community' in rule_config['set']: if 'none' in rule_config['set']['community']: tmp = f'set community none' @@ -855,7 +855,7 @@ class TestPolicy(VyOSUnitTestSHIM.TestCase): values = ' '.join(rule_config['set']['community']['add']) tmp = f'set community {values} additive' self.assertIn(tmp, config) - #Check large-community + # Check large-community if 'large-community' in rule_config['set']: if 'none' in rule_config['set']['large-community']: tmp = f'set large-community none' @@ -868,7 +868,7 @@ class TestPolicy(VyOSUnitTestSHIM.TestCase): values = ' '.join(rule_config['set']['large-community']['add']) tmp = f'set large-community {values} additive' self.assertIn(tmp, config) - #Check extcommunity + # Check extcommunity if 'extcommunity' in rule_config['set']: if 'none' in rule_config['set']['extcommunity']: tmp = 'set extcommunity none' diff --git a/smoketest/scripts/cli/test_protocols_static.py b/smoketest/scripts/cli/test_protocols_static.py index 77a45e333..017618cbb 100755 --- a/smoketest/scripts/cli/test_protocols_static.py +++ b/smoketest/scripts/cli/test_protocols_static.py @@ -254,7 +254,7 @@ class TestProtocolsStatic(VyOSUnitTestSHIM.TestCase): self.cli_commit() # Verify FRR bgpd configuration - frrconfig = self.getFRRconfig('ip route') + frrconfig = self.getFRRconfig('ip route', end_marker='') # Verify routes for route, route_config in routes.items(): @@ -368,7 +368,7 @@ class TestProtocolsStatic(VyOSUnitTestSHIM.TestCase): self.cli_commit() # Verify FRR bgpd configuration - frrconfig = self.getFRRconfig('ip route') + frrconfig = self.getFRRconfig('ip route', end_marker='') for table in tables: # Verify routes @@ -558,7 +558,7 @@ class TestProtocolsStatic(VyOSUnitTestSHIM.TestCase): self.cli_commit() # Verify FRR configuration - frrconfig = self.getFRRconfig('ip mroute') + frrconfig = self.getFRRconfig('ip mroute', end_marker='') for route, route_config in multicast_routes.items(): if 'next_hop' in route_config: for next_hop, next_hop_config in route_config['next_hop'].items(): @@ -712,15 +712,12 @@ class TestProtocolsStatic(VyOSUnitTestSHIM.TestCase): self.assertIsNotNone(router, 'DHCP router should be available') # Verify FRR configuration contains the static routes with DHCP router - frrconfig = self.getFRRconfig('ip route') + frrconfig = self.getFRRconfig('ip route', end_marker='') for route in dhcp_routes.keys(): expected_route = f'ip route {route} {router} {dhcp_interface}' - self.assertIn( - expected_route, - frrconfig, - f'Static route {route} with dhcp-interface should be in FRR config', - ) + self.assertIn(expected_route, frrconfig, f'Static route {route} '\ + 'with dhcp-interface should be in FRR config') # Test table-based routes with dhcp-interface table_id = '100' @@ -730,7 +727,7 @@ class TestProtocolsStatic(VyOSUnitTestSHIM.TestCase): self.cli_commit() # Verify table route in FRR config - frrconfig = self.getFRRconfig('ip route') + frrconfig = self.getFRRconfig('ip route', end_marker='') expected_table_route = ( f'ip route {table_route} {router} {dhcp_interface} table {table_id}' ) diff --git a/smoketest/scripts/cli/test_system_ip.py b/smoketest/scripts/cli/test_system_ip.py index fadbdec47..3784d4630 100755 --- a/smoketest/scripts/cli/test_system_ip.py +++ b/smoketest/scripts/cli/test_system_ip.py @@ -86,14 +86,16 @@ class TestSystemIP(VyOSUnitTestSHIM.TestCase): protocols = ['any', 'babel', 'bgp', 'connected', 'eigrp', 'isis', 'kernel', 'ospf', 'rip', 'static', 'table'] + rule_num = '10' + for protocol in protocols: - self.cli_set(['policy', 'route-map', f'route-map-{protocol}', 'rule', '10', 'action', 'permit']) + self.cli_set(['policy', 'route-map', f'route-map-{protocol}', 'rule', rule_num, 'action', 'permit']) self.cli_set(base_path + ['protocol', protocol, 'route-map', f'route-map-{protocol}']) self.cli_commit() # Verify route-map properly applied to FRR - frrconfig = self.getFRRconfig('ip protocol', stop_section='^end') + frrconfig = self.getFRRconfig('ip protocol', end_marker='', stop_section='^end') for protocol in protocols: self.assertIn(f'ip protocol {protocol} route-map route-map-{protocol}', frrconfig) diff --git a/smoketest/scripts/cli/test_system_ipv6.py b/smoketest/scripts/cli/test_system_ipv6.py index edf479fa4..0f94765bd 100755 --- a/smoketest/scripts/cli/test_system_ipv6.py +++ b/smoketest/scripts/cli/test_system_ipv6.py @@ -109,7 +109,7 @@ class TestSystemIPv6(VyOSUnitTestSHIM.TestCase): self.cli_commit() # Verify route-map properly applied to FRR - frrconfig = self.getFRRconfig('ipv6 protocol', stop_section='^end') + frrconfig = self.getFRRconfig('ipv6 protocol', end_marker='', stop_section='^end') for protocol in protocols: # VyOS and FRR use a different name for OSPFv3 (IPv6) if protocol == 'ospfv3': |
