summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2025-11-07 16:41:14 +0100
committerChristian Breunig <christian@breunig.cc>2025-11-07 16:41:14 +0100
commit316b31e304db92d87e63321628be21f9f4cd1387 (patch)
tree6aed31cf9f7c58a7603069e69854b3e3dc146959
parentda679f0cf8fe048bae7d648a4f447db47032f3c0 (diff)
downloadvyos-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.
-rw-r--r--smoketest/scripts/cli/base_vyostest_shim.py6
-rwxr-xr-xsmoketest/scripts/cli/test_policy.py24
-rwxr-xr-xsmoketest/scripts/cli/test_protocols_static.py17
-rwxr-xr-xsmoketest/scripts/cli/test_system_ip.py6
-rwxr-xr-xsmoketest/scripts/cli/test_system_ipv6.py2
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':