diff options
author | sarthurdev <965089+sarthurdev@users.noreply.github.com> | 2023-09-06 11:08:10 +0200 |
---|---|---|
committer | sarthurdev <965089+sarthurdev@users.noreply.github.com> | 2023-09-07 22:11:13 +0200 |
commit | 56a6e53f78f1d91ab267cb858061450b7af905b3 (patch) | |
tree | c9601fa7e17c2e992e9e8ca4dc3544ca65c85905 /smoketest/bin/vyos-configtest | |
parent | 73ee99fac6c640a169f85723deefb0c2ece201ff (diff) | |
download | vyos-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-x | smoketest/bin/vyos-configtest | 23 |
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}) |