summaryrefslogtreecommitdiff
path: root/scripts/cli/test_interfaces_bonding.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/cli/test_interfaces_bonding.py')
-rwxr-xr-xscripts/cli/test_interfaces_bonding.py56
1 files changed, 29 insertions, 27 deletions
diff --git a/scripts/cli/test_interfaces_bonding.py b/scripts/cli/test_interfaces_bonding.py
index bfadc4a9d..e3d3b25ee 100755
--- a/scripts/cli/test_interfaces_bonding.py
+++ b/scripts/cli/test_interfaces_bonding.py
@@ -14,46 +14,48 @@
# 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()
+ super().setUp()
- self._base_path = ['interfaces', 'bonding']
- self._test_mtu = True
- self._interfaces = ['bond0']
+ self._base_path = ['interfaces', 'bonding']
+ self._interfaces = ['bond0']
+ self._test_mtu = True
+ self._test_vlan = True
+ self._test_qinq = True
+ self._test_ipv6 = True
- def test_add_remove_member(self):
- members = []
+ 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:
- 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.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()
+ if 'TEST_ETH' in os.environ:
+ self._members = os.environ['TEST_ETH'].split()
+ else:
+ for tmp in Section.interfaces("ethernet"):
+ if not '.' in tmp:
+ self._members.append(tmp)
+
+ self._options['bond0'] = []
+ for member in self._members:
+ self._options['bond0'].append(f'member interface {member}')
+
+
+ def test_add_address_single(self):
+ """ derived method to check if member interfaces are enslaved properly """
+ super().test_add_address_single()
+
+ for interface in self._interfaces:
+ slaves = read_file(f'/sys/class/net/{interface}/bonding/slaves').split()
+ self.assertListEqual(slaves, self._members)
if __name__ == '__main__':
unittest.main()