diff options
| author | Christian Breunig <christian@breunig.cc> | 2023-09-05 19:37:04 +0200 | 
|---|---|---|
| committer | Christian Breunig <christian@breunig.cc> | 2023-09-05 19:37:04 +0200 | 
| commit | 5c2b49092ca1fc56cf198ca89630ec97fddd64b3 (patch) | |
| tree | 9bb8e159090f2145d02b185b9f836afb1ebc6e7c | |
| parent | 6c32e17a75199f9acf9e2c33b3480fc27257622d (diff) | |
| download | vyos-1x-5c2b49092ca1fc56cf198ca89630ec97fddd64b3.tar.gz vyos-1x-5c2b49092ca1fc56cf198ca89630ec97fddd64b3.zip | |
smoketest: T5241: re-work netns assertions and provide common utility helper
| -rw-r--r-- | python/vyos/utils/network.py | 8 | ||||
| -rwxr-xr-x | smoketest/scripts/cli/test_netns.py (renamed from smoketest/scripts/cli/test_interfaces_netns.py) | 52 | 
2 files changed, 35 insertions, 25 deletions
| diff --git a/python/vyos/utils/network.py b/python/vyos/utils/network.py index 4706dbfb7..abc382766 100644 --- a/python/vyos/utils/network.py +++ b/python/vyos/utils/network.py @@ -42,11 +42,17 @@ def interface_exists(interface) -> bool:  def is_netns_interface(interface, netns):      from vyos.utils.process import rc_cmd -    rc, out = rc_cmd(f'ip netns exec {netns} ip link show dev {interface}') +    rc, out = rc_cmd(f'sudo ip netns exec {netns} ip link show dev {interface}')      if rc == 0:          return True      return False +def get_netns_all() -> list: +    from json import loads +    from vyos.utils.process import cmd +    tmp = loads(cmd('ip --json netns ls')) +    return [ netns['name'] for netns in tmp ] +  def get_vrf_members(vrf: str) -> list:      """      Get list of interface VRF members diff --git a/smoketest/scripts/cli/test_interfaces_netns.py b/smoketest/scripts/cli/test_netns.py index b8bebb221..fd04dd520 100755 --- a/smoketest/scripts/cli/test_interfaces_netns.py +++ b/smoketest/scripts/cli/test_netns.py @@ -1,6 +1,6 @@  #!/usr/bin/env python3  # -# Copyright (C) 2021 VyOS maintainers and contributors +# Copyright (C) 2021-2023 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 @@ -16,7 +16,6 @@  import unittest -from netifaces import interfaces  from base_vyostest_shim import VyOSUnitTestSHIM  from vyos.configsession import ConfigSession @@ -24,56 +23,61 @@ from vyos.configsession import ConfigSessionError  from vyos.ifconfig import Interface  from vyos.ifconfig import Section  from vyos.utils.process import cmd +from vyos.utils.network import is_netns_interface +from vyos.utils.network import get_netns_all  base_path = ['netns'] -namespaces = ['mgmt', 'front', 'back', 'ams-ix'] +interfaces = ['dum10', 'dum12', 'dum50'] -class NETNSTest(VyOSUnitTestSHIM.TestCase): -    def setUp(self): -        self._interfaces = ['dum10', 'dum12', 'dum50'] +class NetNSTest(VyOSUnitTestSHIM.TestCase): +    def tearDown(self): +        self.cli_delete(base_path) +        # commit changes +        self.cli_commit() + +        # There should be no network namespace remaining +        tmp = cmd('ip netns ls') +        self.assertFalse(tmp) + +        super(NetNSTest, self).tearDown() -    def test_create_netns(self): +    def test_netns_create(self): +        namespaces = ['mgmt', 'front', 'back']          for netns in namespaces: -            base = base_path + ['name', netns] -            self.cli_set(base) +            self.cli_set(base_path + ['name', netns])          # commit changes          self.cli_commit() -        netns_list = cmd('ip netns ls') -          # Verify NETNS configuration          for netns in namespaces: -            self.assertTrue(netns in netns_list) - +            self.assertIn(netns, get_netns_all()) -    def test_netns_assign_interface(self): +    def test_netns_interface(self):          netns = 'foo' -        self.cli_set(['netns', 'name', netns]) +        self.cli_set(base_path + ['name', netns])          # Set -        for iface in self._interfaces: +        for iface in interfaces:              self.cli_set(['interfaces', 'dummy', iface, 'netns', netns])          # commit changes          self.cli_commit() -        netns_iface_list = cmd(f'sudo ip netns exec {netns} ip link show') - -        for iface in self._interfaces: -            self.assertTrue(iface in netns_iface_list) +        for interface in interfaces: +            self.assertTrue(is_netns_interface(interface, netns))          # Delete -        for iface in self._interfaces: -            self.cli_delete(['interfaces', 'dummy', iface, 'netns', netns]) +        for interface in interfaces: +            self.cli_delete(['interfaces', 'dummy', interface])          # commit changes          self.cli_commit()          netns_iface_list = cmd(f'sudo ip netns exec {netns} ip link show') -        for iface in self._interfaces: -            self.assertNotIn(iface, netns_iface_list) +        for interface in interfaces: +            self.assertFalse(is_netns_interface(interface, netns))  if __name__ == '__main__':      unittest.main(verbosity=2) | 
