diff options
| author | kumvijaya <kuvmijaya@gmail.com> | 2024-09-26 11:31:07 +0530 | 
|---|---|---|
| committer | kumvijaya <kuvmijaya@gmail.com> | 2024-09-26 11:31:07 +0530 | 
| commit | a950059053f7394acfb453cc0d8194aa3dc721fa (patch) | |
| tree | eb0acf278f649b5d1417e18e34d728efcd16e745 /smoketest/scripts/system | |
| parent | f0815f3e9b212f424f5adb0c572a71119ad4a8a0 (diff) | |
| download | vyos-workflow-test-temp-a950059053f7394acfb453cc0d8194aa3dc721fa.tar.gz vyos-workflow-test-temp-a950059053f7394acfb453cc0d8194aa3dc721fa.zip | |
T6732: added same as vyos 1x
Diffstat (limited to 'smoketest/scripts/system')
| -rw-r--r-- | smoketest/scripts/system/test_config_mount.py | 26 | ||||
| -rw-r--r-- | smoketest/scripts/system/test_iproute2.py | 31 | ||||
| -rw-r--r-- | smoketest/scripts/system/test_kernel_options.py | 132 | ||||
| -rw-r--r-- | smoketest/scripts/system/test_module_load.py | 49 | 
4 files changed, 238 insertions, 0 deletions
| diff --git a/smoketest/scripts/system/test_config_mount.py b/smoketest/scripts/system/test_config_mount.py new file mode 100644 index 0000000..657158c --- /dev/null +++ b/smoketest/scripts/system/test_config_mount.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2021 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 os +import unittest + +class TestConfigDir(unittest.TestCase): +    def test_config_dir(self): +        self.assertTrue(os.path.isdir('/config')) + +if __name__ == '__main__': +    unittest.main(verbosity=2) + diff --git a/smoketest/scripts/system/test_iproute2.py b/smoketest/scripts/system/test_iproute2.py new file mode 100644 index 0000000..2d2fe19 --- /dev/null +++ b/smoketest/scripts/system/test_iproute2.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2021 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 os +import unittest + +class TestIproute2(unittest.TestCase): +    def test_ip_is_symlink(self): +        # For an unknown reason VyOS 1.3.0-rc2 did not have a symlink from +        # /usr/sbin/ip -> /bin/ip - verify this now and forever +        real_file = '/bin/ip' +        symlink = '/usr/sbin/ip' +        self.assertTrue(os.path.islink(symlink)) +        self.assertFalse(os.path.islink(real_file)) +        self.assertEqual(os.readlink(symlink), real_file) + +if __name__ == '__main__': +    unittest.main(verbosity=2) diff --git a/smoketest/scripts/system/test_kernel_options.py b/smoketest/scripts/system/test_kernel_options.py new file mode 100644 index 0000000..700e4ce --- /dev/null +++ b/smoketest/scripts/system/test_kernel_options.py @@ -0,0 +1,132 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2020-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 re +import os +import platform +import unittest + +from vyos.utils.kernel import check_kmod + +kernel = platform.release() +class TestKernelModules(unittest.TestCase): +    """ VyOS makes use of a lot of Kernel drivers, modules and features. The +    required modules which are essential for VyOS should be tested that they are +    available in the Kernel that is run. """ + +    _config_data = None + +    @classmethod +    def setUpClass(cls): +        import gzip +        from vyos.utils.process import call + +        super(TestKernelModules, cls).setUpClass() +        CONFIG = '/proc/config.gz' +        if not os.path.isfile(CONFIG): +            check_kmod('configs') + +        with gzip.open(CONFIG, 'rt') as f: +            cls._config_data = f.read() + +    def test_bond_interface(self): +        # The bond/lacp interface must be enabled in the OS Kernel +        for option in ['CONFIG_BONDING']: +            tmp = re.findall(f'{option}=(y|m)', self._config_data) +            self.assertTrue(tmp) + +    def test_bridge_interface(self): +        # The bridge interface must be enabled in the OS Kernel +        for option in ['CONFIG_BRIDGE', +                       'CONFIG_BRIDGE_IGMP_SNOOPING', +                       'CONFIG_BRIDGE_VLAN_FILTERING']: +            tmp = re.findall(f'{option}=(y|m)', self._config_data) +            self.assertTrue(tmp) + +    def test_dropmon_enabled(self): +        options_to_check = [ +            'CONFIG_NET_DROP_MONITOR=y', +            'CONFIG_UPROBE_EVENTS=y', +            'CONFIG_BPF_EVENTS=y', +            'CONFIG_TRACEPOINTS=y' +        ] + +        for option in options_to_check: +            self.assertIn(option, self._config_data) + +    def test_synproxy_enabled(self): +        options_to_check = [ +            'CONFIG_NFT_SYNPROXY', +            'CONFIG_IP_NF_TARGET_SYNPROXY' +        ] +        for option in options_to_check: +            tmp = re.findall(f'{option}=(y|m)', self._config_data) +            self.assertTrue(tmp) + +    def test_qemu_support(self): +        options_to_check = [ +            'CONFIG_VIRTIO_BLK', 'CONFIG_SCSI_VIRTIO', +            'CONFIG_VIRTIO_NET', 'CONFIG_VIRTIO_CONSOLE', +            'CONFIG_VIRTIO', 'CONFIG_VIRTIO_PCI', +            'CONFIG_VIRTIO_BALLOON', 'CONFIG_CRYPTO_DEV_VIRTIO', +            'CONFIG_X86_PLATFORM_DEVICES' +            ] +        for option in options_to_check: +            tmp = re.findall(f'{option}=(y|m)', self._config_data) +            self.assertTrue(tmp) + +    def test_vmware_support(self): +        for option in ['CONFIG_VMXNET3']: +            tmp = re.findall(f'{option}=(y|m)', self._config_data) +            self.assertTrue(tmp) + +    def test_container_cgroup_support(self): +        options_to_check = [ +            'CONFIG_CGROUPS', 'CONFIG_MEMCG', +            'CONFIG_CGROUP_PIDS', 'CONFIG_CGROUP_BPF' +            ] +        for option in options_to_check: +            tmp = re.findall(f'{option}=(y|m)', self._config_data) +            self.assertTrue(tmp) + +    def test_ip_routing_support(self): +        options_to_check = [ +            'CONFIG_IP_ADVANCED_ROUTER', 'CONFIG_IP_MULTIPLE_TABLES', +            'CONFIG_IP_ROUTE_MULTIPATH' +            ] +        for option in options_to_check: +            tmp = re.findall(f'{option}=(y|m)', self._config_data) +            self.assertTrue(tmp) + +    def test_vfio(self): +        options_to_check = [ +            'CONFIG_VFIO', 'CONFIG_VFIO_GROUP', 'CONFIG_VFIO_CONTAINER', +            'CONFIG_VFIO_IOMMU_TYPE1', 'CONFIG_VFIO_NOIOMMU', 'CONFIG_VFIO_VIRQFD' +            ] +        for option in options_to_check: +            tmp = re.findall(f'{option}=(y|m)', self._config_data) +            self.assertTrue(tmp) + +    def test_container_cpu(self): +        options_to_check = [ +            'CONFIG_CGROUP_SCHED', 'CONFIG_CPUSETS', 'CONFIG_CGROUP_CPUACCT', 'CONFIG_CFS_BANDWIDTH' +            ] +        for option in options_to_check: +            tmp = re.findall(f'{option}=(y|m)', self._config_data) +            self.assertTrue(tmp) + +if __name__ == '__main__': +    unittest.main(verbosity=2) diff --git a/smoketest/scripts/system/test_module_load.py b/smoketest/scripts/system/test_module_load.py new file mode 100644 index 0000000..fc60c72 --- /dev/null +++ b/smoketest/scripts/system/test_module_load.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2019-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 vyos.utils.process import cmd + +modules = { +    "intel": ["e1000", "e1000e", "igb", "ixgbe", "ixgbevf", "i40e", +              "i40evf", "iavf"], +    "intel_qat": ["qat_200xx", "qat_200xxvf", "qat_c3xxx", "qat_c3xxxvf", +                  "qat_c62x", "qat_c62xvf", "qat_d15xx", "qat_d15xxvf", +                  "qat_dh895xcc", "qat_dh895xccvf"], +    "accel_ppp": ["ipoe", "vlan_mon"], +    "openvpn": ["ovpn-dco-v2"] +} + +class TestKernelModules(unittest.TestCase): +    def test_load_modules(self): +        success = True +        not_found = [] +        for msk in modules: +            not_found = [] +            ms = modules[msk] +            for m in ms: +                # We want to uncover all modules that fail, +                # not fail at the first one +                try: +                    cmd(f'modprobe {m}') +                except: +                    success = False +                    not_found.append(m) + +            self.assertTrue(success, 'One or more modules not found: ' + ', '.join(not_found)) + +if __name__ == '__main__': +    unittest.main(verbosity=2) | 
