diff options
Diffstat (limited to 'smoketest')
-rwxr-xr-x | smoketest/scripts/cli/test_protocols_babel.py | 117 | ||||
-rwxr-xr-x | smoketest/scripts/cli/test_service_dns_dynamic.py | 1 | ||||
-rwxr-xr-x | smoketest/scripts/cli/test_service_monitoring_node-exporter.py | 64 | ||||
-rwxr-xr-x | smoketest/scripts/cli/test_service_monitoring_prometheus.py (renamed from smoketest/scripts/cli/test_service_monitoring_frr-exporter.py) | 38 |
4 files changed, 86 insertions, 134 deletions
diff --git a/smoketest/scripts/cli/test_protocols_babel.py b/smoketest/scripts/cli/test_protocols_babel.py index 107e262cc..12f6ecf38 100755 --- a/smoketest/scripts/cli/test_protocols_babel.py +++ b/smoketest/scripts/cli/test_protocols_babel.py @@ -50,54 +50,30 @@ class TestProtocolsBABEL(VyOSUnitTestSHIM.TestCase): # check process health and continuity self.assertEqual(self.daemon_pid, process_named_running(babel_daemon)) - def test_babel_interfaces(self): - def_update_interval = default_value(base_path + ['interface', 'eth0', 'update-interval']) - channel = '20' - hello_interval = '1000' - max_rtt_penalty = '100' - rtt_decay = '23' - rtt_max = '119' - rtt_min = '11' - rxcost = '40000' - type = 'wired' + def test_01_basic(self): + diversity_factor = '64' + resend_delay = '100' + smoothing_half_life = '400' - for interface in self._interfaces: - self.cli_set(base_path + ['interface', interface]) - self.cli_set(base_path + ['interface', interface, 'channel', channel]) - self.cli_set(base_path + ['interface', interface, 'enable-timestamps']) - self.cli_set(base_path + ['interface', interface, 'hello-interval', hello_interval]) - self.cli_set(base_path + ['interface', interface, 'max-rtt-penalty', max_rtt_penalty]) - self.cli_set(base_path + ['interface', interface, 'rtt-decay', rtt_decay]) - self.cli_set(base_path + ['interface', interface, 'rtt-max', rtt_max]) - self.cli_set(base_path + ['interface', interface, 'rtt-min', rtt_min]) - self.cli_set(base_path + ['interface', interface, 'enable-timestamps']) - self.cli_set(base_path + ['interface', interface, 'rxcost', rxcost]) - self.cli_set(base_path + ['interface', interface, 'split-horizon', 'disable']) - self.cli_set(base_path + ['interface', interface, 'type', type]) + self.cli_set(base_path + ['parameters', 'diversity']) + self.cli_set(base_path + ['parameters', 'diversity-factor', diversity_factor]) + self.cli_set(base_path + ['parameters', 'resend-delay', resend_delay]) + self.cli_set(base_path + ['parameters', 'smoothing-half-life', smoothing_half_life]) self.cli_commit() frrconfig = self.getFRRconfig('router babel', endsection='^exit', daemon=babel_daemon) - for interface in self._interfaces: - self.assertIn(f' network {interface}', frrconfig) - - iface_config = self.getFRRconfig(f'interface {interface}', endsection='^exit', daemon=babel_daemon) - self.assertIn(f' babel channel {channel}', iface_config) - self.assertIn(f' babel enable-timestamps', iface_config) - self.assertIn(f' babel update-interval {def_update_interval}', iface_config) - self.assertIn(f' babel hello-interval {hello_interval}', iface_config) - self.assertIn(f' babel rtt-decay {rtt_decay}', iface_config) - self.assertIn(f' babel rtt-max {rtt_max}', iface_config) - self.assertIn(f' babel rtt-min {rtt_min}', iface_config) - self.assertIn(f' babel rxcost {rxcost}', iface_config) - self.assertIn(f' babel max-rtt-penalty {max_rtt_penalty}', iface_config) - self.assertIn(f' no babel split-horizon', iface_config) - self.assertIn(f' babel {type}', iface_config) + self.assertIn(f' babel diversity', frrconfig) + self.assertIn(f' babel diversity-factor {diversity_factor}', frrconfig) + self.assertIn(f' babel resend-delay {resend_delay}', frrconfig) + self.assertIn(f' babel smoothing-half-life {smoothing_half_life}', frrconfig) - def test_babel_redistribute(self): + def test_02_redistribute(self): ipv4_protos = ['bgp', 'connected', 'isis', 'kernel', 'ospf', 'rip', 'static'] ipv6_protos = ['bgp', 'connected', 'isis', 'kernel', 'ospfv3', 'ripng', 'static'] + self.cli_set(base_path + ['interface', self._interfaces[0], 'enable-timestamps']) + for protocol in ipv4_protos: self.cli_set(base_path + ['redistribute', 'ipv4', protocol]) for protocol in ipv6_protos: @@ -113,25 +89,7 @@ class TestProtocolsBABEL(VyOSUnitTestSHIM.TestCase): protocol = 'ospf6' self.assertIn(f' redistribute ipv6 {protocol}', frrconfig) - def test_babel_basic(self): - diversity_factor = '64' - resend_delay = '100' - smoothing_half_life = '400' - - self.cli_set(base_path + ['parameters', 'diversity']) - self.cli_set(base_path + ['parameters', 'diversity-factor', diversity_factor]) - self.cli_set(base_path + ['parameters', 'resend-delay', resend_delay]) - self.cli_set(base_path + ['parameters', 'smoothing-half-life', smoothing_half_life]) - - self.cli_commit() - - frrconfig = self.getFRRconfig('router babel', endsection='^exit', daemon=babel_daemon) - self.assertIn(f' babel diversity', frrconfig) - self.assertIn(f' babel diversity-factor {diversity_factor}', frrconfig) - self.assertIn(f' babel resend-delay {resend_delay}', frrconfig) - self.assertIn(f' babel smoothing-half-life {smoothing_half_life}', frrconfig) - - def test_babel_distribute_list(self): + def test_03_distribute_list(self): access_list_in4 = '40' access_list_out4 = '50' access_list_in4_iface = '44' @@ -214,5 +172,48 @@ class TestProtocolsBABEL(VyOSUnitTestSHIM.TestCase): self.assertIn(f' ipv6 distribute-list prefix {prefix_list_in6}-{interface} in {interface}', frrconfig) self.assertIn(f' ipv6 distribute-list prefix {prefix_list_out6}-{interface} out {interface}', frrconfig) + def test_04_interfaces(self): + def_update_interval = default_value(base_path + ['interface', 'eth0', 'update-interval']) + channel = '20' + hello_interval = '1000' + max_rtt_penalty = '100' + rtt_decay = '23' + rtt_max = '119' + rtt_min = '11' + rxcost = '40000' + type = 'wired' + + for interface in self._interfaces: + self.cli_set(base_path + ['interface', interface]) + self.cli_set(base_path + ['interface', interface, 'channel', channel]) + self.cli_set(base_path + ['interface', interface, 'enable-timestamps']) + self.cli_set(base_path + ['interface', interface, 'hello-interval', hello_interval]) + self.cli_set(base_path + ['interface', interface, 'max-rtt-penalty', max_rtt_penalty]) + self.cli_set(base_path + ['interface', interface, 'rtt-decay', rtt_decay]) + self.cli_set(base_path + ['interface', interface, 'rtt-max', rtt_max]) + self.cli_set(base_path + ['interface', interface, 'rtt-min', rtt_min]) + self.cli_set(base_path + ['interface', interface, 'rxcost', rxcost]) + self.cli_set(base_path + ['interface', interface, 'split-horizon', 'disable']) + self.cli_set(base_path + ['interface', interface, 'type', type]) + + self.cli_commit() + + frrconfig = self.getFRRconfig('router babel', endsection='^exit', daemon=babel_daemon) + for interface in self._interfaces: + self.assertIn(f' network {interface}', frrconfig) + + iface_config = self.getFRRconfig(f'interface {interface}', endsection='^exit', daemon=babel_daemon) + self.assertIn(f' babel channel {channel}', iface_config) + self.assertIn(f' babel enable-timestamps', iface_config) + self.assertIn(f' babel update-interval {def_update_interval}', iface_config) + self.assertIn(f' babel hello-interval {hello_interval}', iface_config) + self.assertIn(f' babel rtt-decay {rtt_decay}', iface_config) + self.assertIn(f' babel rtt-max {rtt_max}', iface_config) + self.assertIn(f' babel rtt-min {rtt_min}', iface_config) + self.assertIn(f' babel rxcost {rxcost}', iface_config) + self.assertIn(f' babel max-rtt-penalty {max_rtt_penalty}', iface_config) + self.assertIn(f' no babel split-horizon', iface_config) + self.assertIn(f' babel {type}', iface_config) + if __name__ == '__main__': unittest.main(verbosity=2) diff --git a/smoketest/scripts/cli/test_service_dns_dynamic.py b/smoketest/scripts/cli/test_service_dns_dynamic.py index 3e14976fc..3ce459e44 100755 --- a/smoketest/scripts/cli/test_service_dns_dynamic.py +++ b/smoketest/scripts/cli/test_service_dns_dynamic.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -import os import unittest import tempfile diff --git a/smoketest/scripts/cli/test_service_monitoring_node-exporter.py b/smoketest/scripts/cli/test_service_monitoring_node-exporter.py deleted file mode 100755 index e18a3f7a2..000000000 --- a/smoketest/scripts/cli/test_service_monitoring_node-exporter.py +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright (C) 2024 VyOS maintainers and contributors -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2 or later as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -import unittest - -from base_vyostest_shim import VyOSUnitTestSHIM -from vyos.utils.process import process_named_running -from vyos.utils.file import read_file - -PROCESS_NAME = 'node_exporter' -base_path = ['service', 'monitoring', 'node-exporter'] -service_file = '/etc/systemd/system/node_exporter.service' -listen_if = 'dum3421' -listen_ip = '192.0.2.1' - - -class TestMonitoringNodeExporter(VyOSUnitTestSHIM.TestCase): - @classmethod - def setUpClass(cls): - # call base-classes classmethod - super(TestMonitoringNodeExporter, cls).setUpClass() - # create a test interfaces - cls.cli_set( - cls, ['interfaces', 'dummy', listen_if, 'address', listen_ip + '/32'] - ) - - @classmethod - def tearDownClass(cls): - cls.cli_delete(cls, ['interfaces', 'dummy', listen_if]) - super(TestMonitoringNodeExporter, cls).tearDownClass() - - def tearDown(self): - self.cli_delete(base_path) - self.cli_commit() - self.assertFalse(process_named_running(PROCESS_NAME)) - - def test_01_basic_config(self): - self.cli_set(base_path + ['listen-address', listen_ip]) - - # commit changes - self.cli_commit() - - file_content = read_file(service_file) - self.assertIn(f'{listen_ip}:9100', file_content) - - # Check for running process - self.assertTrue(process_named_running(PROCESS_NAME)) - - -if __name__ == '__main__': - unittest.main(verbosity=2) diff --git a/smoketest/scripts/cli/test_service_monitoring_frr-exporter.py b/smoketest/scripts/cli/test_service_monitoring_prometheus.py index 230171c11..dae103e4b 100755 --- a/smoketest/scripts/cli/test_service_monitoring_frr-exporter.py +++ b/smoketest/scripts/cli/test_service_monitoring_prometheus.py @@ -20,18 +20,21 @@ from base_vyostest_shim import VyOSUnitTestSHIM from vyos.utils.process import process_named_running from vyos.utils.file import read_file -PROCESS_NAME = 'frr_exporter' -base_path = ['service', 'monitoring', 'frr-exporter'] -service_file = '/etc/systemd/system/frr_exporter.service' +NODE_EXPORTER_PROCESS_NAME = 'node_exporter' +FRR_EXPORTER_PROCESS_NAME = 'frr_exporter' + +base_path = ['service', 'monitoring', 'prometheus'] listen_if = 'dum3421' listen_ip = '192.0.2.1' +node_exporter_service_file = '/etc/systemd/system/node_exporter.service' +frr_exporter_service_file = '/etc/systemd/system/frr_exporter.service' -class TestMonitoringFrrExporter(VyOSUnitTestSHIM.TestCase): +class TestMonitoringPrometheus(VyOSUnitTestSHIM.TestCase): @classmethod def setUpClass(cls): # call base-classes classmethod - super(TestMonitoringFrrExporter, cls).setUpClass() + super(TestMonitoringPrometheus, cls).setUpClass() # create a test interfaces cls.cli_set( cls, ['interfaces', 'dummy', listen_if, 'address', listen_ip + '/32'] @@ -40,24 +43,37 @@ class TestMonitoringFrrExporter(VyOSUnitTestSHIM.TestCase): @classmethod def tearDownClass(cls): cls.cli_delete(cls, ['interfaces', 'dummy', listen_if]) - super(TestMonitoringFrrExporter, cls).tearDownClass() + super(TestMonitoringPrometheus, cls).tearDownClass() def tearDown(self): self.cli_delete(base_path) self.cli_commit() - self.assertFalse(process_named_running(PROCESS_NAME)) + self.assertFalse(process_named_running(NODE_EXPORTER_PROCESS_NAME)) + self.assertFalse(process_named_running(FRR_EXPORTER_PROCESS_NAME)) + + def test_01_node_exporter(self): + self.cli_set(base_path + ['node-exporter', 'listen-address', listen_ip]) + + # commit changes + self.cli_commit() + + file_content = read_file(node_exporter_service_file) + self.assertIn(f'{listen_ip}:9100', file_content) + + # Check for running process + self.assertTrue(process_named_running(NODE_EXPORTER_PROCESS_NAME)) - def test_01_basic_config(self): - self.cli_set(base_path + ['listen-address', listen_ip]) + def test_02_frr_exporter(self): + self.cli_set(base_path + ['frr-exporter', 'listen-address', listen_ip]) # commit changes self.cli_commit() - file_content = read_file(service_file) + file_content = read_file(frr_exporter_service_file) self.assertIn(f'{listen_ip}:9342', file_content) # Check for running process - self.assertTrue(process_named_running(PROCESS_NAME)) + self.assertTrue(process_named_running(FRR_EXPORTER_PROCESS_NAME)) if __name__ == '__main__': |