diff options
Diffstat (limited to 'smoketest/scripts/cli')
-rwxr-xr-x | smoketest/scripts/cli/test_vrf.py | 47 |
1 files changed, 45 insertions, 2 deletions
diff --git a/smoketest/scripts/cli/test_vrf.py b/smoketest/scripts/cli/test_vrf.py index 7bcfea861..c0f610323 100755 --- a/smoketest/scripts/cli/test_vrf.py +++ b/smoketest/scripts/cli/test_vrf.py @@ -16,10 +16,13 @@ import os import unittest +from netifaces import interfaces -from vyos.configsession import ConfigSession, ConfigSessionError +from vyos.configsession import ConfigSession +from vyos.configsession import ConfigSessionError from vyos.util import read_file from vyos.validate import is_intf_addr_assigned +from vyos.ifconfig import Interface class VRFTest(unittest.TestCase): def setUp(self): @@ -36,9 +39,12 @@ class VRFTest(unittest.TestCase): table = 1000 for vrf in self._vrfs: base = ['vrf', 'name', vrf] - description = "VyOS-VRF-" + vrf + description = f'VyOS-VRF-{vrf}' self.session.set(base + ['description', description]) + if vrf == 'green': + self.session.set(base + ['disable']) + # check validate() - a table ID is mandatory with self.assertRaises(ConfigSessionError): self.session.commit() @@ -49,6 +55,19 @@ class VRFTest(unittest.TestCase): # commit changes self.session.commit() + # Verify VRF configuration + for vrf in self._vrfs: + description = f'VyOS-VRF-{vrf}' + self.assertTrue(vrf in interfaces()) + vrf_if = Interface(vrf) + # validate proper interface description + self.assertEqual(vrf_if.get_alias(), description) + # validate admin up/down state of VRF + state = 'up' + if vrf == 'green': + state = 'down' + self.assertEqual(vrf_if.get_admin_state(), state) + def test_vrf_loopback_ips(self): table = 1000 for vrf in self._vrfs: @@ -58,9 +77,33 @@ class VRFTest(unittest.TestCase): # commit changes self.session.commit() + + # Verify VRF configuration for vrf in self._vrfs: + self.assertTrue(vrf in interfaces()) self.assertTrue(is_intf_addr_assigned(vrf, '127.0.0.1')) self.assertTrue(is_intf_addr_assigned(vrf, '::1')) + def test_vrf_table_id_is_unalterable(self): + # Linux Kernel prohibits the change of a VRF table on the fly. + # VRF must be deleted and recreated! + table = 666 + vrf = self._vrfs[0] + base = ['vrf', 'name', vrf] + self.session.set(base + ['table', str(table)]) + + # commit changes + self.session.commit() + + # Check if VRF has been created + self.assertTrue(vrf in interfaces()) + + table += 1 + self.session.set(base + ['table', str(table)]) + # check validate() - table ID can not be altered! + with self.assertRaises(ConfigSessionError): + self.session.commit() + + if __name__ == '__main__': unittest.main(verbosity=2) |