summaryrefslogtreecommitdiff
path: root/smoketest/bin/vyos-configtest
diff options
context:
space:
mode:
authorsarthurdev <965089+sarthurdev@users.noreply.github.com>2023-09-06 11:08:10 +0200
committersarthurdev <965089+sarthurdev@users.noreply.github.com>2023-09-07 22:11:13 +0200
commit56a6e53f78f1d91ab267cb858061450b7af905b3 (patch)
treec9601fa7e17c2e992e9e8ca4dc3544ca65c85905 /smoketest/bin/vyos-configtest
parent73ee99fac6c640a169f85723deefb0c2ece201ff (diff)
downloadvyos-1x-56a6e53f78f1d91ab267cb858061450b7af905b3.tar.gz
vyos-1x-56a6e53f78f1d91ab267cb858061450b7af905b3.zip
smoketest: T5558: Extend configtest to allow checking of migration script results
Diffstat (limited to 'smoketest/bin/vyos-configtest')
-rwxr-xr-xsmoketest/bin/vyos-configtest23
1 files changed, 21 insertions, 2 deletions
diff --git a/smoketest/bin/vyos-configtest b/smoketest/bin/vyos-configtest
index 3e42b0380..c1b602737 100755
--- a/smoketest/bin/vyos-configtest
+++ b/smoketest/bin/vyos-configtest
@@ -24,6 +24,7 @@ from vyos.configsession import ConfigSession, ConfigSessionError
from vyos import ConfigError
config_dir = '/usr/libexec/vyos/tests/config'
+config_test_dir = '/usr/libexec/vyos/tests/config-tests'
save_config = '/tmp/vyos-configtest-save'
class DynamicClassBase(unittest.TestCase):
@@ -42,7 +43,7 @@ class DynamicClassBase(unittest.TestCase):
except OSError:
pass
-def make_test_function(filename):
+def make_test_function(filename, test_path=None):
def test_config_load(self):
config_path = os.path.join(config_dir, filename)
self.session.migrate_and_load_config(config_path)
@@ -51,6 +52,16 @@ def make_test_function(filename):
except (ConfigError, ConfigSessionError):
self.session.discard()
self.fail()
+
+ if test_path:
+ config_commands = self.session.show(['configuration', 'commands'])
+
+ with open(test_path, 'r') as f:
+ for line in f.readlines():
+ if not line or line.startswith("#"):
+ continue
+
+ self.assertIn(line, config_commands)
return test_config_load
def class_name_from_func_name(s):
@@ -69,10 +80,18 @@ if __name__ == '__main__':
config_list.sort()
for config in config_list:
- test_func = make_test_function(config)
+ test_path = os.path.join(config_test_dir, config)
+
+ if not os.path.exists(test_path):
+ test_path = None
+ else:
+ log.info(f'Loaded migration result test for config "{config}"')
+
+ test_func = make_test_function(config, test_path)
func_name = config.replace('-', '_')
klassname = f'TestConfig{class_name_from_func_name(func_name)}'
+
globals()[klassname] = type(klassname,
(DynamicClassBase,),
{f'test_{func_name}': test_func})