summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2020-07-17 22:06:45 +0200
committerChristian Poessinger <christian@poessinger.com>2020-07-17 22:06:56 +0200
commit511e5aac08e84864dd9c7c1f7992bdbc7d613d47 (patch)
treee24ab515e8982fb387304cdbabc9569ce9547703 /scripts
parentded73c194266ee0121b2c4c06dcd78fed0758f81 (diff)
downloadvyos-1x-511e5aac08e84864dd9c7c1f7992bdbc7d613d47.tar.gz
vyos-1x-511e5aac08e84864dd9c7c1f7992bdbc7d613d47.zip
bond: verify member interfaces are properly enslaved
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/cli/test_interfaces_bonding.py35
1 files changed, 19 insertions, 16 deletions
diff --git a/scripts/cli/test_interfaces_bonding.py b/scripts/cli/test_interfaces_bonding.py
index bfadc4a9d..b4251fa15 100755
--- a/scripts/cli/test_interfaces_bonding.py
+++ b/scripts/cli/test_interfaces_bonding.py
@@ -14,46 +14,49 @@
# 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
from base_interfaces_test import BasicInterfaceTest
from vyos.ifconfig import Section
from vyos.configsession import ConfigSessionError
+from vyos.util import read_file
class BondingInterfaceTest(BasicInterfaceTest.BaseTest):
def setUp(self):
super().setUp()
self._base_path = ['interfaces', 'bonding']
- self._test_mtu = True
self._interfaces = ['bond0']
+ self._test_mtu = True
+ self._test_vlan = True
+ self._test_qinq = True
- def test_add_remove_member(self):
+ def test_add_member(self):
members = []
# we need to filter out VLAN interfaces identified by a dot (.)
# in their name - just in case!
- for tmp in Section.interfaces("ethernet"):
- if not '.' in tmp:
- members.append(tmp)
-
- for intf in self._interfaces:
+ if 'TEST_ETH' in os.environ:
+ members = os.environ['TEST_ETH'].split()
+ else:
+ for tmp in Section.interfaces("ethernet"):
+ if not '.' in tmp:
+ members.append(tmp)
+
+ for interface in self._interfaces:
+ base = self._base_path + [interface]
for member in members:
# We can not enslave an interface when there is an address
# assigned - take care here - or find them dynamically if a user
# runs vyos-smoketest on his production device?
- self.session.set(self._base_path + [intf, 'member', 'interface', member])
+ self.session.set(base + ['member', 'interface', member])
self.session.commit()
- # check validate() - we can only add existing interfaces
- self.session.set(self._base_path + [intf, 'member', 'interface', 'eth99'])
- with self.assertRaises(ConfigSessionError):
- self.session.commit()
-
- # check if member deletion works as expected
- self.session.delete(self._base_path + [intf, 'member'])
- self.session.commit()
+ for interface in self._interfaces:
+ slaves = read_file(f'/sys/class/net/{interface}/bonding/slaves').split()
+ self.assertListEqual(slaves, members)
if __name__ == '__main__':
unittest.main()